diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 069192c2..00000000 --- a/.eslintignore +++ /dev/null @@ -1,6 +0,0 @@ -.eslintignore -**.min.js -.eslintrc.js -/build/** -bundle.js -acid.js \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 85ff2eb4..9639a002 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,11 @@ --- -### [v3.0.64](https://github.com/universalweb/Acid/compare/v3.0.64...v3.0.64) +### [v3.0.65](https://github.com/universalweb/Acid/compare/v3.0.65...v3.0.65) +DATE: 2023-12-05 + +--- +### [v3.0.65](https://github.com/universalweb/Acid/compare/v3.0.64...v3.0.65) DATE: 2023-12-05 --- diff --git a/build/basic.js b/build/basic.js index 5c60b6b5..94a02001 100644 --- a/build/basic.js +++ b/build/basic.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function r(t){return void 0===t}function e(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!r(t)&&!o(t)}function c(t){return t}function u(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const a=n.call(e,t,c,r,u,s,o);i(a)&&r.push(a)})):u(t,((t,c,u,s)=>{const a=n(t,c,r,u,s,e,o);i(a)&&r.push(a)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const c=await n(t,e,r,o);i(c)&&r.push(c)})),r}const{sign:l}=Math;function h(t){return-1===l(t)}function p(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function y(t,n){return t.forEach(n),t}const d=Array.isArray;function m(t){return d(t)&&t||i(t)&&[t]||[]}function A(t){return t.flat(1/0)}const b=Reflect.construct;function w(t,n=[],r){const e=d(n)?n:[n];return r?b(t,e,r):b(t,e)}function v(...t){const n=w(Map),r=[];return u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function C(t,n=1,r=t.length){return t.splice(n,r)}function O(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function I(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function j(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function M(t,n,r=[],e){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const S=Object.keys;function R(t){if(t)return S(t)}const x=/\.|\[/,B=/]/g,N="";function T(t){return t.replace(B,N).split(x)}function U(t,n){if(!n)return!1;let r=n;return j(d(t)?t:T(t),(t=>(r=r[t],i(r)))),r}const P=Object.hasOwn;function k(t,...n){if(t)return j(n,(n=>{const r=T(n);if(1===r.length)return P(t,n);{const n=r.pop(),e=U(r,t);return!!e&&P(e,n)}}))}const $=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function D(t,n){return t?.constructor===n||!1}function L(t){return n=>D(n,t)}function q(t){return t?.constructor?.name}function V(t){return n=>q(n)===t||!1}function K(t){return function(n,...r){return r?t(n)&&j(r,t):t(n)}}const Z=V("Buffer"),_=K(Z),z=(t,n)=>{if(t===n)return!0;if(_(t))return t.equals(n);if(t.toString()===n.toString())if($(t)){const r=R(t);if(k(n,r))return j(r,(r=>z(t[r],n[r])))}else if(d(t)&&t.length===n.length)return j(t,((t,r)=>z(t,n[r])));return!1};const W=Math.max;function G(t,n,r=[],e,o){return i(e)?u(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):u(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function J(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function H(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function rt(t,n,r){if(i(t))return nt(t,n,r)}function et(t,n=t.length){if(t.length<=1)return rt(t);const r=rt(t);let e,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",r){return t.sort(((t,e)=>ft(t,e,n,r)))}function ht(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function pt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}const yt=V("Number"),dt=K(yt);const mt=L(String);function At(t,n){if(t)return mt(n)?t[n]:G(n,(n=>t[n]))}function bt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),Ot=wt(/\.js$/),It=wt(/\.json$/);const jt=Object.assign;function Ft(t,...n){if(i(t))return jt(t,...n)}const Et=async(t,n,r,e)=>{if(!t)return;const o=R(t);return i(r)?await a(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await a(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function Mt(t,n,r,e){if(!t)return;const o=R(t);return i(r)?u(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):u(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const St=V("Set"),Rt=K(St);function xt(t,n){if(Rt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Bt=V("GeneratorFunction"),Nt=K(Bt);async function Tt(t,n,r){if(Rt(t)){for(const r of t)await n(r,t);return t}if(Nt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const Ut=t=>!!i(t)&&t instanceof Function,Pt=V("AsyncFunction"),kt=K(Pt);function $t(t,n,r,e,o,c){return(u,s,a,f,l)=>{let h;const p=kt(s);if(i(u)&&s)return h=d(u)?p?n:t:$(u)||Ut(u)?p?e:r:o?p?c:o:Nt(u)?c:p?e:r,h(u,s,a,f,l)}}const Dt=$t(u,a,Mt,Et,xt,Tt);class Lt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Dt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,Vt=!1,Kt=()=>{};function Zt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const zt=w(_t);function Wt(t,n){return zt.set(t,n)}const Gt=Reflect.apply;function Jt(t,n,r){if(Ut(t))return Gt(t,n,r)}async function Ht(t,n,r={}){if(t)return await Et(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function Qt(t,n,r={},e,o){if(t)return i(e)?Mt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):Mt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function Xt(t){return t?.constructor}function Yt(t,n=[]){const r=Xt(t);return r===Function&&"function"===r.name?function(){}:w(r,n)}function tn(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Ut(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function nn(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const rn=$t(G,J,Qt,Ht,tn,nn);async function en(t,n){if(!t)return;return F(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function on(t,n){if(!t)return;return j(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function cn(t,n=c){if(d(t)||Rt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function un(t,n=c,r){if(Nt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(d(t)||Rt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const sn=$t(j,F,on,en,cn,un);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,pn=Object.defineProperty,gn=fn(Object.hasOwnProperty),yn=Object.is;const{random:dn}=Math;const{sign:mn}=Math;const An=Object.entries;async function bn(t,n=c,r={}){return await Et(t,(async(t,e,o,c,u)=>{const s=await n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function wn(t,n=c,r={}){return Mt(t,((t,e,o,c,u)=>{const s=n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function vn(t,n,r={}){return Mt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Cn(t,n,r={}){return await Et(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const On=V("RegExp"),In=K(On),jn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(jn,"\\$&")}function En(t,n){return n?En(G(t,Fn)):RegExp(t.join("|"))}function Mn(t){if(t)return R(t).length}const Sn=/[ _-]+/g;const Rn=/[ _-]+/g,xn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Tn=/[ _-]+/g;const Un=/[ _-]+/g;function Pn(t,n=1){return t.substring(n)}const kn=/%(?![\da-f]{2})/gi,$n=/&/g,Dn=//g,qn=/"/g;function Vn(t){return decodeURIComponent(t.replace(kn,(()=>"%25")))}function Kn(t){return t.replace($n,"&").replace(Dn,"<").replace(Ln,">").replace(qn,""")}const Zn=/\S+/g,_n=/\w+/g;const zn=/\w+/g;function Wn(t){return t[0].toUpperCase()}function Gn(t){return Wn(t)+Pn(t)}function Jn(t){return Wn(t)+Pn(t).toLowerCase()}function Hn(t){return Xt(t)?.name}function Qn(t){return!i(t)}const Xn=V("Map"),Yn=K(Xn),tr=/Array/,nr="Array";function rr(t){if(t){const n=Hn(t);if(tr.test(n)&&n!==nr)return!0}return!1}const er=V("BigInt"),or=K(er),ir=V("Boolean"),cr=K(ir),ur=V("ArrayBuffer"),sr=K(ur);const ar=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const fr=V("Date"),lr=K(fr);function hr(t){return!1===t}const pr=V("Float32Array"),gr=K(pr),yr=V("Float64Array"),dr=K(yr),{isInteger:mr}=Number,Ar=mr,br=V("Int16Array"),wr=K(br),vr=V("Int32Array"),Cr=K(vr),Or=V("Int8Array"),Ir=K(Or);function jr(t){return!!t&&t instanceof Promise}function Fr(t){return!!t&&(jr(t)||kt(t)||Nt(t))}const{isSafeInteger:Er}=Number,Mr=Er;const Sr=V("Uint16Array"),Rr=K(Sr),xr=V("Uint32Array"),Br=K(xr),Nr=V("Uint8Array"),Tr=K(Nr),Ur=V("Uint8ClampedArray"),Pr=K(Ur),kr=V("WeakMap"),$r=K(kr),Dr=void 0!==globalThis.Deno,Lr=void 0!==globalThis.process&&process.versions&&process.versions.node;function qr(t,n=!0){return Boolean(t)&&n}function Vr(t,n){return hr(z(t,n))}const Kr=JSON;const Zr=Kr.stringify;function _r(t,n,r){const e=globalThis.options||r;let o;return Ut(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Zr(t)}\n\t\tExpected: ${Zr(n)}`,e)}async function zr(t,n,r){const e=await t;return!(Ut(n)&&!1===await n(e,r))&&!Vr(e,n)||_r(e,n,r)}const Wr=globalThis.structuredClone;async function Gr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);i(e)&&r.push(e)}return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);i(c)&&e(c)}return o}const u=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i(c)&&(u?o.set(r,c):o[r]=c)}return o}function Jr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);i(c)&&o(c)}return e}const o=Ut(e.set);for(const[r,c]of t){const u=n(c,r,e,t);i(u)&&(o?e.set(r,u):e[r]=u)}return e}const Hr=$t(s,f,wn,bn,Jr,Gr);function Qr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Ut(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function Xr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Ut(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const Yr=$t(E,M,vn,Cn,Qr,Xr);function te(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const ne=te(u),re=te(O);function ee(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const oe=ee(a),ie=ee(I);const ce=wt(/\./);class ue{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const se=w(ue);class ae{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,ae.models.set(t,n)):Ft(this,t)}}class fe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Mt(t,(n=>{t[n]=new fe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new fe(r),!0)})}}class le{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const he=w(le);class pe{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Lt,t.Intervals=ue,t.Model=ae,t.Store=fe,t.Timers=_t,t.UniqID=le,t.VirtualStorage=pe,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Jt,t.arrayToRegex=En,t.arraysToObject=function(t,n){const r={};return u(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Fr(t)||Fr(n)?zr(t,n,r):!(Ut(n)&&!1===n(t,r))&&!Vr(t,n)||_r(t,n,r)},t.assertAsync=zr,t.assign=Ft,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=rn(t,(t=>Ut(t)?t.bind(n):t));return r?Ft(r,e):e},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Sn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Lt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(_(t))return st(t);if(d(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=st,t.clearIntervals=function(){Zt(setTimeout(Kt,0),(t=>{se.remove(t)}))},t.clearTimers=function(){Zt(setTimeout(Kt,0),(t=>{zt.remove(t)}))},t.clone=function(t){return Wr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.compact=function(t){if($(t)){const n=R(t),r=n.length,e={};for(let o=0;oqr(t)))},t.compactKeys=function(t){const n=[];return Mt(t,((t,r)=>{i(t)&&n.push(r)})),n},t.compactMap=Hr,t.compactMapArray=s,t.compactMapAsyncArray=f,t.compactMapAsyncObject=bn,t.compactMapObject=wn,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return u(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return u(t,(t=>{t[n]||r++})),r},t.curry=function(t,r=t.length){const e=[],o=(...i)=>{if(e.push(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.curryRight=function(t,r=t.length){const e=[],o=(...i)=>{if(e.unshift(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.debounce=function(t,n){function r(...t){r.id!==Vt&&zt.remove(r.id),r.id=Wt((()=>{r.callable(...t),r.id=Vt}),n)}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{r.id!==Vt&&(zt.remove(r.id),r.id=Vt)},r},t.deduct=function(t){return t-1},t.defProp=pn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,r=t.length)=>C(t,0,r-n),t.each=Dt,t.eachArray=u,t.eachAsyncArray=a,t.eachAsyncObject=Et,t.eachObject=Mt,t.eachRight=O,t.eachRightAsync=I,t.ensureArray=m,t.ensureBuffer=function(t){return _(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=jn,t.every=sn,t.everyArg=function(...t){return kt(t[0])?async function(...n){return sn(t,(async t=>sn(n,(async n=>t(n)))))}:function(...n){return sn(t,(t=>sn(n,(n=>t(n)))))}},t.everyArray=j,t.everyAsyncArray=F,t.everyAsyncObject=en,t.everyObject=on,t.falsy=Vt,t.filter=Yr,t.filterArray=E,t.filterAsyncArray=M,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=at,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(m(n))),[]);return r},t.flattenDeep=A,t.flow=ne,t.flowAsync=oe,t.flowAsyncRight=ie,t.flowRight=re,t.forEach=y,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else Ut(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=xt,t.forOfAsync=Tt,t.forOfCompactMap=Jr,t.forOfCompactMapAsync=Gr,t.forOfEvery=cn,t.forOfEveryAsync=un,t.forOfFilter=Qr,t.forOfFilterAsync=Xr,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=$t,t.get=U,t.getEntries=function(t){if(i(t))return An(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return gt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return j(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Hn,t.groupBy=function(t,n){const r={};return u(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(Qn(n)||Qn(r))return!1;if(mt(n))return mt(r)?n.includes(r,e):In(r)?r.test(n):Ut(r)?Boolean(r(n)):sn(r,(r=>Boolean(t(n,r))));if(d(n)){if(mt(r))return n.includes(r,e);if(In(r))return sn(n,(t=>t.test(r)));if(d(r))return sn(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=T(n);if(1===r.length)return P(t,n);{const n=r.pop(),e=U(r,t);return!!e&&P(e,n)}})))},t.hasDot=ce,t.hasKeys=k,t.hasLength=e,t.hasProp=gn,t.hasValue=i,t.htmlEntities=Kn,t.ifInvoke=function(t,...n){if(Ut(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!i(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(i(t)){if(Ut(n))return r?Jt(n,r,e):n(...e);if($(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eDt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return u(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return s(t,(t=>{if(j(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return se.set(t,n)},t.intervals=se,t.invert=function(t,n={}){if(t)return Mt(t,((t,r)=>{n[t]=r})),n},t.invoke=function(t,n,r){return G(t,((t,e)=>t[n](r,e)))},t.invokeAsync=function(t,n,r){return J(t,(async(t,e)=>t[n](r,e)))},t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=d,t.isArrayBuffer=sr,t.isArrayBufferCall=ur,t.isArrayLike=function(t,n){if(Qn(t)||Ut(t))return!1;if(d(t)||rr(t))return!0;const r=t.length;if(!Qn(r)||!dt(r)||r<0)return!1;if(n){const n=R(t);return!!n&&sn(n,((t,n)=>n>=0&&dt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=Pt,t.isBigInt=or,t.isBigIntCall=er,t.isBoolean=cr,t.isBooleanCall=ir,t.isBuffer=_,t.isBufferCall=Z,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return ar.test(n)}return!1},t.isConstructor=D,t.isConstructorFactory=L,t.isConstructorNameFactory=V,t.isDate=lr,t.isDateCall=fr,t.isDeno=Dr,t.isEmpty=function(t){return mt(t)||d(t)?!e(t):$(t)?!Mn(t):!i(t)},t.isEqual=z,t.isF32=gr,t.isF32Call=pr,t.isF64=dr,t.isF64Call=yr,t.isFalse=hr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=Ot,t.isFileJSON=It,t.isFloat=Ar,t.isFunction=Ut,t.isGenerator=Nt,t.isGeneratorCall=Bt,t.isI16=wr,t.isI16Call=br,t.isI32=Cr,t.isI32Call=vr,t.isI8=Ir,t.isI8Call=Or,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Fr,t.isMap=Yn,t.isMapCall=Xn,t.isMatchArray=function(t,n){return t.length===n.length&&j(t,((t,r)=>z(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=R(t),e=R(n);return r.length===e.length&&j(r,(r=>t[r]===n[r]))},t.isNegative=h,t.isNodejs=Lr,t.isNotArray=function(t){return!d(t)},t.isNotNumber=function(t){return!dt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=dt,t.isNumberCall=yt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=$,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=jr,t.isRegex=In,t.isRegexCall=On,t.isRelated=function(t,n){return!Qn(t)&&!Qn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=Mr,t.isSame=yn,t.isSameType=function(t,n){const r=Xt(t),e=Xt(n);return r===e&&r.name===e.name},t.isSet=Rt,t.isSetCall=St,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=qr,t.isTypeFactory=K,t.isTypedArray=rr,t.isU16=Rr,t.isU16Call=Sr,t.isU32=Br,t.isU32Call=xr,t.isU8=Tr,t.isU8C=Pr,t.isU8CCall=Ur,t.isU8Call=Nr,t.isUndefined=r,t.isWeakMap=$r,t.isWeakMapCall=kr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return Kr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Rn," ").trim().toLowerCase().replace(xn,"-")},t.keys=R,t.largest=function(t){return W(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Un," ").trim().toLowerCase()},t.map=rn,t.mapArray=G,t.mapAsyncArray=J,t.mapAsyncObject=Ht,t.mapObject=Qt,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{Dt(r,((r,e)=>{if(n[e]&&($(r)||d(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return i(n)?w(ae,[t,n]):U(t,ae.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Qn,t.noop=Kt,t.notEqual=Vr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=jt,t.objectEntries=An,t.objectSize=Mn,t.omit=function(t,n){if(t){if(d(n)){const r=En(n);return vn(t,((t,n)=>!r.test(n)))}if(In(n))return vn(t,((t,r)=>!n.test(r)));if(mt(n))return vn(t,((t,r)=>r!==n));if(dt(n)){const r=n.toString();return vn(t,((t,n)=>n!==r))}return Ut(n)?vn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(i(n)||(n=t(...r)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>rn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>sn(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[s(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return u(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return G(t,(t=>At(t,n)))},t.pluckObject=At,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=R(t))=>j(r,(r=>z(t[r],n[r]))),t.randomFloat=function(t,n=0){return dn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,r=1,e=[]){return h(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return et(t);if(1===n)return[t[tt(r-1,0)]];const e=[],o={};let i,c=0;for(;cht(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>bt(t,e,n,r)))},t.sortCollectionAscending=gt,t.sortCollectionAscendingFilter=pt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(H)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=bt,t.sortUnique=ct,t.stringify=Zr,t.stubArray=()=>[],t.stubFalse=()=>Vt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=H,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=qt:(r.callable(...t),r.id=Wt((()=>{r.shouldThrottle&&r.callable(...t),r.id=Vt}),n))}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{zt.remove(r.id),r.id=Vt},r},t.timer=Wt,t.timers=zt,t.times=Zt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return Mt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ut(A(t))},t.uniqID=he,t.unique=ut,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eGn(t)))},t.upperFirstLetter=Wn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(zn,(t=>Jn(t)))},t.virtualStorage=function(t){return new pe(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(_n)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=w(Map),r=[];return 2===t.length?v(t[0],t[1]):(u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return u(t,((t,e)=>{r[t]=n[e]})),r}})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function r(t){return void 0===t}function e(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!r(t)&&!o(t)}function c(t){return t}function u(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const a=n.call(e,t,c,r,u,s,o);i(a)&&r.push(a)})):u(t,((t,c,u,s)=>{const a=n(t,c,r,u,s,e,o);i(a)&&r.push(a)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const c=await n(t,e,r,o);i(c)&&r.push(c)})),r}const{sign:l}=Math;function h(t){return-1===l(t)}function p(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function y(t,n){return t.forEach(n),t}const d=Array.isArray;function m(t){return d(t)&&t||i(t)&&[t]||[]}function A(t){return t.flat(1/0)}const b=Reflect.construct;function w(t,n=[],r){const e=d(n)?n:[n];return r?b(t,e,r):b(t,e)}function v(...t){const n=w(Map),r=[];return u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function C(t,n=1,r=t.length){return t.splice(n,r)}function O(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function I(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function j(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function M(t,n,r=[],e){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const S=Object.keys;function R(t){if(t)return S(t)}const x=/\.|\[/,B=/]/g,N="";function T(t){return t.replace(B,N).split(x)}function U(t,n){if(!n)return!1;let r=n;return j(d(t)?t:T(t),(t=>(r=r[t],i(r)))),r}const k=Object.hasOwn;function P(t,...n){if(t)return j(n,(n=>{const r=T(n);if(1===r.length)return k(t,n);{const n=r.pop(),e=U(r,t);return!!e&&k(e,n)}}))}const $=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function D(t,n){return t?.constructor===n||!1}function L(t){return n=>D(n,t)}function q(t){return t?.constructor?.name}function V(t){return n=>q(n)===t||!1}function K(t){return function(n,...r){return r?t(n)&&j(r,t):t(n)}}const Z=V("Buffer"),_=K(Z),z=(t,n)=>{if(t===n)return!0;if(_(t))return t.equals(n);if(t.toString()===n.toString())if($(t)){const r=R(t);if(P(n,r))return j(r,(r=>z(t[r],n[r])))}else if(d(t)&&t.length===n.length)return j(t,((t,r)=>z(t,n[r])));return!1};const W=Math.max;function G(t,n,r=[],e,o){return i(e)?u(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):u(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function J(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function H(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function rt(t,n,r){if(i(t))return nt(t,n,r)}function et(t,n=t.length){if(t.length<=1)return rt(t);const r=rt(t);let e,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",r){return t.sort(((t,e)=>ft(t,e,n,r)))}function ht(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function pt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}const yt=V("Number"),dt=K(yt);const mt=L(String);function At(t,n){if(t)return mt(n)?t[n]:G(n,(n=>t[n]))}function bt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),Ot=wt(/\.js$/),It=wt(/\.json$/);const jt=Object.assign;function Ft(t,...n){if(i(t))return jt(t,...n)}const Et=async(t,n,r,e)=>{if(!t)return;const o=R(t);return i(r)?await a(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await a(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function Mt(t,n,r,e){if(!t)return;const o=R(t);return i(r)?u(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):u(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const St=V("Set"),Rt=K(St);function xt(t,n){if(Rt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Bt=V("GeneratorFunction"),Nt=K(Bt);async function Tt(t,n,r){if(Rt(t)){for(const r of t)await n(r,t);return t}if(Nt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const Ut=t=>!!i(t)&&t instanceof Function,kt=V("AsyncFunction"),Pt=K(kt);function $t(t,n,r,e,o,c){return(u,s,a,f,l)=>{let h;const p=Pt(s);if(i(u)&&s)return h=d(u)?p?n:t:$(u)||Ut(u)?p?e:r:o?p?c:o:Nt(u)?c:p?e:r,h(u,s,a,f,l)}}const Dt=$t(u,a,Mt,Et,xt,Tt);class Lt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Dt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,Vt=!1,Kt=()=>{};function Zt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const zt=w(_t);function Wt(t,n){return zt.set(t,n)}const Gt=Reflect.apply;function Jt(t,n,r){if(Ut(t))return Gt(t,n,r)}async function Ht(t,n,r={}){if(t)return await Et(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function Qt(t,n,r={},e,o){if(t)return i(e)?Mt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):Mt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function Xt(t){return t?.constructor}function Yt(t,n=[]){const r=Xt(t);return r===Function&&"function"===r.name?function(){}:w(r,n)}function tn(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Ut(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function nn(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const rn=$t(G,J,Qt,Ht,tn,nn);async function en(t,n){if(!t)return;return F(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function on(t,n){if(!t)return;return j(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function cn(t,n=c){if(d(t)||Rt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function un(t,n=c,r){if(Nt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(d(t)||Rt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const sn=$t(j,F,on,en,cn,un);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,pn=Object.defineProperty,gn=fn(Object.hasOwnProperty),yn=Object.is;const{random:dn}=Math;const{sign:mn}=Math;const An=Object.entries;async function bn(t,n=c,r={}){return await Et(t,(async(t,e,o,c,u)=>{const s=await n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function wn(t,n=c,r={}){return Mt(t,((t,e,o,c,u)=>{const s=n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function vn(t,n,r={}){return Mt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Cn(t,n,r={}){return await Et(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const On=V("RegExp"),In=K(On),jn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(jn,"\\$&")}function En(t,n){return n?En(G(t,Fn)):RegExp(t.join("|"))}function Mn(t){if(t)return R(t).length}const Sn=/[ _-]+/g;const Rn=/[ _-]+/g,xn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Tn=/[ _-]+/g;const Un=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Pn=/%(?![\da-f]{2})/gi,$n=/&/g,Dn=//g,qn=/"/g;function Vn(t){return decodeURIComponent(t.replace(Pn,(()=>"%25")))}function Kn(t){return t.replace($n,"&").replace(Dn,"<").replace(Ln,">").replace(qn,""")}const Zn=/\S+/g,_n=/\w+/g;const zn=/\w+/g;function Wn(t){return t[0].toUpperCase()}function Gn(t){return Wn(t)+kn(t)}function Jn(t){return Wn(t)+kn(t).toLowerCase()}function Hn(t){return Xt(t)?.name}function Qn(t){return!i(t)}const Xn=V("Map"),Yn=K(Xn),tr=/Array/,nr="Array";function rr(t){if(t){const n=Hn(t);if(tr.test(n)&&n!==nr)return!0}return!1}const er=V("BigInt"),or=K(er),ir=V("Boolean"),cr=K(ir),ur=V("ArrayBuffer"),sr=K(ur);const ar=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const fr=V("Date"),lr=K(fr);function hr(t){return!1===t}const pr=V("Float32Array"),gr=K(pr),yr=V("Float64Array"),dr=K(yr),{isInteger:mr}=Number,Ar=mr,br=V("Int16Array"),wr=K(br),vr=V("Int32Array"),Cr=K(vr),Or=V("Int8Array"),Ir=K(Or);function jr(t){return!!t&&t instanceof Promise}function Fr(t){return!!t&&(jr(t)||Pt(t)||Nt(t))}const{isSafeInteger:Er}=Number,Mr=Er;const Sr=V("Uint16Array"),Rr=K(Sr),xr=V("Uint32Array"),Br=K(xr),Nr=V("Uint8Array"),Tr=K(Nr),Ur=V("Uint8ClampedArray"),kr=K(Ur),Pr=V("WeakMap"),$r=K(Pr),Dr=void 0!==globalThis.Deno,Lr=void 0!==globalThis.process&&process.versions&&process.versions.node;function qr(t,n=!0){return Boolean(t)&&n}function Vr(t,n){return hr(z(t,n))}const Kr=JSON;const Zr=Kr.stringify;function _r(t,n,r){const e=globalThis.options||r;let o;return Ut(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Zr(t)}\n\t\tExpected: ${Zr(n)}`,e)}async function zr(t,n,r){const e=await t;return!(Ut(n)&&!1===await n(e,r))&&!Vr(e,n)||_r(e,n,r)}const Wr=globalThis.structuredClone;async function Gr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);i(e)&&r.push(e)}return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);i(c)&&e(c)}return o}const u=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i(c)&&(u?o.set(r,c):o[r]=c)}return o}function Jr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);i(c)&&o(c)}return e}const o=Ut(e.set);for(const[r,c]of t){const u=n(c,r,e,t);i(u)&&(o?e.set(r,u):e[r]=u)}return e}const Hr=$t(s,f,wn,bn,Jr,Gr);function Qr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Ut(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function Xr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Ut(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const Yr=$t(E,M,vn,Cn,Qr,Xr);function te(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const ne=te(u),re=te(O);function ee(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const oe=ee(a),ie=ee(I);const ce=wt(/\./);class ue{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const se=w(ue);class ae{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,ae.models.set(t,n)):Ft(this,t)}}class fe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Mt(t,(n=>{t[n]=new fe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new fe(r),!0)})}}class le{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const he=w(le);class pe{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Lt,t.Intervals=ue,t.Model=ae,t.Store=fe,t.Timers=_t,t.UniqID=le,t.VirtualStorage=pe,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Jt,t.arrayToRegex=En,t.arraysToObject=function(t,n){const r={};return u(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Fr(t)||Fr(n)?zr(t,n,r):!(Ut(n)&&!1===n(t,r))&&!Vr(t,n)||_r(t,n,r)},t.assertAsync=zr,t.assign=Ft,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=rn(t,(t=>Ut(t)?t.bind(n):t));return r?Ft(r,e):e},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Sn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Lt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(_(t))return st(t);if(d(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=st,t.clearIntervals=function(){Zt(setTimeout(Kt,0),(t=>{se.remove(t)}))},t.clearTimers=function(){Zt(setTimeout(Kt,0),(t=>{zt.remove(t)}))},t.clone=function(t){return Wr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.compact=function(t){if($(t)){const n=R(t),r=n.length,e={};for(let o=0;oqr(t)))},t.compactKeys=function(t){const n=[];return Mt(t,((t,r)=>{i(t)&&n.push(r)})),n},t.compactMap=Hr,t.compactMapArray=s,t.compactMapAsyncArray=f,t.compactMapAsyncObject=bn,t.compactMapObject=wn,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return u(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return u(t,(t=>{t[n]||r++})),r},t.curry=function(t,r=t.length){const e=[],o=(...i)=>{if(e.push(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.curryRight=function(t,r=t.length){const e=[],o=(...i)=>{if(e.unshift(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.debounce=function(t,n){function r(...t){r.id!==Vt&&zt.remove(r.id),r.id=Wt((()=>{r.callable(...t),r.id=Vt}),n)}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{r.id!==Vt&&(zt.remove(r.id),r.id=Vt)},r},t.deduct=function(t){return t-1},t.defProp=pn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,r=t.length)=>C(t,0,r-n),t.each=Dt,t.eachArray=u,t.eachAsyncArray=a,t.eachAsyncObject=Et,t.eachObject=Mt,t.eachRight=O,t.eachRightAsync=I,t.ensureArray=m,t.ensureBuffer=function(t){return _(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=jn,t.every=sn,t.everyArg=function(...t){return Pt(t[0])?async function(...n){return sn(t,(async t=>sn(n,(async n=>t(n)))))}:function(...n){return sn(t,(t=>sn(n,(n=>t(n)))))}},t.everyArray=j,t.everyAsyncArray=F,t.everyAsyncObject=en,t.everyObject=on,t.falsy=Vt,t.filter=Yr,t.filterArray=E,t.filterAsyncArray=M,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=at,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(m(n))),[]);return r},t.flattenDeep=A,t.flow=ne,t.flowAsync=oe,t.flowAsyncRight=ie,t.flowRight=re,t.forEach=y,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else Ut(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=xt,t.forOfAsync=Tt,t.forOfCompactMap=Jr,t.forOfCompactMapAsync=Gr,t.forOfEvery=cn,t.forOfEveryAsync=un,t.forOfFilter=Qr,t.forOfFilterAsync=Xr,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=$t,t.get=U,t.getEntries=function(t){if(i(t))return An(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return gt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return j(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Hn,t.groupBy=function(t,n){const r={};return u(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(Qn(n)||Qn(r))return!1;if(mt(n))return mt(r)?n.includes(r,e):In(r)?r.test(n):Ut(r)?Boolean(r(n)):sn(r,(r=>Boolean(t(n,r))));if(d(n)){if(mt(r))return n.includes(r,e);if(In(r))return sn(n,(t=>t.test(r)));if(d(r))return sn(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=T(n);if(1===r.length)return k(t,n);{const n=r.pop(),e=U(r,t);return!!e&&k(e,n)}})))},t.hasDot=ce,t.hasKeys=P,t.hasLength=e,t.hasProp=gn,t.hasValue=i,t.htmlEntities=Kn,t.ifInvoke=function(t,...n){if(Ut(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!i(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(i(t)){if(Ut(n))return r?Jt(n,r,e):n(...e);if($(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eDt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return u(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return s(t,(t=>{if(j(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return se.set(t,n)},t.intervals=se,t.invert=function(t,n={}){if(t)return Mt(t,((t,r)=>{n[t]=r})),n},t.invokeArray=function(t,n,r){if(!t)return;const e=t.length;if(i(r))for(let o=0;ot[n].call(e,r):(t,e)=>t[n](r))},t.invokeCollectionAsync=function(t,n,r,e){return J(t,e?t=>t[n].call(e,r):async t=>t[n](r))},t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=d,t.isArrayBuffer=sr,t.isArrayBufferCall=ur,t.isArrayLike=function(t,n){if(Qn(t)||Ut(t))return!1;if(d(t)||rr(t))return!0;const r=t.length;if(!Qn(r)||!dt(r)||r<0)return!1;if(n){const n=R(t);return!!n&&sn(n,((t,n)=>n>=0&&dt(n)))}return!0},t.isAsync=Pt,t.isAsyncCall=kt,t.isBigInt=or,t.isBigIntCall=er,t.isBoolean=cr,t.isBooleanCall=ir,t.isBuffer=_,t.isBufferCall=Z,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return ar.test(n)}return!1},t.isConstructor=D,t.isConstructorFactory=L,t.isConstructorNameFactory=V,t.isDate=lr,t.isDateCall=fr,t.isDeno=Dr,t.isEmpty=function(t){return mt(t)||d(t)?!e(t):$(t)?!Mn(t):!i(t)},t.isEqual=z,t.isF32=gr,t.isF32Call=pr,t.isF64=dr,t.isF64Call=yr,t.isFalse=hr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=Ot,t.isFileJSON=It,t.isFloat=Ar,t.isFunction=Ut,t.isGenerator=Nt,t.isGeneratorCall=Bt,t.isI16=wr,t.isI16Call=br,t.isI32=Cr,t.isI32Call=vr,t.isI8=Ir,t.isI8Call=Or,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Fr,t.isMap=Yn,t.isMapCall=Xn,t.isMatchArray=function(t,n){return t.length===n.length&&j(t,((t,r)=>z(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=R(t),e=R(n);return r.length===e.length&&j(r,(r=>t[r]===n[r]))},t.isNegative=h,t.isNodejs=Lr,t.isNotArray=function(t){return!d(t)},t.isNotNumber=function(t){return!dt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=dt,t.isNumberCall=yt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=$,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=jr,t.isRegex=In,t.isRegexCall=On,t.isRelated=function(t,n){return!Qn(t)&&!Qn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=Mr,t.isSame=yn,t.isSameType=function(t,n){const r=Xt(t),e=Xt(n);return r===e&&r.name===e.name},t.isSet=Rt,t.isSetCall=St,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=qr,t.isTypeFactory=K,t.isTypedArray=rr,t.isU16=Rr,t.isU16Call=Sr,t.isU32=Br,t.isU32Call=xr,t.isU8=Tr,t.isU8C=kr,t.isU8CCall=Ur,t.isU8Call=Nr,t.isUndefined=r,t.isWeakMap=$r,t.isWeakMapCall=Pr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return Kr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Rn," ").trim().toLowerCase().replace(xn,"-")},t.keys=R,t.largest=function(t){return W(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Un," ").trim().toLowerCase()},t.map=rn,t.mapArray=G,t.mapAsyncArray=J,t.mapAsyncObject=Ht,t.mapObject=Qt,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{Dt(r,((r,e)=>{if(n[e]&&($(r)||d(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return i(n)?w(ae,[t,n]):U(t,ae.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Qn,t.noop=Kt,t.notEqual=Vr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=jt,t.objectEntries=An,t.objectSize=Mn,t.omit=function(t,n){if(t){if(d(n)){const r=En(n);return vn(t,((t,n)=>!r.test(n)))}if(In(n))return vn(t,((t,r)=>!n.test(r)));if(mt(n))return vn(t,((t,r)=>r!==n));if(dt(n)){const r=n.toString();return vn(t,((t,n)=>n!==r))}return Ut(n)?vn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(i(n)||(n=t(...r)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>rn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>sn(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[s(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return u(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return G(t,(t=>At(t,n)))},t.pluckObject=At,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=R(t))=>j(r,(r=>z(t[r],n[r]))),t.randomFloat=function(t,n=0){return dn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,r=1,e=[]){return h(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return et(t);if(1===n)return[t[tt(r-1,0)]];const e=[],o={};let i,c=0;for(;cht(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>bt(t,e,n,r)))},t.sortCollectionAscending=gt,t.sortCollectionAscendingFilter=pt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(H)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=bt,t.sortUnique=ct,t.stringify=Zr,t.stubArray=()=>[],t.stubFalse=()=>Vt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=H,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=qt:(r.callable(...t),r.id=Wt((()=>{r.shouldThrottle&&r.callable(...t),r.id=Vt}),n))}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{zt.remove(r.id),r.id=Vt},r},t.timer=Wt,t.timers=zt,t.times=Zt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return Mt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ut(A(t))},t.uniqID=he,t.unique=ut,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eGn(t)))},t.upperFirstLetter=Wn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(zn,(t=>Jn(t)))},t.virtualStorage=function(t){return new pe(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(_n)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=w(Map),r=[];return 2===t.length?v(t[0],t[1]):(u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return u(t,((t,e)=>{r[t]=n[e]})),r}})); //# sourceMappingURL=basic.js.map diff --git a/build/basic.js.map b/build/basic.js.map index 9bd6f422..75cec878 100644 --- a/build/basic.js.map +++ b/build/basic.js.map @@ -1 +1 @@ -{"version":3,"file":"basic.js","sources":["../source/arrays/clear.js","../source/types/isUndefined.js","../source/utilities/hasLength.js","../source/types/isNull.js","../source/types/hasValue.js","../source/utilities/returnValue.js","../source/arrays/each.js","../source/arrays/compactMap.js","../source/arrays/eachAsync.js","../source/arrays/compactMapAsync.js","../source/numbers/isNegative.js","../source/arrays/range.js","../source/utilities/forEach.js","../source/types/isArray.js","../source/arrays/ensure.js","../source/arrays/flattenDeep.js","../source/classes/construct.js","../source/arrays/difference.js","../source/arrays/drop.js","../source/arrays/eachRight.js","../source/arrays/eachRightAsync.js","../source/arrays/every.js","../source/arrays/everyAsync.js","../source/arrays/filter.js","../source/arrays/filterAsync.js","../source/objects/keys.js","../source/utilities/toPath.js","../source/utilities/get.js","../source/objects/hasKeys.js","../source/types/isPlainObject.js","../source/types/isConstructor.js","../source/types/isTypeFactory.js","../source/types/isBuffer.js","../source/utilities/isEqual.js","../source/arrays/largest.js","../source/arrays/map.js","../source/arrays/mapAsync.js","../source/math/subtract.js","../source/math/subtractReverse.js","../source/math/randomInt.js","../source/internal/array.js","../source/arrays/shuffle.js","../source/arrays/smallest.js","../source/arrays/unique.js","../source/buffers/clear.js","../source/collection/findIndexCache.js","../source/collection/sortCollectionDescending.js","../source/collection/sortCollectionAlphabetically.js","../source/collection/sortCollectionAscending.js","../source/types/isNumber.js","../source/types/isString.js","../source/objects/pluckObject.js","../source/collection/sortCollectionAlphabeticallyReverse.js","../source/internal/regexTestFactory.js","../source/files/isFileCSS.js","../source/files/isFileHTML.js","../source/files/isFileJS.js","../source/files/isFileJSON.js","../source/objects/assign.js","../source/objects/eachAsync.js","../source/objects/each.js","../source/types/isSet.js","../source/utilities/forOf.js","../source/types/isGenerator.js","../source/utilities/forOfAsync.js","../source/types/isFunction.js","../source/types/isAsync.js","../source/utilities/generateLoop.js","../source/utilities/each.js","../source/functions/chain.js","../source/utilities/stubTrue.js","../source/utilities/stubFalse.js","../source/utilities/noop.js","../source/utilities/times.js","../source/utilities/timer.js","../source/internal/apply.js","../source/objects/mapAsync.js","../source/objects/map.js","../source/types/getType.js","../source/types/cloneType.js","../source/utilities/forOfMap.js","../source/utilities/forOfMapAsync.js","../source/utilities/map.js","../source/objects/everyAsync.js","../source/objects/every.js","../source/utilities/forOfEvery.js","../source/utilities/forOfEveryAsync.js","../source/utilities/every.js","../source/utilities/cacheNativeMethod.js","../source/internal/object.js","../source/internal/isSame.js","../source/math/randomFloat.js","../source/numbers/isPositive.js","../source/objects/getEntries.js","../source/objects/compactMapAsync.js","../source/objects/compactMap.js","../source/objects/filter.js","../source/objects/filterAsync.js","../source/objects/isMatch.js","../source/types/isRegex.js","../source/regexps/escapeRegex.js","../source/regexps/arrayToRegex.js","../source/objects/size.js","../source/objects/zip.js","../source/strings/camelCase.js","../source/strings/kebabCase.js","../source/strings/snakeCase.js","../source/strings/upperCase.js","../source/strings/lowerCase.js","../source/strings/range.js","../source/strings/sanitize.js","../source/strings/tokenize.js","../source/strings/typography.js","../source/types/getTypeName.js","../source/types/noValue.js","../source/types/isMap.js","../source/types/isTypedArray.js","../source/types/isBigInt.js","../source/types/isBoolean.js","../source/types/isArrayBuffer.js","../source/types/isCloneable.js","../source/types/isDate.js","../source/types/isFalse.js","../source/types/isF32.js","../source/types/isF64.js","../source/types/isFloat.js","../source/types/isI16.js","../source/types/isI32.js","../source/types/isI8.js","../source/types/isPromise.js","../source/types/isKindAsync.js","../source/types/isSafeInt.js","../source/types/isU16.js","../source/types/isU32.js","../source/types/isU8.js","../source/types/isU8C.js","../source/types/isWeakMap.js","../source/types/isDeno.js","../source/types/isNode.js","../source/types/isTruthy.js","../source/utilities/notEqual.js","../source/utilities/json.js","../source/utilities/assert.js","../source/utilities/clone.js","../source/utilities/forOfCompactMapAsync.js","../source/utilities/forOfCompactMap.js","../source/utilities/compactMap.js","../source/utilities/forOfFilter.js","../source/utilities/forOfFilterAsync.js","../source/utilities/filter.js","../source/utilities/flow.js","../source/utilities/flowAsync.js","../source/utilities/hasDot.js","../source/utilities/interval.js","../source/utilities/model.js","../source/utilities/store.js","../source/utilities/uid.js","../source/utilities/virtualStorage.js","../source/math/add.js","../source/functions/after.js","../source/utilities/arraysToObject.js","../source/functions/ary.js","../source/functions/before.js","../source/utilities/bindAll.js","../source/math/progress.js","../source/arrays/chunk.js","../source/utilities/clear.js","../source/arrays/clone.js","../source/utilities/compact.js","../source/objects/compactKeys.js","../source/utilities/concurrent.js","../source/utilities/concurrentStatus.js","../source/collection/countBy.js","../source/collection/countKey.js","../source/collection/countWithoutKey.js","../source/functions/curry.js","../source/functions/curryRight.js","../source/functions/debounce.js","../source/math/deduct.js","../source/math/divide.js","../source/arrays/dropRight.js","../source/buffers/ensure.js","../source/utilities/everyArg.js","../source/collection/findIndex.js","../source/collection/findItem.js","../source/arrays/first.js","../source/arrays/flatten.js","../source/utilities/forEachAsync.js","../source/utilities/forMap.js","../source/files/getExtension.js","../source/files/getFilename.js","../source/collection/getHighest.js","../source/collection/getLowest.js","../source/arrays/getNumberInsertIndex.js","../source/collection/groupBy.js","../source/utilities/has.js","../source/functions/ifInvoke.js","../source/utilities/ifNotAssign.js","../source/utilities/ifValue.js","../source/functions/inAsync.js","../source/functions/inSync.js","../source/math/increment.js","../source/collection/indexBy.js","../source/arrays/initial.js","../source/arrays/intersect.js","../source/objects/invert.js","../source/collection/invoke.js","../source/collection/invokeAsync.js","../source/types/isArguments.js","../source/types/isArrayLike.js","../source/types/isChild.js","../source/types/isEmpty.js","../source/types/isFalsy.js","../source/types/isIterable.js","../source/arrays/isMatch.js","../source/numbers/isNumberEqual.js","../source/numbers/isNumberInRange.js","../source/numbers/isNumberNotInRange.js","../source/types/isParent.js","../source/types/isPrimitive.js","../source/types/isRelated.js","../source/types/isSameType.js","../source/types/isTrue.js","../source/numbers/isZero.js","../source/arrays/last.js","../source/arrays/mapRight.js","../source/arrays/mapWhile.js","../source/utilities/merge.js","../source/math/multiple.js","../source/functions/negate.js","../source/functions/nthArg.js","../source/objects/omit.js","../source/functions/once.js","../source/functions/over.js","../source/functions/overEvery.js","../source/utilities/pair.js","../source/arrays/partition.js","../source/objects/pick.js","../source/collection/pluck.js","../source/utilities/promise.js","../source/utilities/propertyMatch.js","../source/functions/rearged.js","../source/math/remainder.js","../source/arrays/remove.js","../source/strings/replace.js","../source/arrays/rest.js","../source/arrays/right.js","../source/arrays/sample.js","../source/utilities/setKey.js","../source/utilities/setValue.js","../source/arrays/sortNumberAscending.js","../source/arrays/sortNumberDescening.js","../source/utilities/stubArray.js","../source/utilities/stubObject.js","../source/utilities/stubString.js","../source/math/subtractAll.js","../source/math/sumAll.js","../source/arrays/take.js","../source/arrays/takeRight.js","../source/functions/throttle.js","../source/utilities/timesAsync.js","../source/utilities/toggle.js","../source/strings/truncate.js","../source/arrays/zip.js","../source/arrays/union.js","../source/arrays/untilFalse.js","../source/arrays/untilTrue.js","../source/arrays/whileCompactMap.js","../source/arrays/whileEach.js","../source/arrays/whileMap.js","../source/arrays/without.js","../source/functions/wrap.js","../source/arrays/xor.js"],"sourcesContent":["/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invoke\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invoke(collection, property, value) {\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * (async () => {\n * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]);\n * });\n *\n * @example\n * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invokeAsync(collection, property, value) {\n\treturn mapAsyncArray(collection, async (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n"],"names":["clearArray","source","length","isUndefined","undefined","hasLength","Boolean","isNull","hasValue","returnValue","eachArray","iteratee","thisCall","additionalArg","arrayLength","index","call","compactMapArray","results","item","arrayOriginal","returned","push","async","eachAsyncArray","compactMapAsyncArray","result","sign","Math","isNegative","rangeUp","start","end","step","sourceArray","position","rangeDown","forEach","callback","isArray","Array","ensureArray","flattenDeep","flat","Infinity","reflectConstruct","Reflect","construct","target","argumentsList","newTarget","args","difference","sources","differencesMap","Map","differences","currentArray","parentIndex","child","childIndex","childRoot","get","count","set","drop","array","amount","upTo","splice","eachRight","thisBind","eachRightAsync","everyArray","sourceLength","everyAsyncArray","filterArray","filterAsyncArray","objectKeys","Object","keys","regexToPath","regexCloseBracket","emptyString","toPath","replace","split","propertyString","link","hasOwn","hasKeys","properties","pathArray","lastPath","pop","initialPathObject","isPlainObject","value","constructor","toString","trim","slice","isConstructor","isConstructorFactory","constructorName","name","isConstructorNameFactory","isTypeFactory","method","primarySource","otherSources","isBufferCall","isBuffer","isEqual","equals","sourceProperties","key","mathNativeMax","max","mapArray","mapAsyncArray","subtract","minuend","subtrahend","subtractReverse","floor","random","randomInt","min","arrayFrom","from","toArray","arrayLike","mapFn","thisArg","shuffle","shuffleArray","mathNativeMin","onlyUnique","indexOf","sortUnique","unique","isSorted","filter","clearBuffer","fill","findIndexCache","element","indexMatch","propertyName","sortCollectionDescendingFilter","previous","next","ifMatch","previousKey","nextKey","sortCollectionDescending","collection","sort","sortObjectsAlphabetically","localeCompare","sortCollectionAscendingFilter","sortCollectionAscending","isNumberCall","isNumber","isString","String","pluckObject","targets","sortObjectsAlphabeticallyReverse","regexTestFactory","regexType","test","isFileCSS","isFileHTML","isFileJS","isFileJSON","objectAssign","assign","eachAsyncObject","propertyCount","eachObject","objectKeysArray","isSetCall","isSet","forOf","isGeneratorCall","isGenerator","forOfAsync","generatorArgs","isFunction","Function","isAsyncCall","isAsync","generateLoop","arrayLoop","arrayLoopAsync","objectLoop","objectLoopAsync","forOfLoop","forOfLoopAsync","argument1","argument2","argument3","isIterateeAsync","each","Chain","methods","this","addChainMethod","thisChain","methodName","setValue","done","truth","falsy","noop","times","Timers","list","remove","id","clearTimeout","delete","has","callable","time","currentThis","setTimeout","clear","timers","timer","applyNative","apply","thisArgument","mapAsyncObject","thisObject","mapObject","original","getType","cloneType","sourceType","forOfMap","resultsObject","methodPush","add","methodPushBound","bind","methodSet","forOfMapAsync","resultsGenerator","map","everyAsyncObject","everyObject","forOfEvery","forOfEveryAsync","every","functionPrototype","prototype","cacheNativeMethod","getPropNames","getOwnPropertyNames","getPropDesc","getOwnPropertyDescriptor","defProp","defineProperty","hasProp","hasOwnProperty","isSame","is","objectEntries","entries","compactMapAsyncObject","compactMapObject","filterObject","filterAsyncObject","isRegexCall","isRegex","escapeRegexRegex","escapeRegex","arrayToRegex","makeSafe","RegExp","join","objectSize","normalizeCase","space","restString","string","substring","rawURLDecodeRegex","andRegex","lessThanRegex","moreThanRegex","doubleQuoteRegex","rawURLDecode","decodeURIComponent","htmlEntities","tokenizeRegEx","wordsRegEx","getWords","upperFirstLetter","toUpperCase","upperFirst","upperFirstOnly","toLowerCase","getTypeName","noValue","isMapCall","isMap","typedArrayRegex","arrayConstructorName","isTypedArray","isBigIntCall","isBigInt","isBooleanCall","isBoolean","isArrayBufferCall","isArrayBuffer","constructorNames","isDateCall","isDate","isFalse","isF32Call","isF32","isF64Call","isF64","isInteger","Number","isFloat","isI16Call","isI16","isI32Call","isI32","isI8Call","isI8","isPromise","Promise","isKindAsync","isSafeInteger","isSafeInt","isU16Call","isU16","isU32Call","isU32","isU8Call","isU8","isU8CCall","isU8C","isWeakMapCall","isWeakMap","isDeno","globalThis","Deno","isNodejs","process","versions","node","isTruthy","returnIfTrue","notEqual","jsonNative","JSON","stringify","createAssertError","expected","localOptions","options","errorTitle","title","file","Error","assertAsync","sourceArg","structuredCloneSafe","structuredClone","forOfCompactMapAsync","forOfCompactMap","compactMap","forOfFilter","forOfFilterAsync","returnFlow","arg","flow","flowRight","flowAsync","flowAsyncRight","hasDot","Intervals","clearInterval","setInterval","intervals","Model","static","modelName","modelValue","models","Store","property","data","Proxy","proxySource","console","log","UniqID","totalActive","freed","totalFree","shift","free","isActive","shouldReset","reset","uniqID","VirtualStorage","initialObject","items","getItem","setItem","removeItem","augend","addend","point","sortedObject","bindThis","targetAssign","total","currentAmount","config","size","chunked","match","sourceKeys","sourceKeysLength","targetObject","i","keyName","object","compactedKeys","queue","all","allSettled","arity","curries","curried","curryArgs","unshift","debounced","Buffer","alloc","findIndex","find","level","reduce","previousValue","currentValue","concat","values","valuesLength","cloned","methodBound","lastIndexOf","insertIndex","search","includes","rootObject","equalThis","optional","firstArgument","text","arrays","otherItem","strictFlag","indexes","sourceChild","targetParent","Symbol","iterator","compareArray","targetKeys","sourceParent","targetChild","type","targetOne","targetTwo","other","otherType","reviver","parse","indexFrom","trueIndex","merge","currentSource","sourceItem","sourceKey","blacklist","blacklistRegex","numberToString","iteratees","predicates","predicate","rejected","whitelist","compared","removeThese","words","sampleArray","used","numberList","a","b","endIndex","indexRight","throttled","shouldThrottle","on","off","maxLength","stringLength","breakAll","breakAllLength","truncateDown","truncateUp","arraySet","unZippedKeys","sourcesSet","Set","wrapper","xorMap","xored","zipedObject"],"mappings":"yOAaO,SAASA,EAAWC,GAE1B,OADAA,EAAOC,OAAS,EACTD,CACR,CCLO,SAASE,EAAYF,GAC3B,YAAkBG,IAAXH,CACR,CCAO,SAASI,EAAUJ,GACzB,OAAOK,QAAQL,EAAOC,OACvB,CCFO,SAASK,EAAON,GACtB,OAAkB,OAAXA,CACR,CCDO,SAASO,EAASP,GACxB,OAAQE,EAAYF,KAAYM,EAAON,EACxC,CCRO,SAASQ,EAAYR,GAC3B,OAAOA,CACR,CCYO,SAASS,EAAUT,EAAQU,EAAUC,EAAUC,GACrD,IAAKZ,EACJ,OAED,MAAMa,EAAcb,EAAOC,OAC3B,GAAIM,EAASI,GACZ,IAAK,IAAIG,EAAQ,EAAGA,EAAQD,EAAaC,IACxCJ,EAASK,KAAKJ,EAAUX,EAAOc,GAAQA,EAAOd,EAAQa,EAAaD,QAGpE,IAAK,IAAIE,EAAQ,EAAGA,EAAQD,EAAaC,IACxCJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAaD,GAGtD,OAAOZ,CACR,CCfO,SAASgB,EAAgBhB,EAAQU,EAAWF,EAAaS,EAAU,GAAIN,EAAUC,GAgBvF,OAfIL,EAASI,GACZF,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,KAC9C,MAAMO,EAAWV,EAASK,KAAKJ,EAAUO,EAAMJ,EAAOG,EAASE,EAAeN,EAAaD,GACvFL,EAASa,IACZH,EAAQI,KAAKD,EACb,IAGFX,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,KAC9C,MAAMO,EAAWV,EAASQ,EAAMJ,EAAOG,EAASE,EAAeN,EAAaF,EAAUC,GAClFL,EAASa,IACZH,EAAQI,KAAKD,EACb,IAGIH,CACR,CCjBOK,eAAeC,EAAevB,EAAQU,EAAUC,EAAUC,GAChE,IAAKZ,EACJ,OAED,MAAMa,EAAcb,EAAOC,OAC3B,GAAIM,EAASI,GACZ,IAAK,IAAIG,EAAQ,EAAGA,EAAQD,EAAaC,UAClCJ,EAASK,KAAKJ,EAAUX,EAAOc,GAAQA,EAAOd,EAAQa,EAAaD,QAG1E,IAAK,IAAIE,EAAQ,EAAGA,EAAQD,EAAaC,UAClCJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAaD,GAG5D,OAAOZ,CACR,CCjBOsB,eAAeE,EAAqBxB,EAAQU,EAAWF,GAC7D,MAAMS,EAAU,GAOhB,aANMM,EAAevB,GAAQsB,MAAOJ,EAAMJ,EAAOD,KAChD,MAAMY,QAAef,EAASQ,EAAMJ,EAAOG,EAASJ,GAChDN,EAASkB,IACZR,EAAQI,KAAKI,EACb,IAEKR,CACR,CChBA,MAAQS,KAAAA,GAASC,KACV,SAASC,EAAW5B,GAC1B,OAAyB,IAAlB0B,EAAK1B,EACb,CCfO,SAAS6B,EAAQC,EAAOC,EAAKC,EAAMC,GACzC,IAAIC,EAAWJ,EACf,KAAOI,EAAWH,GACjBE,EAAYZ,KAAKa,GACjBA,GAAYF,EAEb,OAAOC,CACR,CACO,SAASE,EAAUL,EAAOC,EAAKC,EAAMC,GAC3C,IAAIC,EAAWJ,EACf,KAAOI,EAAWH,GACjBE,EAAYZ,KAAKa,GACjBA,GAAYF,EAEb,OAAOC,CACR,CChBO,SAASG,EAAQpC,EAAQqC,GAE/B,OADArC,EAAOoC,QAAQC,GACRrC,CACR,CCUY,MAACsC,EAAUC,MAAMD,QCEtB,SAASE,EAAYxC,GAC3B,OAAQsC,EAAQtC,IAAWA,GAAYO,EAASP,IAAW,CAACA,IAAY,EACzE,CCHO,SAASyC,EAAYzC,GAC3B,OAAOA,EAAO0C,KAAKC,IACpB,CCKA,MAAMC,EAAmBC,QAAQC,UAE1B,SAASA,EAAUC,EAAQC,EAAgB,GAAIC,GACrD,MAAMC,EAAQZ,EAAQU,GAAkBA,EAAgB,CAACA,GACzD,OAAIC,EACIL,EAAiBG,EAAQG,EAAMD,GAEhCL,EAAiBG,EAAQG,EACjC,CCXO,SAASC,KAAcC,GAC7B,MAAMC,EAAiBP,EAAUQ,KAC3BC,EAAc,GAuBpB,OAtBA9C,EAAU2C,GAAS,CAACI,EAAcC,KACjChD,EAAU+C,GAAc,CAACE,EAAOC,KAC/B,IAAIC,EAAYP,EAAeQ,IAAIH,GACnC,GAAKE,EAOE,IAAIA,EAAUH,cAAgBA,EACpC,OAEAG,EAAUE,OACV,MAVAF,EAAY,CACXE,MAAO,EACPL,cACAC,SAEDL,EAAeU,IAAIL,EAAOE,EAK1B,GACA,IAEHxB,EAAQiB,GAAiBnC,IACL,IAAfA,EAAK4C,OAAoC,IAArB5C,EAAKuC,aAC5BF,EAAYlC,KAAKH,EAAKwC,MACtB,IAEKH,CACR,CC5BO,SAASS,EAAKC,EAAOC,EAAS,EAAGC,EAAOF,EAAMhE,QACpD,OAAOgE,EAAMG,OAAOF,EAAQC,EAC7B,CCGO,SAASE,EAAUrE,EAAQU,EAAU4D,GAC3C,IAAKtE,EACJ,OAED,MAAMa,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQD,EAAc,EAAEC,GAAS,EAAEA,IAC3CJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAayD,GAErD,OAAOtE,CACR,CCXOsB,eAAeiD,EAAevE,EAAQU,GAC5C,IAAKV,EACJ,OAED,MAAMa,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQD,EAAc,EAAGC,GAAS,EAAGA,UACvCJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,GAE9C,OAAOb,CACR,CCNO,SAASwE,EAAWxE,EAAQU,EAAU4D,GAC5C,IAAKtE,EACJ,OAED,MAAMyE,EAAezE,EAAOC,OAC5B,IAAK,IAAIa,EAAQ,EAAEA,EAAQ2D,EAAa3D,IACvC,IAAuE,IAAnEJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQyE,EAAcH,GACxD,OAAO,EAGT,OAAO,CACR,CCXOhD,eAAeoD,EAAgB1E,EAAQU,EAAU4D,GACvD,IAAKtE,EACJ,OAED,MAAMyE,EAAezE,EAAOC,OAC5B,IAAK,IAAIa,EAAQ,EAAEA,EAAQ2D,EAAa3D,IACvC,IAA6E,UAAnEJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQyE,EAAcH,GAC9D,OAAO,EAGT,OAAO,CACR,CCXO,SAASK,EAAY3E,EAAQU,EAAUO,EAAU,GAAIqD,GAM3D,OALA7D,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,MAC+B,IAAzEH,EAASQ,EAAMJ,EAAOG,EAASE,EAAeN,EAAayD,IAC9DrD,EAAQI,KAAKH,EACb,IAEKD,CACR,CCPOK,eAAesD,EAAiB5E,EAAQU,EAAUO,EAAU,GAAIqD,GAMtE,aALM/C,EAAevB,GAAQsB,MAAOJ,EAAMJ,EAAOK,EAAeN,MACoB,UAAzEH,EAASQ,EAAMJ,EAAOG,EAASE,EAAeN,EAAayD,IACpErD,EAAQI,KAAKH,EACb,IAEKD,CACR,CCjBA,MAAM4D,EAAaC,OAAOC,KACnB,SAASA,EAAK/E,GACpB,GAAIA,EACH,OAAO6E,EAAW7E,EAEpB,CCjBA,MAAMgF,EAAc,QACdC,EAAoB,KACpBC,EAAc,GAcb,SAASC,EAAOnF,GACtB,OAAOA,EAAOoF,QAAQH,EAAmBC,GAAaG,MAAML,EAC7D,CCKO,SAASnB,EAAIyB,EAAgBvC,GACnC,IAAKA,EACJ,OAAO,EAER,IAAIwC,EAAOxC,EAMX,OAJAyB,EADmBlC,EAAQgD,GAAmBA,EAAiBH,EAAOG,IAC/CpE,IACtBqE,EAAOA,EAAKrE,GACLX,EAASgF,MAEVA,CACR,CC9BA,MAAMC,EAASV,OAAOU,OAef,SAASC,EAAQzF,KAAW0F,GAClC,GAAK1F,EAGL,OAAOwE,EAAWkB,GAAaxE,IAC9B,MAAMyE,EAAYR,EAAOjE,GACzB,GAAyB,IAArByE,EAAU1F,OACb,OAAOuF,EAAOxF,EAAQkB,GAChB,CACN,MAAM0E,EAAWD,EAAUE,MACrBC,EAAoBjC,EAAI8B,EAAW3F,GACzC,QAAI8F,GACIN,EAAOM,EAAmBF,EAGlC,IAEH,CCtBY,MAACG,EAAiBC,KACzBzF,EAASyF,IAEO,YADZA,EAAMC,YAAYC,WAAWC,OAClCC,MAAM,EAAG,ICHN,SAASC,EAActD,EAAQ/C,GACrC,OAAO+C,GAAQkD,cAAgBjG,IAAU,CAC1C,CACO,SAASsG,EAAqBtG,GACpC,OAAQ+C,GACAsD,EAActD,EAAQ/C,EAE/B,CACO,SAASuG,EAAgBvG,GAC/B,OAAOA,GAAQiG,aAAaO,IAC7B,CACO,SAASC,EAAyBzG,GACxC,OAAQ+C,GACAwD,EAAgBxD,KAAY/C,IAAU,CAE/C,CC5BO,SAAS0G,EAAcC,GAC7B,OAAO,SAASC,KAAkBC,GACjC,OAAIA,EACIF,EAAOC,IAAkBpC,EAAWqC,EAAcF,GAEnDA,EAAOC,EAChB,CACA,CCMY,MAACE,EAAeL,EAAyB,UACxCM,EAAWL,EAAcI,GCMzBE,EAAU,CAAChH,EAAQ+C,KAC/B,GAAI/C,IAAW+C,EACd,OAAO,EACD,GAAIgE,EAAS/G,GACnB,OAAOA,EAAOiH,OAAOlE,GACf,GAAI/C,EAAOkG,aAAenD,EAAOmD,WACvC,GAAIH,EAAc/F,GAAS,CAC1B,MAAMkH,EAAmBnC,EAAK/E,GAC9B,GAAIyF,EAAQ1C,EAAQmE,GACnB,OAAO1C,EAAW0C,GAAmBC,GAC7BH,EAAQhH,EAAOmH,GAAMpE,EAAOoE,KAGxC,MAAS,GAAI7E,EAAQtC,IACdA,EAAOC,SAAW8C,EAAO9C,OAC5B,OAAOuE,EAAWxE,GAAQ,CAACkB,EAAMJ,IACzBkG,EAAQ9F,EAAM6B,EAAOjC,MAKhC,OAAO,CAAK,EC1Cb,MAAMsG,EAAgBzF,KAAK0F,ICsBpB,SAASC,EAAStH,EAAQU,EAAUO,EAAU,GAAIN,EAAUC,GAUlE,OATIL,EAASI,GACZF,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,KAC9CI,EAAQH,GAASJ,EAASK,KAAKJ,EAAUO,EAAMJ,EAAOG,EAASE,EAAeN,EAAaD,EAAc,IAG1GH,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,KAC9CI,EAAQH,GAASJ,EAASQ,EAAMJ,EAAOG,EAASE,EAAeN,EAAaD,EAAc,IAGrFK,CACR,CCfOK,eAAeiG,EAAcvH,EAAQU,GAC3C,MAAMO,EAAU,GAIhB,aAHMM,EAAevB,GAAQsB,MAAOJ,EAAMJ,EAAOD,KAChDI,EAAQH,SAAeJ,EAASQ,EAAMJ,EAAOD,EAAY,IAEnDI,CACR,CCVO,SAASuG,EAASC,EAASC,GACjC,OAAOD,EAAUC,CAClB,CCFO,SAASC,EAAgBD,EAAYD,GAC3C,OAAOA,EAAUC,CAClB,CChBA,MAAME,MACLA,EACDC,OAACA,GACGlG,KAeG,SAASmG,GAAUT,EAAKU,EAAM,GACpC,OAAOH,EAAMC,KAAYR,EAAMU,IAAQA,CACxC,CCnBA,MAAMC,GAAYzF,MAAM0F,KAejB,SAASC,GAAQC,EAAWC,EAAOC,GACzC,GAAI9H,EAAS4H,GACZ,OAAOH,GAAUG,EAAWC,EAAOC,EAErC,CCJO,SAASC,GAAQvF,EAAQmB,EAASnB,EAAO9C,QAC/C,GAAI8C,EAAO9C,QAAU,EACpB,OAAOiI,GAAQnF,GAEhB,MAAMwF,EAAeL,GAAQnF,GAC7B,IACIjC,EACAkF,EAFAlC,EAAQ,EAGZ,KAAOA,EAAQI,GACdpD,EAAQgH,GAAUS,EAAatI,OAAS,EAAG,GAC3C+F,EAAQuC,EAAazE,GACrByE,EAAazE,GAASyE,EAAazH,GACnCyH,EAAazH,GAASkF,EACtBlC,IAED,OAAOyE,CACR,CChCA,MAAMC,GAAgB7G,KAAKoG,ICApB,SAASU,GAAWzC,EAAOlF,EAAOmD,GACxC,OAAOA,EAAMyE,QAAQ1C,KAAWlF,CACjC,CACO,SAAS6H,GAAWzH,EAAMJ,EAAOmD,GACvC,OAAO/C,IAAS+C,EAAMnD,EAAQ,EAC/B,CAeO,SAAS8H,GAAO5I,EAAQ6I,GAC9B,OAAIA,EACI7I,EAAO8I,OAAOH,IAEf3I,EAAO8I,OAAOL,GACtB,CCZO,SAASM,GAAY/I,GAE3B,OADAA,EAAOgJ,KAAK,GACLhJ,CACR,CChBO,SAASiJ,GAAeC,EAASpI,EAAOmD,EAAOkF,EAAYC,GACjE,GAAIF,EAAQE,KAAkBD,EAC7B,OAAO,CAET,CCcO,SAASE,GAA+BC,EAAUC,EAAMH,EAAcI,GAC5E,MAAMC,EAAcH,EAASF,GACvBM,EAAUH,EAAKH,GACrB,OAAIK,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMH,GAE3BM,EAEOD,EAEDA,EAAcC,EACjB,EACGD,EAAcC,GAChB,EAEF,EANC,GAFC,CASV,CACO,SAASC,GAAyBC,EAAYR,EAAe,KAAMI,GACzE,OAAOI,EAAWC,MAAK,CAACP,EAAUC,IAC1BF,GAA+BC,EAAUC,EAAMH,EAAcI,IAEtE,CCbO,SAASM,GAA0BR,EAAUC,EAAMH,EAAcI,GACvE,MAAMC,EAAcH,EAASF,GACvBM,EAAUH,EAAKH,GACrB,OAAIK,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMH,GAEzBK,EAAYM,cAAcL,EAClC,CCfO,SAASM,GAA8BV,EAAUC,EAAMH,EAAcI,GAC3E,MAAMC,EAAcH,EAASF,GACvBM,EAAUH,EAAKH,GACrB,OAAIK,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMH,GAE3BM,EAEOD,EAEDA,EAAcC,GAChB,EACED,EAAcC,EACjB,EAED,GANE,EAFD,CAST,CACO,SAASO,GAAwBL,EAAYR,EAAe,KAAMI,GACxE,OAAOI,EAAWC,MAAK,CAACP,EAAUC,IAC1BS,GAA8BV,EAAUC,EAAMH,EAAcI,IAErE,CCzBY,MAACU,GAAezD,EAAyB,UACxC0D,GAAWzD,EAAcwD,ICA1B,MAACE,GAAW9D,EAAqB+D,QCCtC,SAASC,GAAYtK,EAAQuK,GACnC,GAAKvK,EAEE,OAAIoK,GAASG,GACZvK,EAAOuK,GAERjD,EAASiD,GAAUrJ,GAClBlB,EAAOkB,IAEhB,CCPO,SAASsJ,GAAiClB,EAAUC,EAAMH,EAAcI,GAC9E,MAAMC,EAAcH,EAASF,GACvBM,EAAUH,EAAKH,GACrB,OAAIK,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMH,GAEzBM,EAAQK,cAAcN,EAC9B,CCxBO,SAASgB,GAAiBC,GAChC,OAAQxJ,KACCX,EAASW,IAASwJ,EAAUC,KAAKzJ,EAE3C,CCQY,MAAC0J,GAAYH,GAAiB,UCA7BI,GAAaJ,GAAiB,WCA9BK,GAAWL,GAAiB,SCA5BM,GAAaN,GAAiB,WCZ/B,MAACO,GAAelG,OAAOmG,OAc5B,SAASA,GAAOlI,KAAWK,GACjC,GAAI7C,EAASwC,GACZ,OAAOiI,GAAajI,KAAWK,EAEjC,CCIa,MAAA8H,GAAkB5J,MAAOtB,EAAQU,EAAUC,EAAUC,KACjE,IAAKZ,EACJ,OAED,MAAM6E,EAAaE,EAAK/E,GAUxB,OATIO,EAASI,SACNY,EAAesD,GAAY,CAACsC,EAAKrG,EAAOmD,EAAOkH,IAC7CzK,EAASK,KAAKJ,EAAUX,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAetG,EAAYjE,WAG/EW,EAAesD,GAAY,CAACsC,EAAKrG,EAAOmD,EAAOkH,IAC7CzK,EAASV,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAetG,EAAYjE,KAGhEZ,CAAM,EChBP,SAASoL,GAAWpL,EAAQU,EAAUC,EAAUC,GACtD,IAAKZ,EACJ,OAED,MAAM6E,EAAaE,EAAK/E,GAUxB,OATIO,EAASI,GACZF,EAAUoE,GAAY,CAACsC,EAAKrG,EAAOuK,EAAiBF,KACnDzK,EAASK,KAAKJ,EAAUX,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAeE,EAAiBzK,EAAc,IAGjGH,EAAUoE,GAAY,CAACsC,EAAKrG,EAAOuK,EAAiBF,KACnDzK,EAASV,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAeE,EAAiBzK,EAAc,IAG5EZ,CACR,CCrBY,MAACsL,GAAY7E,EAAyB,OACrC8E,GAAQ7E,EAAc4E,ICf5B,SAASE,GAAMxL,EAAQU,GAC7B,GAAI6K,GAAMvL,GAAS,CAClB,IAAK,MAAMgG,KAAShG,EACnBU,EAASsF,EAAOhG,GAEjB,OAAOA,CACP,CACD,IAAK,MAAOmH,EAAKnB,KAAUhG,EAC1BU,EAASsF,EAAOmB,EAAKnH,GAEtB,OAAOA,CACR,CCGY,MAACyL,GAAkBhF,EAAyB,qBAC3CiF,GAAchF,EAAc+E,ICdlCnK,eAAeqK,GAAW3L,EAAQU,EAAUkL,GAClD,GAAIL,GAAMvL,GAAS,CAClB,IAAK,MAAMgG,KAAShG,QACbU,EAASsF,EAAOhG,GAEvB,OAAOA,CACP,CACD,GAAI0L,GAAY1L,GACf,UAAW,MAAMkB,KAAQlB,KAAU4L,SAC5BlL,EAASQ,EAAMlB,GAGvB,IAAK,MAAOmH,EAAKnB,KAAUhG,QACpBU,EAASsF,EAAOmB,EAAKnH,GAE5B,OAAOA,CACR,CCJY,MAAC6L,GAAc7L,KAClBO,EAASP,IAAWA,aAAkB8L,SCDlCC,GAActF,EAAyB,iBACvCuF,GAAUtF,EAAcqF,ICT9B,SAASE,GAAaC,EAAWC,EAAgBC,EAAYC,EAAiBC,EAAWC,GAC/F,MAAO,CAACvM,EAAQU,EAAU8L,EAAWC,EAAWC,KAC/C,IAAItL,EACJ,MAAMuL,EAAkBX,GAAQtL,GAChC,GAAKH,EAASP,IAAYU,EAa1B,OAVCU,EADUkB,EAAQtC,GACP,EAAoBmM,EAAiBD,EACtCnG,EAAc/F,IAAW6L,GAAW7L,GACnC,EAAoBqM,EAAkBD,EACvCE,EACC,EAAoBC,EAAiBD,EACtCZ,GAAY1L,GACXuM,EAEA,EAAoBF,EAAkBD,EAE3ChL,EAASpB,EAAQU,EAAU8L,EAAWC,EAAWC,EAAU,CAEpE,CCIY,MAACE,GAAOX,GAAaxL,EAAWc,EAAgB6J,GAAYF,GAAiBM,GAAOG,ICvBzF,MAAMkB,GACZ,WAAA5G,CAAY6G,GACXC,KAAKC,eAAeF,EACpB,CACD,cAAAE,CAAeF,GACd,MAAMG,EAAYF,KAClBH,GAAKE,GAAS,CAACnG,EAAQuG,KACtBD,EAAUC,GAAc,YAAYhK,GAEnC,OADA6J,KAAK/G,MAAQW,EAAO5F,KAAKkM,EAAWA,EAAUjH,SAAU9C,GACjD+J,CACX,CAAI,GAEF,CACD,QAAAE,CAASnH,GAER,OADA+G,KAAK/G,MAAQA,EACN+G,IACP,CACD,IAAAK,GACC,MAAMpH,EAAQ+G,KAAK/G,MAEnB,OADA+G,KAAK/G,MAAQ,KACNA,CACP,CACDA,MAAQ,KCfI,MAAAqH,IAAQ,ECARC,IAAQ,ECFRC,GAAO,KACZ,ECQD,SAASC,GAAMtJ,EAAQxD,GAC7B,IAAK,IAAII,EAAQ,EAAGA,EAAQoD,EAAQpD,IACnCJ,EAASI,EAEX,CCnBO,MAAM2M,GACZC,KAAO5K,EAAUQ,KACjB,SAAAR,GACC,CAYD,MAAA6K,CAAOC,GACNC,aAAaD,GACbb,KAAKW,KAAKI,OAAOF,EACjB,CACD,GAAAG,CAAIH,GACH,OAAOb,KAAKW,KAAKK,IAAIH,EACrB,CACD,GAAA/J,CAAI+J,GACH,OAAOb,KAAKW,KAAK7J,IAAI+J,EACrB,CAcD,GAAA7J,CAAIiK,EAAUC,GACb,MAAMC,EAAcnB,KACda,EAAKO,YAAW,KACrBH,IACAE,EAAYP,OAAOC,EAAG,GACpBK,GAEH,OADAlB,KAAKW,KAAK3J,IAAI6J,EAAIP,IACXO,CACP,CAWD,KAAAQ,GACC,MAAMF,EAAcnB,KACpBmB,EAAYR,KAAKtL,SAASwL,IACzBM,EAAYP,OAAOC,EAAG,GAEvB,EAEU,MAACS,GAASvL,EAAU2K,IAgBzB,SAASa,GAAMN,EAAUC,GAC/B,OAAOI,GAAOtK,IAAIiK,EAAUC,EAC7B,CCvFA,MAAMM,GAAc1L,QAAQ2L,MAiBrB,SAASA,GAAMzL,EAAQ0L,EAAczL,GAC3C,GAAI6I,GAAW9I,GACd,OAAOwL,GAAYxL,EAAQ0L,EAAczL,EAE3C,CCFO1B,eAAeoN,GAAe1O,EAAQU,EAAUO,EAAU,CAAA,GAChE,GAAKjB,EAML,aAHMkL,GAAgBlL,GAAQsB,MAAOJ,EAAMiG,EAAKwH,EAAYxD,EAAetG,KAC1E5D,EAAQkG,SAAazG,EAASQ,EAAMiG,EAAKlG,EAAS0N,EAAYxD,EAAetG,EAAW,IAElF5D,CACR,CCLO,SAAS2N,GAAU5O,EAAQU,EAAUO,EAAU,CAAE,EAAEN,EAAUC,GACnE,GAAKZ,EAYL,OATIO,EAASI,GACZyK,GAAWpL,GAAQ,CAACkB,EAAMiG,EAAK0H,EAAU1D,EAAetG,KACvD5D,EAAQkG,GAAOzG,EAASK,KAAKJ,EAAUO,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,EAAYjE,EAAc,IAG/GwK,GAAWpL,GAAQ,CAACkB,EAAMiG,EAAK0H,EAAU1D,EAAetG,KACvD5D,EAAQkG,GAAOzG,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,EAAYjE,EAAc,IAG1FK,CACR,CCxBO,SAAS6N,GAAQ9O,GACvB,OAAOA,GAAQiG,WAChB,CCAO,SAAS8I,GAAU/O,EAAQkD,EAAO,IACxC,MAAM8L,EAAaF,GAAQ9O,GAC3B,OAAIgP,IAAelD,UACM,aAApBkD,EAAWxI,KACP,WAAW,EAGb1D,EAAUkM,EAAY9L,EAC9B,CCEO,SAAS+L,GAASjP,EAAQU,EAAWF,EAAa0O,GACxD,MAAMjO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,CAE3BqP,EADe3O,EAASsF,EAAO/E,EAASjB,GAExC,CACD,OAAOiB,CACP,CACD,MAAMsO,EAAY1D,GAAW5K,EAAQ8C,KACrC,IAAK,MAAOoD,EAAKnB,KAAUhG,EAAQ,CAClC,MAAMyB,EAASf,EAASsF,EAAOmB,EAAKlG,EAASjB,GACzCuP,EACHtO,EAAQ8C,IAAIoD,EAAK1F,GAEjBR,EAAQkG,GAAO1F,CAEhB,CACD,OAAOR,CACR,CCrBOK,eAAekO,GAAcxP,EAAQU,EAAWF,EAAa0O,EAAetD,GAClF,GAAIF,GAAY1L,GAAS,CACxB,MAAMyP,EAAmB,GACzB,UAAW,MAAMvO,KAAQlB,KAAU4L,GAClC6D,EAAiBpO,WAAWX,EAASQ,EAAMuO,EAAkBzP,IAE9D,OAAOyP,CACP,CACD,MAAMxO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,CAE3BqP,QADqB3O,EAASsF,EAAO/E,EAASjB,GAE9C,CACD,OAAOiB,CACP,CACD,MAAMsO,EAAY1D,GAAW5K,EAAQ8C,KACrC,UAAW,MAAOoD,EAAKnB,KAAUhG,EAAQ,CACxC,MAAMyB,QAAef,EAASsF,EAAOmB,EAAKlG,EAASjB,GAC/CuP,EACHtO,EAAQ8C,IAAIoD,EAAK1F,GAEjBR,EAAQkG,GAAO1F,CAEhB,CACD,OAAOR,CACR,CC1BY,MAACyO,GAAMzD,GAAa3E,EAAUC,EAAeqH,GAAWF,GAAgBO,GAAUO,ICNvFlO,eAAeqO,GAAiB3P,EAAQU,GAC9C,IAAKV,EACJ,OAGD,OAAO0E,EADYK,EAAK/E,IACW,CAACmH,EAAKrG,EAAO+N,EAAU1D,IAClDzK,EAASV,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAe0D,IAE3D,CCTO,SAASe,GAAY5P,EAAQU,GACnC,IAAKV,EACJ,OAGD,OAAOwE,EADYO,EAAK/E,IACM,CAACmH,EAAKrG,EAAO+N,EAAU1D,IAC7CzK,EAASV,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAe0D,IAE3D,CCNO,SAASgB,GAAW7P,EAAQU,EAAWF,GAC7C,GAAI8B,EAAQtC,IAAWuL,GAAMvL,GAC5B,IAAK,MAAMgG,KAAShG,EAAQ,CAE3B,IAAe,IADAU,EAASsF,EAAOhG,GAE9B,OAAO,CAER,MAED,IAAK,MAAOmH,EAAKnB,KAAUhG,EAAQ,CAElC,IAAe,IADAU,EAASsF,EAAOmB,EAAKnH,GAEnC,OAAO,CAER,CAEF,OAAO,CACR,CChBOsB,eAAewO,GAAgB9P,EAAQU,EAAWF,EAAaoL,GACrE,GAAIF,GAAY1L,GACf,UAAW,MAAMkB,KAAQlB,KAAU4L,GAAgB,CAElD,IAAe,UADMlL,EAASQ,EAAMlB,GAEnC,OAAO,CAER,MACK,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GACnC,IAAK,MAAMgG,KAAShG,EAAQ,CAE3B,IAAe,UADMU,EAASsF,EAAOhG,GAEpC,OAAO,CAER,MAED,IAAK,MAAOmH,EAAKnB,KAAUhG,EAAQ,CAElC,IAAe,UADMU,EAASsF,EAAOmB,EAAKnH,GAEzC,OAAO,CAER,CAEF,OAAO,CACR,CCvBY,MAAC+P,GAAQ9D,GAAazH,EAAYE,EAAiBkL,GAAaD,GAAkBE,GAAYC,ICvB1G,MAAME,GAAoBlE,SAASmE,UAc5B,SAASC,GAAkBvJ,GACjC,OAAOqJ,GAAkBjP,KAAKuO,KAAK3I,EACpC,CCHY,MAACwJ,GAAerL,OAAOsL,oBActBC,GAAcvL,OAAOwL,yBAoBrBC,GAAUzL,OAAO0L,eACjBC,GAAUP,GAAkBpL,OAAO4L,gBClCnCC,GAAS7L,OAAO8L,GCd7B,MAAM/I,OAAEA,IAAWlG,KCanB,MAAMD,KAAEA,IAASC,KCZL,MAACkP,GAAgB/L,OAAOgM,QCoB7BxP,eAAeyP,GAAsB/Q,EAAQU,EAAWF,EAAaS,EAAU,CAAA,GAOrF,aANMiK,GAAgBlL,GAAQsB,MAAOJ,EAAMiG,EAAK0H,EAAU1D,EAAetG,KACxE,MAAMpD,QAAef,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,GACvEtE,EAASkB,KACZR,EAAQkG,GAAO1F,EACf,IAEKR,CACR,CCPO,SAAS+P,GAAiBhR,EAAQU,EAAWF,EAAaS,EAAU,CAAA,GAO1E,OANAmK,GAAWpL,GAAQ,CAACkB,EAAMiG,EAAK0H,EAAU1D,EAAetG,KACvD,MAAMpD,EAASf,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,GACjEtE,EAASkB,KACZR,EAAQkG,GAAO1F,EACf,IAEKR,CACR,CCZO,SAASgQ,GAAajR,EAAQU,EAAUO,EAAU,CAAA,GAMxD,OALAmK,GAAWpL,GAAQ,CAACkB,EAAMiG,EAAK0H,EAAU1D,EAAetG,MACmB,IAAtEnE,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,KACzD5D,EAAQkG,GAAOjG,EACf,IAEKD,CACR,CCPOK,eAAe4P,GAAkBlR,EAAQU,EAAUO,EAAU,CAAA,GAMnE,aALMiK,GAAgBlL,GAAQsB,MAAOJ,EAAMiG,EAAK0H,EAAU1D,EAAetG,MACQ,UAAtEnE,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,KAC/D5D,EAAQkG,GAAOjG,EACf,IAEKD,CACR,CCRY,MCHCkQ,GAAc1K,EAAyB,UACvC2K,GAAU1K,EAAcyK,ICFxBE,GAAmB,4BACzB,SAASC,GAAYtR,GAC3B,OAAOA,EAAOoF,QAAQiM,GAAkB,OACzC,CCDO,SAASE,GAAavR,EAAQwR,GACpC,OAAIA,EACID,GAAajK,EAAStH,EAAQsR,KAE/BG,OAAOzR,EAAO0R,KAAK,KAC3B,CCPO,SAASC,GAAW3R,GAC1B,GAAKA,EAGL,OAAO+E,EAAK/E,GAAQC,MACrB,CCFY,MChBN2R,GAAgB,UCAtB,MAAMA,GAAgB,UAChBC,GAAQ,QCDd,MAAMD,GAAgB,UAChBC,GAAQ,QCDd,MAAMD,GAAgB,UCAtB,MAAMA,GAAgB,UCoFf,SAASE,GAAWC,EAAQjR,EAAQ,GAC1C,OAAOiR,EAAOC,UAAUlR,EACzB,CCrFA,MAAMmR,GAAoB,oBACpBC,GAAW,KACXC,GAAgB,KAChBC,GAAgB,KAChBC,GAAmB,KAclB,SAASC,GAAaP,GAC5B,OAAOQ,mBAAmBR,EAAO3M,QAAQ6M,IAAmB,IACpD,QAET,CAcO,SAASO,GAAaT,GAC5B,OAAOA,EAAO3M,QAAQ8M,GAAU,SAC9B9M,QAAQ+M,GAAe,QACvB/M,QAAQgN,GAAe,QACvBhN,QAAQiN,GAAkB,SAC7B,CC1CA,MAAMI,GAAgB,OAChBC,GAAa,OCAnB,MAAMC,GAAW,OAcV,SAASC,GAAiBb,GAChC,OAAOA,EAAO,GAAGc,aAClB,CAgBO,SAASC,GAAWf,GAC1B,OAAOa,GAAiBb,GAAUD,GAAWC,EAC9C,CAcO,SAASgB,GAAehB,GAC9B,OAAOa,GAAiBb,GAAUD,GAAWC,GAAQiB,aACtD,CCtCO,SAASC,GAAYjT,GAC3B,OAAO8O,GAAQ9O,IAASwG,IACzB,CCCO,SAAS0M,GAAQlT,GACvB,OAAQO,EAASP,EAClB,CCFY,MAACmT,GAAY1M,EAAyB,OACrC2M,GAAQ1M,EAAcyM,ICH7BE,GAAkB,QAClBC,GAAuB,QACtB,SAASC,GAAavT,GAC5B,GAAIA,EAAQ,CACX,MAAMuG,EAAkB0M,GAAYjT,GACpC,GAAIqT,GAAgB1I,KAAKpE,IAAoBA,IAAoB+M,GAChE,OAAO,CAER,CACD,OAAO,CACR,CCVY,MAACE,GAAe/M,EAAyB,UACxCgN,GAAW/M,EAAc8M,ICAzBE,GAAgBjN,EAAyB,WACzCkN,GAAYjN,EAAcgN,ICF1BE,GAAoBnN,EAAyB,eAC7CoN,GAAgBnN,EAAckN,ICF3C,MAAME,GAAmBrC,OAAO,uKCCpB,MAACsC,GAAatN,EAAyB,QACtCuN,GAAStN,EAAcqN,ICA7B,SAASE,GAAQjU,GACvB,OAAkB,IAAXA,CACR,CCHY,MAACkU,GAAYzN,EAAyB,gBACrC0N,GAAQzN,EAAcwN,ICAtBE,GAAY3N,EAAyB,gBACrC4N,GAAQ3N,EAAc0N,KChB7BE,UAAEA,IAAcC,OAcTC,GAAUF,GCCVG,GAAYhO,EAAyB,cACrCiO,GAAQhO,EAAc+N,ICHtBE,GAAYlO,EAAyB,cACrCmO,GAAQlO,EAAciO,ICCtBE,GAAWpO,EAAyB,aACpCqO,GAAOpO,EAAcmO,ICH3B,SAASE,GAAU/U,GACzB,QAAIA,GACIA,aAAkBgV,OAG3B,CCHO,SAASC,GAAYjV,GAC3B,QAAIA,IACI+U,GAAU/U,IAAWgM,GAAQhM,IAAW0L,GAAY1L,GAG7D,CCpBA,MAAMkV,cAAEA,IAAkBX,OAcbY,GAAYD,GCCb,MAACE,GAAY3O,EAAyB,eACrC4O,GAAQ3O,EAAc0O,ICDtBE,GAAY7O,EAAyB,eACrC8O,GAAQ7O,EAAc4O,ICDtBE,GAAW/O,EAAyB,cACpCgP,GAAO/O,EAAc8O,ICDrBE,GAAYjP,EAAyB,qBACrCkP,GAAQjP,EAAcgP,ICDtBE,GAAgBnP,EAAyB,WACzCoP,GAAYnP,EAAckP,IChB1BE,QAAoC,IAApBC,WAAWC,KCA3BC,QAAyC,IAAvBF,WAAWG,SAA2BA,QAAQC,UAAYD,QAAQC,SAASC,KCenG,SAASC,GAASrW,EAAQsW,GAAe,GAC/C,OAAOjW,QAAQL,IAAWsW,CAC3B,CCDO,SAASC,GAASvW,EAAQ+C,GAChC,OAAOkR,GAAQjN,EAAQhH,EAAQ+C,GAChC,CClBA,MAAMyT,GAAaC,KAiCN,MAAAC,GAAYF,GAAWE,UC7BpC,SAASC,GAAkB3W,EAAQ4W,EAAUC,GAC5C,MAAMC,EAAUf,WAAWe,SAAWD,EACtC,IAAIE,EAMJ,OALIlL,GAAWiL,GACdC,EAAa,GAAGD,EAAQtQ,UAAUsQ,EAAQ7Q,YAAYO,OAC5CsQ,IACVC,EAAa,GAAGD,EAAQE,OAASF,EAAQnQ,OAAOH,WAAWsQ,EAAQG,QAE7D,IAAIC,MAAM,gBAAgBH,kBACtBL,GAAU1W,qBACR0W,GAAUE,KAAaE,EACrC,CACOxV,eAAe6V,GAAYC,EAAWR,EAAUE,GACtD,MAAM9W,QAAeoX,EAErB,QADyBvL,GAAW+K,KAAiD,UAA9BA,EAAS5W,EAAQ8W,MAChDP,GAASvW,EAAQ4W,IACjCD,GAAkB3W,EAAQ4W,EAAUE,EAG7C,CCVA,MAAMO,GAAsBtB,WAAWuB,gBCchChW,eAAeiW,GAAqBvX,EAAQU,EAAWF,EAAa0O,EAAetD,GACzF,GAAIF,GAAY1L,GAAS,CACxB,MAAMyP,EAAmB,GACzB,UAAW,MAAMvO,KAAQlB,KAAU4L,GAAgB,CAClD,MAAMnK,QAAef,EAASQ,EAAMuO,EAAkBzP,GAClDO,EAASkB,IACZgO,EAAiBpO,KAAKI,EAEvB,CACD,OAAOgO,CACP,CACD,MAAMxO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,CAC3B,MAAMyB,QAAef,EAASsF,EAAO/E,EAASjB,GAC1CO,EAASkB,IACZ4N,EAAgB5N,EAEjB,CACD,OAAOR,CACP,CACD,MAAMsO,EAAY1D,GAAW5K,EAAQ8C,KACrC,UAAW,MAAOoD,EAAKnB,KAAUhG,EAAQ,CACxC,MAAMyB,QAAef,EAASsF,EAAOmB,EAAKlG,EAASjB,GAC/CO,EAASkB,KACR8N,EACHtO,EAAQ8C,IAAIoD,EAAK1F,GAEjBR,EAAQkG,GAAO1F,EAGjB,CACD,OAAOR,CACR,CCnCO,SAASuW,GAAgBxX,EAAQU,EAAWF,EAAa0O,GAC/D,MAAMjO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,CAC3B,MAAMyB,EAASf,EAASsF,EAAO/E,EAASjB,GACpCO,EAASkB,IACZ4N,EAAgB5N,EAEjB,CACD,OAAOR,CACP,CACD,MAAMsO,EAAY1D,GAAW5K,EAAQ8C,KACrC,IAAK,MAAOoD,EAAKnB,KAAUhG,EAAQ,CAClC,MAAMyB,EAASf,EAASsF,EAAOmB,EAAKlG,EAASjB,GACzCO,EAASkB,KACR8N,EACHtO,EAAQ8C,IAAIoD,EAAK1F,GAEjBR,EAAQkG,GAAO1F,EAGjB,CACD,OAAOR,CACR,CC5BY,MAACwW,GAAaxL,GAAajL,EAAiBQ,EACvDwP,GAAkBD,GAAuByG,GAAiBD,ICCpD,SAASG,GAAY1X,EAAQU,EAAWF,EAAa0O,GAC3D,MAAMjO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,EAEZ,IADAU,EAASsF,EAAO/E,EAASjB,IAEvCqP,EAAgBrJ,EAEjB,CACH,KAAQ,CACN,MAAMuJ,EAAY1D,GAAW5K,EAAQ8C,KACrC,IAAK,MAAOoD,EAAKnB,KAAUhG,EAAQ,EAEnB,IADAU,EAASsF,EAAOmB,EAAKlG,EAASjB,KAExCuP,EACHtO,EAAQ8C,IAAIoD,EAAKnB,GAEjB/E,EAAQkG,GAAOnB,EAGjB,CACD,CACD,OAAO/E,CACR,CCxBOK,eAAeqW,GAAiB3X,EAAQU,EAAWF,EAAa0O,EAAetD,GACrF,GAAIF,GAAY1L,GAAS,CACxB,MAAMyP,EAAmB,GACzB,UAAW,MAAMvO,KAAQlB,KAAU4L,IACqB,UAA7ClL,EAASQ,EAAMuO,EAAkBzP,IAC1CyP,EAAiBpO,KAAKH,GAGxB,OAAOuO,CACP,CACD,MAAMxO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,EAEZ,UADMU,EAASsF,EAAO/E,EAASjB,IAE7CqP,EAAgBrJ,EAEjB,CACH,KAAQ,CACN,MAAMuJ,EAAY1D,GAAW5K,EAAQ8C,KACrC,UAAW,MAAOoD,EAAKnB,KAAUhG,EAAQ,EAEzB,UADMU,EAASsF,EAAOmB,EAAKlG,EAASjB,KAE9CuP,EACHtO,EAAQ8C,IAAIoD,EAAKnB,GAEjB/E,EAAQkG,GAAOnB,EAGjB,CACD,CACD,OAAO/E,CACR,CCrCY,MAAC6H,GAASmD,GAAatH,EAAaC,EAAkBqM,GAAcC,GAAmBwG,GAAaC,ICtBhH,SAASC,GAAW5J,GACnB,MAAO,IAAIlB,IACF+K,IACP,IAAI7R,EAAQ6R,EAIZ,OAHA7J,EAASlB,GAAU5L,IAClB8E,EAAQ9E,EAAK8E,EAAM,IAEbA,CAAK,CAGf,CAcY,MAAC8R,GAAOF,GAAWnX,GAclBsX,GAAYH,GAAWvT,GCtCpC,SAASuT,GAAW5J,GACnB,MAAO,IAAIlB,IACHxL,MAAOuW,IACb,IAAI7R,EAAQ6R,EAIZ,aAHM7J,EAASlB,GAASxL,MAAOJ,IAC9B8E,QAAc9E,EAAK8E,EAAM,IAEnBA,CAAK,CAGf,CAeY,MAACgS,GAAYJ,GAAWrW,GAevB0W,GAAiBL,GAAWrT,GC7B7B,MAAC2T,GAASzN,GAAiB,MCRhC,MAAM0N,GACZzK,KAAO5K,EAAUQ,KACjB,SAAAR,GACC,CAWD,MAAA6K,CAAOC,GACNwK,cAAcxK,GACdb,KAAKW,KAAKI,OAAOF,EACjB,CACD,GAAAG,CAAIH,GACH,OAAOb,KAAKW,KAAKK,IAAIH,EACrB,CACD,GAAA/J,CAAI+J,GACH,OAAOb,KAAKW,KAAK7J,IAAI+J,EACrB,CAaD,GAAA7J,CAAIiK,EAAUC,GAEb,MAAML,EAAKyK,aAAY,KACtBrK,GAAU,GACRC,GAEH,OADAlB,KAAKW,KAAK3J,IAAI6J,EAAIP,IACXO,CACP,CAUD,KAAAQ,GACC,MAAMF,EAAcnB,KACpBmB,EAAYR,KAAKtL,SAASwL,IACzBM,EAAYP,OAAOC,EAAG,GAEvB,EAEU,MAAC0K,GAAYxV,EAAUqV,IChD5B,MAAMI,GACZC,cAAgB,CAAA,EAChB,WAAAvS,CAAYwS,EAAWC,GAClBnY,EAASmY,IACZzN,GAAO8B,KAAM2L,GACb3L,KAAK0L,UAAYA,EACjBF,GAAMI,OAAO5U,IAAI0U,EAAWC,IAE5BzN,GAAO8B,KAAM0L,EAEd,EC1BK,MAAMG,GACZ5Y,OACA,WAAAiG,CAAYjG,EAAS,IAEpB,GADA+M,KAAK/M,OAASA,EACC,OAAXA,GAAqC,iBAAXA,EAC7B,OAAOA,EAERoL,GAAWpL,GAAS6Y,IACnB7Y,EAAO6Y,GAAY,IAAID,GAAM5Y,EAAO6Y,GAAU,IAE/C9L,KAAK+L,KAAO,IAAIC,MAAM/Y,EAAQ,CAC7B6D,IAAG,CAACmV,EAAaH,KAChBI,QAAQC,IAAIF,EAAaH,EAAUG,EAAYH,IACxCG,EAAYH,IAEpB9U,IAAG,CAACiV,EAAaH,EAAU7S,KAC1BiT,QAAQC,IAAIF,EAAaH,EAAUG,EAAYH,IAC/CG,EAAYH,GAAY,IAAID,GAAM5S,IAC3B,IAGT,ECCK,MAAMmT,GACZC,YAAc,EACdC,MAAQ,GACRC,UAAY,EAeZ,GAAAzV,GACC,IAAIpC,EAASsL,KAAKsM,MAAME,QAOxB,OANIhZ,EAASkB,GACZsL,KAAKuM,aAEL7X,EAASsL,KAAKqM,YACdrM,KAAKqM,eAEC3X,CACP,CAkBD,IAAA+X,CAAK5L,GACJb,KAAKsM,MAAMhY,KAAKuM,GAChBb,KAAKuM,YACL,MAAMG,EAAW1M,KAAKqM,YAAc,EAC9BM,EAAc3M,KAAKqM,cAAgBrM,KAAKuM,UAC1CG,GAAYC,GACf3M,KAAK4M,OAEN,CACD,KAAAA,GACC5M,KAAKqM,YAAc,EACnBrM,KAAKsM,MAAMpZ,OAAS,EACpB8M,KAAKuM,UAAY,CACjB,EAeU,MAACM,GAAS9W,EAAUqW,ICnFzB,MAAMU,GACZ,WAAA5T,CAAY6T,EAAgB,IAC3B/M,KAAKgN,MAAQD,CACb,CAcD,OAAAE,CAAQ7S,GACP,OAAO4F,KAAKgN,MAAM5S,EAClB,CAcD,OAAA8S,CAAQ9S,EAAKnB,GACZ+G,KAAKgN,MAAM5S,GAAOnB,CAClB,CAeD,KAAAoI,GACCrB,KAAKgN,MAAQ,EACb,CAeD,UAAAG,CAAW/S,GACV4F,KAAKgN,MAAM5S,GAAO,IAClB,oGCpEK,SAAagT,EAAQC,GAC3B,OAAOD,EAASC,CACjB,UCMO,SAAelW,EAAQ8J,GAC7B,IACIhI,EADAqU,EAAQnW,EAYZ,MAVkB,IAAIhB,KACP,OAAVmX,GACHA,IAEGA,GAAS,IACZrU,EAAQgI,KAAY9K,GACpBmX,EAAQ,MAEFrU,EAGT,gDCrBO,SAAwBhG,EAAQ0F,GACtC,MAAM4U,EAAe,CAAA,EAIrB,OAHA7Z,EAAUT,GAAQ,CAACkB,EAAMiG,KACxBmT,EAAa5U,EAAWyB,IAAQjG,CAAI,IAE9BoZ,CACR,QCPO,SAAatM,EAAU9J,GAC7B,MAAO,IAAIhB,IACH8K,KAAY9K,EAAKkB,OAAO,EAAGF,GAEpC,WnBuBO,SAAgBlE,EAAQ4W,EAAUE,GACxC,OAAI7B,GAAYjV,IAAWiV,GAAY2B,GAC/BO,GAAYnX,EAAQ4W,EAAUE,KAEbjL,GAAW+K,KAA2C,IAA9BA,EAAS5W,EAAQ8W,MAC1CP,GAASvW,EAAQ4W,IACjCD,GAAkB3W,EAAQ4W,EAAUE,EAG7C,wCoBnCO,SAAgB5S,EAAQ8J,GAC9B,IACIhI,EADAqU,EAAQnW,EAaZ,MAXmB,IAAIhB,KACR,OAAVmX,GACHA,IAEGA,GAAS,EACZrU,EAAQgI,KAAY9K,GAEpBmX,EAAQ,KAEFrU,EAGT,YCVO,SAAiB4D,EAAY2Q,EAAUC,GAC7C,MAAMvZ,EAAUyO,GAAI9F,GAAa1I,GACzB2K,GAAW3K,GAAQA,EAAKoO,KAAKiL,GAAYrZ,IAEjD,OAAO,EAAiB+J,GAAOuP,EAAcvZ,GAAWA,CACzD,wCCXO,SAAsBwZ,EAAOC,GACnC,OAAc,IAAVD,IAGkB,IAAlBC,EACI,EAEAA,EAAgBD,EAAS,IAClC,c5DRO,SAAmBza,GACzB,IAAIyB,EAAS,GAUb,OATAzB,EAAOoF,QAAQwM,GAAe,KAAKzL,OACjCd,MAAM,KACNjD,SAAQ,CAAClB,EAAMJ,KAEdW,GADa,IAAVX,EACOI,EAAK8R,cAEL9R,EAAK,GAAG2R,cAAgB3R,EAAKkF,MAAM,GAAG4M,aAChD,IAEIvR,CACR,UnCsBO,SAAekZ,GACrB,OAAO7X,EAAU+J,GAAO,CAAC8N,GAC1B,UgGpCO,SAAe1W,EAAO2W,EAAO,GACnC,MAAMC,EAAU,GAChB,IAAI/Z,EAAQ,EAUZ,OATAmD,EAAM7B,SAAQ,CAAClB,EAAMiG,KACdA,EAAMyT,IACXC,EAAQxZ,KAAK,IACT8F,GACHrG,KAGF+Z,EAAQ/Z,GAAOO,KAAKH,EAAK,IAEnB2Z,CACR,gBxDuBO,SAAqB9I,EAAQ6I,GACnC,OAAO7I,EAAO+I,MAAM,IAAIrJ,OAAO,gBAAgBmJ,KAAS,KACzD,UyDnCO,SAAe5a,GACrB,GAAIA,EAAQ,CACX,GAAI+G,EAAS/G,GACZ,OAAO+I,GAAY/I,GACb,GAAIsC,EAAQtC,GAClB,OAAOD,EAAWC,GACRA,EAAOoO,MACjBpO,EAAOoO,QACGpO,EAAOC,SACjBD,EAAOC,OAAS,EAEjB,CACD,OAAOD,CACR,mDbgEO,WAENwN,GADWW,WAAWZ,GAAM,IACjBzM,IACVwX,GAAU3K,OAAO7M,EAAM,GAEzB,gB/ECO,WAEN0M,GADWW,WAAWZ,GAAM,IACjBzM,IACVuN,GAAOV,OAAO7M,EAAM,GAEtB,UqE3FO,SAAed,GACrB,OAAOqX,GAAoBrX,EAC5B,ewBHO,SAAoBA,GAC1B,OAAOA,EAAOoG,OACf,2BCCO,SAAiBpG,GACvB,GAAI+F,EAAc/F,GAAS,CAC1B,MAAM+a,EAAahW,EAAK/E,GAClBgb,EAAmBD,EAAW9a,OAC9Bgb,EAAe,CAAA,EACrB,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAkBE,IAAK,CAC1C,MAAMC,EAAUJ,EAAWG,GACrBha,EAAOlB,EAAOmb,GACD9E,GAASnV,KAE3B+Z,EAAaE,GAAWja,EAEzB,CACD,OAAO+Z,CACP,CACD,OAAOjb,EAAO8I,QAAQ5H,GACdmV,GAASnV,IAElB,gBClBO,SAAqBka,GAC3B,MAAMC,EAAgB,GAMtB,OALAjQ,GAAWgQ,GAAQ,CAACla,EAAMiG,KACrB5G,EAASW,IACZma,EAAcha,KAAK8F,EACnB,IAEKkU,CACR,6HCHO,SAAoBrb,EAAQU,EAAU4D,GAC5C,MAAMzD,EAAcb,EAAOC,OACrBqb,EAAQ,GACd,IAAK,IAAIxa,EAAQ,EAAEA,EAAQD,EAAaC,IACvCwa,EAAMxa,GAASJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAayD,GAEpE,OAAO0Q,QAAQuG,IAAID,EACpB,qBCPO,SAA0Btb,EAAQU,EAAU4D,GAClD,MAAMzD,EAAcb,EAAOC,OACrBqb,EAAQ,GACd,IAAK,IAAIxa,EAAQ,EAAEA,EAAQD,EAAaC,IACvCwa,EAAMxa,GAASJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAayD,GAEpE,OAAO0Q,QAAQwG,WAAWF,EAC3B,8CCZO,SAAiB1R,EAAYlJ,GACnC,MAAM0a,EAAS,CAAA,EACf,IAAI3Z,EAQJ,OAPAhB,EAAUmJ,GAAa1I,IACtBO,EAASf,EAASQ,GACbka,EAAO3Z,KACX2Z,EAAO3Z,GAAU,GAElB2Z,EAAO3Z,IAAS,IAEV2Z,CACR,aCZO,SAAkBxR,EAAYR,GACpC,IAAItF,EAAQ,EAMZ,OALArD,EAAUmJ,GAAa1I,IAClBA,EAAKkI,IACRtF,GACA,IAEKA,CACR,oBCRO,SAAyB8F,EAAYR,GAC3C,IAAItF,EAAQ,EAMZ,OALArD,EAAUmJ,GAAa1I,IACjBA,EAAKkI,IACTtF,GACA,IAEKA,CACR,UCLO,SAAekK,EAAUyN,EAAQzN,EAAS/N,QAChD,MAAMyb,EAAU,GACVC,EAAU,IAAIC,KAEnB,GADAF,EAAQra,QAAQua,GACZF,EAAQzb,SAAWwb,EAAO,CAC7B,MAAMha,EAASuM,KAAY0N,GAE3B,OADA3b,EAAW2b,GACJja,CACP,CACD,OAAOka,CAAO,EAEf,OAAOA,CACR,eCbO,SAAoB3N,EAAUyN,EAAQzN,EAAS/N,QACrD,MAAMyb,EAAU,GACVC,EAAU,IAAIC,KAEnB,GADAF,EAAQG,WAAWD,GACfF,EAAQzb,SAAWwb,EAAO,CAC7B,MAAMha,EAASuM,KAAY0N,GAE3B,OADA3b,EAAW2b,GACJja,CACP,CACD,OAAOka,CAAO,EAEf,OAAOA,CACR,aCRO,SAAkB3N,EAAUC,GAClC,SAAS6N,KAAa5Y,GACjB4Y,EAAUlO,KAAON,IACpBe,GAAOV,OAAOmO,EAAUlO,IAEzBkO,EAAUlO,GAAKU,IAAM,KACpBwN,EAAU9N,YAAY9K,GACtB4Y,EAAUlO,GAAKN,EAAK,GAClBW,EACH,CASD,OARA6N,EAAUlO,GAAKN,GACfwO,EAAU9N,SAAWA,EAASsB,KAAKwM,GACnCA,EAAU1N,MAAQ,KACb0N,EAAUlO,KAAON,KACpBe,GAAOV,OAAOmO,EAAUlO,IACxBkO,EAAUlO,GAAKN,GACf,EAEKwO,CACR,WCzBO,SAAgB9b,GACtB,OAAOA,EAAS,CACjB,uCCHO,SAAgBA,EAAQgG,GAC9B,OAAOhG,EAASgG,CACjB,uBCCyB,CAAC/B,EAAOC,EAAS,EAAGC,EAAOF,EAAMhE,SAClD+D,EAAKC,EAAO,EAAGE,EAAOD,mJCHvB,SAAsBlE,GAC5B,OAAQ+G,EAAS/G,IAAWA,GAAYO,EAASP,IAAW+b,OAAO9T,KAAKjI,IAAY+b,OAAOC,MAAM,EAClG,+DCfO,YAAqBlP,GAC3B,OAAId,GAAQc,EAAQ,IACZxL,kBAAkB4B,GACxB,OAAO6M,GAAMjD,GAASxL,MAAOqF,GACrBoJ,GAAM7M,GAAM5B,MAAOJ,GAClByF,EAAOzF,MAGnB,EAEQ,YAAYgC,GAClB,OAAO6M,GAAMjD,GAAUnG,GACfoJ,GAAM7M,GAAOhC,GACZyF,EAAOzF,MAGlB,CACA,6LCHO,SAAmB0I,EAAYgE,EAAIxE,EAAe,MACxD,MAAM3H,EAASmI,EAAWqS,WAAU,CAAC/S,EAASpI,IACtCmI,GAAeC,EAASpI,EAAO8I,EAAYgE,EAAIxE,KAEvD,OAAoB,IAAZ3H,GAAyBA,CAClC,iCCLO,SAAkBmI,EAAYgE,EAAIxE,EAAe,MACvD,MAAM3H,EAASmI,EAAWsS,MAAK,CAAChT,EAASpI,IACjCmI,GAAeC,EAASpI,EAAO8I,EAAYgE,EAAIxE,KAEvD,OAAoB,IAAZ3H,GAAyBA,CAClC,UCPO,SAAewC,EAAOE,GAC5B,OAAO,EAASF,EAAMmC,MAAM,EAAGjC,GAAQF,EAAM,EAC9C,YCDO,SAAiBjE,EAAQmc,EAAQ,GACvC,IAAKnc,EACJ,OAED,IAAIiC,EAAcjC,EAClB,IAAK,IAAIkb,EAAI,EAAGA,EAAIiB,EAAOjB,IAC1BjZ,EAAcA,EAAYma,QAAO,CAACC,EAAeC,IACzCD,EAAcE,OAAO/Z,EAAY8Z,KACtC,IAEJ,OAAOra,CACR,yGC1BOX,eAA4BtB,EAAQqC,GAC1C,MAAMma,EAAS,GACT9W,EAAa,GACnB,IAAI+W,EAAe,EACnBzc,EAAOoC,SAAQ,CAAClB,EAAMiG,KACrBqV,EAAOC,GAAgBvb,EACvBwE,EAAW+W,GAAgBvb,EAC3Bub,GAAc,IAEf,IAAK,IAAI3b,EAAQ,EAAGA,EAAQ2b,EAAc3b,UACnCuB,EAASma,EAAO1b,GAAQ4E,EAAW5E,IAE1C,OAAOd,CACR,WCVO,SAAgBA,EAAQqC,GAC9B,MAAMqa,EAAS3N,GAAU/O,GACnB2G,EAAS+V,EAAOrb,MAAQqb,EAAOtN,IACrC,GAAIzI,GAAUkF,GAAWlF,GAAS,CACjC,MAAMgW,EAAchW,EAAO2I,KAAKoN,GAChC1c,EAAOoC,SAASlB,IACf,MAAMO,EAASY,EAASnB,EAAMwb,GAC9BC,EAAYlb,EAAO,GAEpB,MAAUoK,GAAW6Q,EAAO3Y,KAC5B/D,EAAOoC,SAAQ,CAAClB,EAAMiG,KACrB,MAAM1F,EAASY,EAASnB,EAAMiG,EAAKuV,GACnCA,EAAO3Y,IAAIoD,EAAK1F,EAAO,IAGxBzB,EAAOoC,SAAQ,CAAClB,EAAMiG,KACrB,MAAM1F,EAASY,EAASnB,EAAMiG,EAAKuV,GACnCA,EAAOvV,GAAO1F,CAAM,IAGtB,OAAOib,CACR,gO/FVO,SAAoB1c,GAC1B,GAAIO,EAASP,GACZ,OAAO6Q,GAAc7Q,EAEvB,qBgGNO,SAA0BA,GAChC,GAAIA,EACH,OAAOA,EAAOgS,UAAUhS,EAAO4c,YAAY,KAAO,EAEpD,gBCJO,SAAqB5c,GAC3B,GAAIA,EACH,OAAOA,EAAOgS,UAAUhS,EAAO4c,YAAY,KAAO,EAEpD,eCAO,SAAoBhT,EAAYR,EAAe,MACrD,OAAOa,GAAwBL,EAAYR,GAAc,EAC1D,cCDO,SAAmBQ,EAAYR,GACrC,OAAOO,GAAyBC,EAAYR,GAAc,GAAO,EAClE,yBCJO,SAA8BpJ,EAAQ+C,GAC5C,IAAI8Z,EAAc,EAUlB,OATArY,EAAWxE,GAAQ,CAACkB,EAAMJ,KACzB+b,EAAc/b,EACViC,GAAU7B,IACb2b,EAAc/b,EAAQ,GACf,MAKF+b,CACR,6ECVO,SAAiBjT,EAAYlJ,GACnC,MAAM4Z,EAAe,CAAA,EAQrB,OAPA7Z,EAAUmJ,GAAa1I,IACtB,MAAMD,EAAUP,EAASQ,GACpBoZ,EAAarZ,KACjBqZ,EAAarZ,GAAW,IAEzBqZ,EAAarZ,GAASI,KAAKH,EAAK,IAE1BoZ,CACR,QCNO,SAASvM,EAAI/N,EAAQ8c,EAAQ5a,GACnC,GAAIgR,GAAQlT,IAAWkT,GAAQ4J,GAC9B,OAAO,EAER,GAAI1S,GAASpK,GACZ,OAAIoK,GAAS0S,GACL9c,EAAO+c,SAASD,EAAQ5a,GAE5BkP,GAAQ0L,GACJA,EAAOnS,KAAK3K,GAEhB6L,GAAWiR,GACPzc,QAAQyc,EAAO9c,IAEhB+P,GAAM+M,GAAS5b,GACdb,QAAQ0N,EAAI/N,EAAQkB,MAG7B,GAAIoB,EAAQtC,GAAS,CACpB,GAAIoK,GAAS0S,GACZ,OAAO9c,EAAO+c,SAASD,EAAQ5a,GAEhC,GAAIkP,GAAQ0L,GACX,OAAO/M,GAAM/P,GAASkB,GACdA,EAAKyJ,KAAKmS,KAGnB,GAAIxa,EAAQwa,GACX,OAAO/M,GAAM+M,GAAS5b,GACdb,QAAQ0N,EAAI/N,EAAQkB,KAG7B,CACD,OAAO,CACR,evKHO,SAAoBlB,KAAW0F,GACrC,GAAK1F,EAGL,OAAOK,QAAQqF,EAAWwW,MAAMhb,IAC/B,MAAMyE,EAAYR,EAAOjE,GACzB,GAAyB,IAArByE,EAAU1F,OACb,OAAOuF,EAAOxF,EAAQkB,GAChB,CACN,MAAM0E,EAAWD,EAAUE,MACrBC,EAAoBjC,EAAI8B,EAAW3F,GACzC,QAAI8F,GACIN,EAAOM,EAAmBF,EAGlC,KAEH,+FwKtDO,SAAkBoI,KAAa9K,GACrC,GAAI2I,GAAWmC,GACd,OAAOA,KAAY9K,EAErB,gBCH2B,CAAC8Z,EAAYnE,EAAUoE,KAC7CpE,IAAatY,EAASyc,EAAWnE,MACpCmE,EAAWnE,GAAYoE,GAEjBD,aCDD,SAAiBhd,EAAQ+C,EAAQma,EAAUha,GACjD,GAAI3C,EAASP,GAAS,CACrB,GAAI6L,GAAW9I,GACd,OAAIma,EACI1O,GAAMzL,EAAQma,EAAUha,GAEzBH,KAAUG,GACX,GAAI6C,EAAchD,GAExB,OADAA,EAAOma,GAAYld,EACZ+C,CAER,CACF,YCTOzB,eAAuBtB,EAAQmd,GACrC,MAAMtc,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQ,EAAGA,EAAQD,EAAaC,IAAS,CACjD,MAAM6F,EAAS3G,EAAOc,SAChB6F,EAAOwW,EAAerc,EAAOd,EAAQa,EAC3C,CACD,OAAOb,CACR,WCLsB,CAAC4J,EAAY5D,IAC3B4G,GAAKhD,GAAa1I,IACxBA,EAAK8E,EAAM,gBCXN,SAAmBhG,GACzB,OAAOA,EAAS,CACjB,YCAO,SAAiB4J,EAAYR,EAAe,MAClD,MAAMkR,EAAe,CAAA,EAIrB,OAHA7Z,EAAUmJ,GAAa1I,IACtBoZ,EAAapZ,EAAKkI,IAAiBlI,CAAI,IAEjCoZ,CACR,YCVO,SAAiBrW,GACvB,OAAOA,EAAMmC,MAAM,EAAGnC,EAAMhE,OAAS,EACtC,kB9FoDO,SAAuB8R,EAAQjR,EAAQ,GAC7C,OAAOiR,EAAO3L,MAAM,GAAY,EAATtF,EACxB,kBAtDO,SAAuBiR,EAAQjR,EAAOsc,GAC5C,OAAOrL,EAAO3L,MAAM,EAAGtF,GAASsc,EAAOrL,EAAO3L,MAAMtF,EAAOiR,EAAO9R,OACnE,iB+FAO,SAAsBgE,KAAUoZ,GACtC,OAAOrc,EAAgBiD,GAAQ/C,IAI9B,GAHqBsD,EAAW6Y,GAASC,GACjCA,EAAUP,SAAS7b,KAG1B,OAAOA,CACP,GAEH,anDsDO,SAAkB8M,EAAUC,GAClC,OAAOqK,GAAUvU,IAAIiK,EAAUC,EAChC,0BoDlEO,SAAgBjO,EAAQ+C,EAAS,IACvC,GAAK/C,EAML,OAHAoL,GAAWpL,GAAQ,CAACkB,EAAMiG,KACzBpE,EAAO7B,GAAQiG,CAAG,IAEZpE,CACR,WCRO,SAAgB6G,EAAYiP,EAAU7S,GAC5C,OAAOsB,EAASsC,GAAY,CAAC1I,EAAMJ,IAC3BI,EAAK2X,GAAU7S,EAAOlF,IAE/B,gBCGO,SAAqB8I,EAAYiP,EAAU7S,GACjD,OAAOuB,EAAcqC,GAAYtI,MAAOJ,EAAMJ,IACtCI,EAAK2X,GAAU7S,EAAOlF,IAE/B,gBCZO,SAAqBd,GAC3B,QAAQO,EAASP,IAFM,uBAEKA,EAAOkG,UACpC,sECMO,SAAqBlG,EAAQud,GACnC,GAAIrK,GAAQlT,IAAW6L,GAAW7L,GACjC,OAAO,EAER,GAAIsC,EAAQtC,IAAWuT,GAAavT,GACnC,OAAO,EAER,MAAMyE,EAAezE,EAAOC,OAC5B,IAAKiT,GAAQzO,KAAkB0F,GAAS1F,IAAiBA,EAAe,EACvE,OAAO,EAER,GAAI8Y,EAAY,CACf,MAAMC,EAAUzY,EAAK/E,GACrB,QAAIwd,GACIzN,GAAMyN,GAAS,CAACxX,EAAOlF,IACtBA,GAAS,GAAKqJ,GAASrJ,IAIhC,CACD,OAAO,CACR,0ICxBO,SAAiB2c,EAAaC,GACpC,SAAKD,IAAgBC,IAGdD,aAAuBC,CAC/B,gB1FXO,SAAqB1d,GAC3B,GAAIO,EAASP,GAAS,CACrB,MAAMuG,EAAkBvG,GAAQiG,aAAaO,KAC7C,OAAOsN,GAAiBnJ,KAAKpE,EAC7B,CACD,OAAO,CACR,4H2FFO,SAAiBvG,GACvB,OAAIoK,GAASpK,IAAWsC,EAAQtC,IACvBI,EAAUJ,GACR+F,EAAc/F,IAChB2R,GAAW3R,IAEZO,EAASP,EAClB,yFCVO,SAAiBA,EAAQsW,GAAe,GAC9C,OAA2B,IAApBjW,QAAQL,IAAqBsW,CACrC,2NCFO,SAAoBtW,GAC1B,OAAOO,EAASP,IAA8C,mBAA5BA,EAAO2d,OAAOC,SACjD,4DCDO,SAAsB5d,EAAQ6d,GACpC,OAAI7d,EAAOC,SAAW4d,EAAa5d,QAC3BuE,EAAWxE,GAAQ,CAACkB,EAAMJ,IACzBkG,EAAQ6W,EAAa/c,GAAQI,IAIvC,kBpHN6B,CAAClB,EAAQ+C,KACrC,GAAI/C,IAAW+C,EACd,OAAO,EAER,MAAMgY,EAAahW,EAAK/E,GAClB8d,EAAa/Y,EAAKhC,GACxB,OAAIgY,EAAW9a,SAAW6d,EAAW7d,QAC7BuE,EAAWuW,GAAa5T,GACvBnH,EAAOmH,KAASpE,EAAOoE,IAGpB,4CrFDN,SAAoBnH,GAC1B,OAAQsC,EAAQtC,EACjB,gBoCDO,SAAqBA,GAC3B,OAAQmK,GAASnK,EAClB,gBCDO,SAAqBA,GAC3B,OAAQoK,GAASpK,EAClB,6DqKjBO,SAAuBA,EAAQ+C,GACrC,OAAO/C,IAAW+C,CACnB,oBCAO,SAAyB/C,EAAQ8B,EAAOC,GAC9C,OAAO/B,EAAS8B,GAAS9B,EAAS+B,CACnC,uBCFO,SAA4B/B,EAAQ8B,EAAOC,GACjD,OAAO/B,EAAS8B,GAAS9B,EAAS+B,CACnC,aCEO,SAAkBgc,EAAcC,GACtC,SAAKD,GAAiBC,GAAgBA,EAAYjd,OAG3Cgd,aAAwBC,CAChC,iC9HXO,SAAoBhe,GAC1B,OAAwB,IAAjB0B,GAAK1B,EACb,gB+HHO,SAAqBA,GAC3B,MAAMie,SAAcjY,MACpB,OAAOhG,SAAqD,WAATie,GAA8B,aAATA,CACzE,2DCMO,SAAmBC,EAAWC,GACpC,OAAIjL,GAAQgL,KAAchL,GAAQiL,KAG9BD,EAAUnd,KACNod,aAAqBD,EAEzBC,EAAUpd,KACNmd,aAAqBC,EAEtBA,EAAUlY,cAAgBiY,EAAUjY,YAC5C,0CChCO,SAAoBjG,EAAQoe,GAClC,MAAMpP,EAAaF,GAAQ9O,GACrBqe,EAAYvP,GAAQsP,GAC1B,OAAIpP,IAAeqP,GACdrP,EAAWxI,OAAS6X,EAAU7X,IAKpC,mDCKO,SAAgBxG,GACtB,OAAkB,IAAXA,CACR,qNCJO,SAAgBA,GACtB,OAAkB,IAAXA,CACR,clFAO,SAAmBA,EAAQse,GACjC,GAAIte,EACH,OAAOwW,GAAW+H,MAAMve,EAAQse,EAElC,cpCJO,SAAmBte,GACzB,OAAOA,EAAOoF,QAAQ,YAAa,OACjCA,QAAQwM,GAAe,KACvBzL,OACA6M,cACA5N,QAAQyM,GAAO,IAClB,qBvEPO,SAAiB5N,GACvB,OAAOmD,KAAiBnD,EACzB,S8LFO,SAAcA,EAAOua,GAC3B,MAAM3d,EAAcoD,EAAMhE,OAC1B,OAAO,EAAcgE,EAAMmC,MAAMvF,EAAc2d,EAAW3d,GAAeoD,EAAMpD,EAAc,EAC9F,cpHHO,SAAmBb,GACzB,OAAOA,EACLoF,QAAQ,YAAa,OACrBA,QAAQwM,GAAe,KACvBzL,OACA6M,aACH,6FqHCO,SAAuBhT,EAAQU,EAAUO,EAAU,GAAIqD,GAC7D,IAAIma,EAAY,EAChB,MAAM5d,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQD,EAAc,EAAEC,GAAS,EAAEA,IAC3CG,EAAQwd,GAAa/d,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAayD,GACzEma,IAED,OAAOxd,CACR,aCRO,SAAkBjB,EAAQU,EAAUO,EAAU,GAAIqD,GACxD,MAAMzD,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQ,EAAEA,EAAQD,EAAYC,IAAS,CAC/C,MAAMI,EAAOlB,EAAOc,GAEpB,IAAiB,IADAJ,EAASQ,EAAMJ,EAAOG,EAASjB,EAAQa,EAAayD,GAEpE,MAEDrD,EAAQH,GAASI,CACjB,CACD,OAAOD,CACR,UCdO,SAASyd,EAAM3b,KAAWK,GAWhC,OAVAwJ,GAAKxJ,GAAUub,IACd/R,GAAK+R,GAAe,CAACC,EAAYC,KAChC,GAAI9b,EAAO8b,KACN9Y,EAAc6Y,IAAetc,EAAQsc,IAAeA,EAAWxc,SAClE,OAAOsc,EAAM3b,EAAO8b,GAAYD,GAGlC7b,EAAO8b,GAAaD,CAAU,GAC7B,IAEI7b,CACR,UzEMO,SAAe0V,EAAWC,GAChC,OAAInY,EAASmY,GACL5V,EAAUyV,GAAO,CAACE,EAAWC,IAE9B7U,EAAI4U,EAAWF,GAAMI,OAC7B,a0E3BO,SAAkB3Y,EAAQgG,GAChC,OAAOhG,EAASgG,CACjB,WCHO,SAAgBgI,GACtB,MAAO,IAAI9K,KACF8K,KAAY9K,EAEtB,gDCJO,SAAgBpC,EAAQ,GAC9B,MAAO,IAAIoC,IACHA,EAAKpC,EAEd,8DCMO,SAAcd,EAAQ8e,GAC5B,GAAK9e,EAAL,CAGA,GAAIsC,EAAQwc,GAAY,CACvB,MAAMC,EAAiBxN,GAAauN,GACpC,OAAO7N,GAAajR,GAAQ,CAACkB,EAAMiG,KAC1B4X,EAAepU,KAAKxD,IAE7B,CACD,GAAIiK,GAAQ0N,GACX,OAAO7N,GAAajR,GAAQ,CAACkB,EAAMiG,KAC1B2X,EAAUnU,KAAKxD,KAGzB,GAAIiD,GAAS0U,GACZ,OAAO7N,GAAajR,GAAQ,CAACkB,EAAMiG,IAC3BA,IAAQ2X,IAGjB,GAAI3U,GAAS2U,GAAY,CACxB,MAAME,EAAiBF,EAAU5Y,WACjC,OAAO+K,GAAajR,GAAQ,CAACkB,EAAMiG,IAC3BA,IAAQ6X,GAEhB,CACD,OAAInT,GAAWiT,GACP7N,GAAajR,GAAQ,CAACkB,EAAMiG,KAC1B2X,EAAU5d,EAAMiG,UAF1B,CAvBC,CA4BF,SChCqB6G,IACpB,IAAIhI,EAOJ,MANiB,IAAI9C,KACf3C,EAASyF,KACbA,EAAQgI,KAAY9K,IAEd8C,EAEO,yBChBT,SAAciZ,GACpB,MAAO,IAAI/b,IACHwM,GAAIuP,GAAY/d,GACfA,KAAQgC,IAGlB,cCNO,SAAmBgc,GACzB,OAAQrH,GACA9H,GAAMmP,GAAaC,GAClBA,EAAUtH,IAGpB,SCNO,SAAcrL,EAAWC,GAC/B,MAAO,CAACD,EAAWC,EACpB,cCMO,SAAmBxI,EAAOkb,GAChC,MAAMC,EAAW,GACjB,MAAO,CACNpe,EAAgBiD,GAAO,CAAC/C,EAAMJ,KAC7B,GAAIqe,EAAUje,EAAMJ,GACnB,OAAOI,EAERke,EAAS/d,KAAKH,EAAK,IAEpBke,EAEF,SCjBoB,CAACpf,EAAQqf,EAAWtc,EAAS,CAAA,KAChD,GAAK/C,EAML,OAHAS,EAAU4e,GAAYne,IACrB6B,EAAO7B,GAAQlB,EAAOkB,EAAK,IAErB6B,CAAM,UCNP,SAAe6G,EAAYW,GACjC,OAAOjD,EAASsC,GAAa1I,GACrBoJ,GAAYpJ,EAAMqJ,IAE3B,6BCFO,SAAiBlI,GACvB,OAAO,IAAI2S,QAAQ3S,EACpB,kBCG6B,CAACrC,EAAQsf,EAAU5Z,EAAaX,EAAK/E,KAC1DwE,EAAWkB,GAAamT,GACvB7R,EAAQhH,EAAO6Y,GAAWyG,EAASzG,oBrJVrC,SAAqBxR,EAAKU,EAAM,GACtC,OAAOF,MAAYR,EAAMU,GAAOA,CACjC,yBhFcO,SAAejG,EAAOC,EAAKC,EAAO,EAAGC,EAAc,IACzD,OAAIL,EAAWI,GACPC,EAEJH,EAAQC,EACJF,EAAQC,EAAOC,EAAKC,EAAMC,GAE1BE,EAAUL,EAAOC,EAAKC,EAAMC,EAErC,sDsOzBO,SAAe+L,EAAUwP,GAC/B,MAAO,IAAIta,IACH8K,KAAYwP,EAAQ9N,KAAKxO,GACxBgC,EAAKhC,KAGf,oCCNO,SAAmBlB,EAAQgG,GACjC,OAAOhG,EAASgG,CACjB,WCFO,SAAgB/B,EAAOsb,GAC7B,IAAI1e,EAAcoD,EAAMhE,OACxB,IAAK,IAAIa,EAAQ,EAAGA,EAAQD,EAAaC,IAAS,CACjD,MAAMI,EAAO+C,EAAMnD,GACfye,EAAYxC,SAAS7b,KACxB+C,EAAMG,OAAOtD,EAAO,GACpBA,IACAD,IAED,CACD,OAAOoD,CACR,aAcO,SAAkBjE,EAAQU,GAChC,IAAIG,EAAcb,EAAOC,OACzB,IAAK,IAAIa,EAAQ,EAAGA,EAAQD,EAAaC,IAAS,CAE7CJ,EADSV,EAAOc,GACDA,KAClBd,EAAOoE,OAAOtD,EAAO,GACrBA,IACAD,IAED,CACD,OAAOb,CACR,gBCrCO,SAAqB+R,EAAQyN,EAAOxZ,GAC1C,OAAO+L,EAAO3M,QAAQ,IAAIqM,OAAO,MAAM+N,EAAM9N,KAAK,UAAW,MAAO1L,EACrE,SCJO,SAAc/B,GACpB,OAAOA,EAAMmC,MAAM,EAAGnC,EAAMhE,OAC7B,0CCDO,SAAeD,EAAQkE,GAC7B,OAAOlE,EAAOA,EAAOC,OAAS,EAAIiE,EACnC,gBzIiBO,SAAqB6N,EAAQjR,EAAQ,GAC3C,OAAOiR,EAAOA,EAAO9R,OAASa,EAC/B,W0IdO,SAAgBd,EAAQkE,GAC9B,IAAKlE,EACJ,OAAO,EAER,MAAMa,EAAcb,EAAOC,OAC3B,GAAIY,IAAgBqD,GAAUA,EAASrD,EACtC,OAAOyH,GAAQtI,GAEhB,GAAe,IAAXkE,EACH,MAAO,CAAClE,EAAO8H,GAAUjH,EAAc,EAAG,KAE3C,MAAM4e,EAAc,GACdC,EAAO,CAAA,EACb,IACI5e,EADAgD,EAAQ,EAEZ,KAAOA,EAAQI,GACdpD,EAAQgH,GAAU9H,EAAOC,OAAS,EAAG,GAChCyf,EAAK5e,KACT2e,EAAYpe,KAAKrB,EAAOc,IACxB4e,EAAK5e,IAAS,EACdgD,KAGF,OAAO2b,CACR,azIWO,SAAkB1N,GACxB,OAAOS,GAAaF,GAAaP,GAClC,W0ItDO,SAAgB/R,EAAQmH,EAAKnB,GAcnC,OAbImB,GAAOpB,EAAc/F,IAEdmK,GAAShD,IAAQ7E,EAAQtC,GADnCA,EAAOmH,GAAOnB,EAGJhG,EAAO+D,IACjB/D,EAAO+D,IAAIoD,EAAKnB,GACNhG,EAAOqB,KACjBrB,EAAOqB,KAAK2E,GACFhG,EAAOoP,IACjBpP,EAAOoP,IAAIpJ,GAEXhG,EAAOmH,GAAOnB,EAERhG,CACR,aCfO,SAAkBA,EAAQgG,EAAOmB,GAUvC,OATIgD,GAAShD,IAAQ7E,EAAQtC,GAC5BA,EAAOmH,GAAOnB,EACJhG,EAAOqB,KACjBrB,EAAOqB,KAAK2E,GACFhG,EAAOoP,IACjBpP,EAAOoP,IAAIpJ,GAEXhG,EAAOmH,GAAOnB,EAERhG,CACR,0B/MDO,SAAkBiE,GACxB,OAAOuE,MAAiBvE,EACzB,cgEDO,SAAmBjE,GACzB,OAAOA,EAAOoF,QAAQ,YAAa,OACjCA,QAAQwM,GAAe,KACvBzL,OACA6M,cACA5N,QAAQyM,GAAO,IAClB,iC3DaO,SAAsCjI,EAAYR,EAAe,KAAMI,GAC7E,OAAOI,EAAWC,MAAK,CAACP,EAAUC,IAC1BO,GAA0BR,EAAUC,EAAMH,EAAcI,IAEjE,wCKZO,SAA6CI,EAAYR,EAAe,KAAMI,GACpF,OAAOI,EAAWC,MAAK,CAACP,EAAUC,IAC1BiB,GAAiClB,EAAUC,EAAMH,EAAcI,IAExE,0JsMjBO,SAA6BmW,GACnC,OAAOA,EAAW9V,KAAKrC,EACxB,wBCFO,SAA6BmY,GACnC,OAAOA,EAAW9V,KAAKlC,EACxB,kHCHyB,IACjB,erLCiB,IACjB2F,gBsLFkB,KAClB,iBCDkB,IAClB,cxLAgB,IAChBD,8ByLFD,SAAqBrN,GAC3B,OAAOA,EAAOoc,QAAO,CAACwD,EAAGC,IACjBD,EAAIC,GACT,EACJ,+BCJO,SAAgB7f,GACtB,OAAOA,EAAOoc,QAAO,CAACwD,EAAGC,IACjBD,EAAIC,GACT,EACJ,SCHO,SAAc7f,EAAQ8f,EAAW,GACvC,OAAO9f,EAAOoG,MAAM,EAAG0Z,EACxB,cCFO,SAAmB9f,EAAQ+f,EAAa,GAC9C,MAAMlf,EAAcb,EAAOC,OAC3B,OAAOD,EAAOoG,MAAMvF,EAAckf,EAAYlf,EAC/C,aCCO,SAAkBmN,EAAUC,GAClC,SAAS+R,KAAa9c,GACjB8c,EAAUpS,GACboS,EAAUC,eAAiB5S,IAG5B2S,EAAUhS,YAAY9K,GACtB8c,EAAUpS,GAAKU,IAAM,KAChB0R,EAAUC,gBACbD,EAAUhS,YAAY9K,GAEvB8c,EAAUpS,GAAKN,EAAK,GAClBW,GACH,CAOD,OANA+R,EAAUpS,GAAKN,GACf0S,EAAUhS,SAAWA,EAASsB,KAAK0Q,GACnCA,EAAU5R,MAAQ,KACjBC,GAAOV,OAAOqS,EAAUpS,IACxBoS,EAAUpS,GAAKN,EAAK,EAEd0S,CACR,iDClBO1e,eAA0B4C,EAAQxD,GACxC,IAAK,IAAII,EAAQ,EAAGA,EAAQoD,EAAQpD,UAC7BJ,EAASwD,EAEjB,a3LkBO,SAAkBA,EAAQxD,EAAUO,EAAU,IACpD,IAAK,IAAIH,EAAQ,EAAGA,EAAQoD,EAAQpD,IACnCG,EAAQH,GAASJ,EAASwD,GAE3B,OAAOjD,CACR,kB2LHOK,eAA6B4C,EAAQxD,EAAUO,EAAU,IAC/D,IAAK,IAAIH,EAAQ,EAAGA,EAAQoD,EAAQpD,IACnCG,EAAQH,SAAeJ,EAASwD,GAEjC,OAAOjD,CACR,mCChCO,SAAgB+E,EAAOka,GAAK,EAAMC,GAAM,GAC9C,OAAQnZ,EAAQkZ,EAAIla,GAAUma,EAAMD,CACrC,atJLO,SAAkBnO,GACxB,OAAOA,EAAO+I,MAAMrI,KAAkB,EACvC,auJuBO,SAAkBV,EAAQqO,GAChC,MAAMC,EAAetO,EAAO9R,OAC5B,OAAQogB,EAAeD,EA1CH,EAACrO,EAAQqO,EAAWC,KACxC,MAAMC,EAAWvO,EAAO1M,MAAM,IACxBkb,EAAiBD,EAASrgB,OAChC,IAAIiB,EACAJ,EAAQuf,EAAeD,EAC3B,KAAOtf,EAAQyf,GAAkBzf,GAAS,IACzCI,EAAOof,EAASxf,GACH,MAATI,GAFwCJ,KAM7C,OAAOiR,EAAO3L,MAAM,EAAGtF,GAAOqF,MAAM,EA+BAqa,CAAazO,EAAQqO,EAAWC,GAAgBtO,CACrF,kBAeO,SAAuBA,EAAQqO,GACrC,MAAMC,EAAetO,EAAO9R,OAC5B,OAAQogB,EAAeD,EA/CL,EAACrO,EAAQqO,EAAWC,KACtC,MAAMC,EAAWvO,EAAO1M,MAAM,IACxBkb,EAAiBD,EAASrgB,OAChC,IAAIiB,EACAJ,EAAQsf,EACZ,KAAOtf,EAAQyf,GAAkBzf,EAAQ,IACxCI,EAAOof,EAASxf,GACH,MAATI,GAFuCJ,KAM5C,OAAOiR,EAAOC,UAAUlR,EAAOuf,GAAcla,MAAM,EAoCfsa,CAAW1O,EAAQqO,EAAWC,GAAgBtO,CACnF,qBC5BO,SAAe/R,GACrB,OAAOA,EAAO,GAAG0P,KAAI,CAACxO,EAAMJ,IACpBd,EAAO0P,KAAKgR,GACXA,EAAS5f,MAGnB,gBhKH4Bsa,IAC3B,MAAMuF,EAAe,GACfnE,EAAS,GAKf,OAJApR,GAAWgQ,GAAQ,CAACla,EAAMiG,KACzBwZ,EAAatf,KAAK8F,GAClBqV,EAAOnb,KAAKH,EAAK,IAEX,CAACyf,EAAcnE,EAAO,UiK5BvB,YAAkBa,GACxB,OAAOzU,GAAOnG,EAAY4a,GAC3B,4CCKO,SAAyBrd,EAAQU,GACvC,MAAM+D,EAAezE,EAAOC,OAC5B,IAAK,IAAIa,EAAQ,EAAEA,EAAQ2D,EAAa3D,IACvC,IAAuC,IAAnCJ,EAASV,EAAOc,GAAQA,GAC3B,OAAO,EAGT,OAAO,CACR,mBCRO,SAAwBd,EAAQU,GACtC,MAAM+D,EAAezE,EAAOC,OAC5B,IAAK,IAAIa,EAAQ,EAAEA,EAAQ2D,EAAa3D,IACvC,IAAuC,IAAnCJ,EAASV,EAAOc,GAAQA,GAC3B,OAAO,EAGT,OAAO,CACR,c/JfO,SAAmBd,GACzB,OAAOA,EACLoF,QAAQ,YAAa,OACrBA,QAAQwM,GAAe,KACvBzL,OACA0M,aACH,kCK4CO,SAAuBd,GAC7B,OAAOA,EAAO3M,QAAQuN,IAAWmI,GACzBhI,GAAWgI,IAEpB,gEAcO,SAA2B/I,GACjC,OAAOA,EAAO3M,QAAQuN,IAAWmI,GACzB/H,GAAe+H,IAExB,mB6CWO,SAAwBhB,GAC9B,OAAO,IAAID,GAAeC,EAC3B,oB8G9EO,SAAyB9Z,EAAQU,EAAUO,EAAU,GAAIqD,GAC/D,IAAIxD,EAAQ,EACZ,KAAOA,EAAQd,EAAOC,QAAQ,CAC7B,MAAMwB,EAASR,EAAQI,KAAKX,EAASV,EAAOc,GAAQA,EAAOd,EAAQA,EAAOC,OAAQqE,IAClFxD,IACIP,EAASkB,IACZR,EAAQI,KAAKI,EAEd,CACD,OAAOzB,CACR,mBCXO,SAAwBA,EAAQU,EAAU4D,GAChD,IAAIxD,EAAQ,EACZ,KAAOA,EAAQd,EAAOC,QACrBS,EAASV,EAAOc,GAAQA,EAAOd,EAAQA,EAAOC,OAAQqE,GACtDxD,IAED,OAAOd,CACR,kBCJO,SAAuBA,EAAQU,EAAUO,EAAU,GAAIqD,GAC7D,IAAIxD,EAAQ,EACZ,KAAOA,EAAQd,EAAOC,QACrBgB,EAAQI,KAAKX,EAASV,EAAOc,GAAQA,EAAOd,EAAQA,EAAOC,OAAQqE,IACnExD,IAED,OAAOd,CACR,YChBO,SAAiB+C,EAAQK,GAC/B,IAAKA,EACJ,OAAOL,EAER,MAAM6d,EAAa9d,EAAU+d,IAAKzd,GAClC,OAAOL,EAAO+F,QAAQ5H,IACb0f,EAAW7S,IAAI7M,IAEzB,U/JOO,SAAe6Q,GACrB,OAAOA,EAAO+I,MAAMpI,KAAe,EACpC,SgKhBO,SAAc1M,EAAO8a,GAC3B,MAAO,IAAIjJ,IACHiJ,EAAQ9a,KAAU6R,EAE3B,QCHO,YAAgBzU,GACtB,MAAM2d,EAASje,EAAUQ,KACnB0d,EAAQ,GAEd,OAAsB,IADA5d,EAAQnD,OAEtBkD,EAAWC,EAAQ,GAAIA,EAAQ,KAEvC3C,EAAU2C,GAAS,CAACI,EAAcC,KACjChD,EAAU+C,GAAc,CAACE,EAAOC,KAC/B,IAAIC,EAAYmd,EAAOld,IAAIH,GAC3B,GAAKE,EAOE,IAAIA,EAAUH,cAAgBA,EACpC,OAEAG,EAAUE,OACV,MAVAF,EAAY,CACXE,MAAO,EACPL,cACAC,SAEDqd,EAAOhd,IAAIL,EAAOE,EAKlB,GACA,IAEHxB,EAAQ2e,GAAS7f,IACG,IAAfA,EAAK4C,OACRkd,EAAM3f,KAAKH,EAAKwC,MAChB,IAEKsd,EACR,QTlCO,YAAgB3D,GACtB,OAAOA,EAAO,GAAG3N,KAAI,CAACxO,EAAMJ,IACpBuc,EAAO3N,KAAKzL,GACXA,EAAMnD,MAGhB,chKHyB,CAAC4E,EAAY8W,KACrC,MAAMyE,EAAc,CAAA,EAIpB,OAHAxgB,EAAUiF,GAAY,CAACxE,EAAMiG,KAC5B8Z,EAAY/f,GAAQsb,EAAOrV,EAAI,IAEzB8Z,CAAW"} \ No newline at end of file +{"version":3,"file":"basic.js","sources":["../source/arrays/clear.js","../source/types/isUndefined.js","../source/utilities/hasLength.js","../source/types/isNull.js","../source/types/hasValue.js","../source/utilities/returnValue.js","../source/arrays/each.js","../source/arrays/compactMap.js","../source/arrays/eachAsync.js","../source/arrays/compactMapAsync.js","../source/numbers/isNegative.js","../source/arrays/range.js","../source/utilities/forEach.js","../source/types/isArray.js","../source/arrays/ensure.js","../source/arrays/flattenDeep.js","../source/classes/construct.js","../source/arrays/difference.js","../source/arrays/drop.js","../source/arrays/eachRight.js","../source/arrays/eachRightAsync.js","../source/arrays/every.js","../source/arrays/everyAsync.js","../source/arrays/filter.js","../source/arrays/filterAsync.js","../source/objects/keys.js","../source/utilities/toPath.js","../source/utilities/get.js","../source/objects/hasKeys.js","../source/types/isPlainObject.js","../source/types/isConstructor.js","../source/types/isTypeFactory.js","../source/types/isBuffer.js","../source/utilities/isEqual.js","../source/arrays/largest.js","../source/arrays/map.js","../source/arrays/mapAsync.js","../source/math/subtract.js","../source/math/subtractReverse.js","../source/math/randomInt.js","../source/internal/array.js","../source/arrays/shuffle.js","../source/arrays/smallest.js","../source/arrays/unique.js","../source/buffers/clear.js","../source/collection/findIndexCache.js","../source/collection/sortCollectionDescending.js","../source/collection/sortCollectionAlphabetically.js","../source/collection/sortCollectionAscending.js","../source/types/isNumber.js","../source/types/isString.js","../source/objects/pluckObject.js","../source/collection/sortCollectionAlphabeticallyReverse.js","../source/internal/regexTestFactory.js","../source/files/isFileCSS.js","../source/files/isFileHTML.js","../source/files/isFileJS.js","../source/files/isFileJSON.js","../source/objects/assign.js","../source/objects/eachAsync.js","../source/objects/each.js","../source/types/isSet.js","../source/utilities/forOf.js","../source/types/isGenerator.js","../source/utilities/forOfAsync.js","../source/types/isFunction.js","../source/types/isAsync.js","../source/utilities/generateLoop.js","../source/utilities/each.js","../source/functions/chain.js","../source/utilities/stubTrue.js","../source/utilities/stubFalse.js","../source/utilities/noop.js","../source/utilities/times.js","../source/utilities/timer.js","../source/internal/apply.js","../source/objects/mapAsync.js","../source/objects/map.js","../source/types/getType.js","../source/types/cloneType.js","../source/utilities/forOfMap.js","../source/utilities/forOfMapAsync.js","../source/utilities/map.js","../source/objects/everyAsync.js","../source/objects/every.js","../source/utilities/forOfEvery.js","../source/utilities/forOfEveryAsync.js","../source/utilities/every.js","../source/utilities/cacheNativeMethod.js","../source/internal/object.js","../source/internal/isSame.js","../source/math/randomFloat.js","../source/numbers/isPositive.js","../source/objects/getEntries.js","../source/objects/compactMapAsync.js","../source/objects/compactMap.js","../source/objects/filter.js","../source/objects/filterAsync.js","../source/objects/isMatch.js","../source/types/isRegex.js","../source/regexps/escapeRegex.js","../source/regexps/arrayToRegex.js","../source/objects/size.js","../source/objects/zip.js","../source/strings/camelCase.js","../source/strings/kebabCase.js","../source/strings/snakeCase.js","../source/strings/upperCase.js","../source/strings/lowerCase.js","../source/strings/range.js","../source/strings/sanitize.js","../source/strings/tokenize.js","../source/strings/typography.js","../source/types/getTypeName.js","../source/types/noValue.js","../source/types/isMap.js","../source/types/isTypedArray.js","../source/types/isBigInt.js","../source/types/isBoolean.js","../source/types/isArrayBuffer.js","../source/types/isCloneable.js","../source/types/isDate.js","../source/types/isFalse.js","../source/types/isF32.js","../source/types/isF64.js","../source/types/isFloat.js","../source/types/isI16.js","../source/types/isI32.js","../source/types/isI8.js","../source/types/isPromise.js","../source/types/isKindAsync.js","../source/types/isSafeInt.js","../source/types/isU16.js","../source/types/isU32.js","../source/types/isU8.js","../source/types/isU8C.js","../source/types/isWeakMap.js","../source/types/isDeno.js","../source/types/isNode.js","../source/types/isTruthy.js","../source/utilities/notEqual.js","../source/utilities/json.js","../source/utilities/assert.js","../source/utilities/clone.js","../source/utilities/forOfCompactMapAsync.js","../source/utilities/forOfCompactMap.js","../source/utilities/compactMap.js","../source/utilities/forOfFilter.js","../source/utilities/forOfFilterAsync.js","../source/utilities/filter.js","../source/utilities/flow.js","../source/utilities/flowAsync.js","../source/utilities/hasDot.js","../source/utilities/interval.js","../source/utilities/model.js","../source/utilities/store.js","../source/utilities/uid.js","../source/utilities/virtualStorage.js","../source/math/add.js","../source/functions/after.js","../source/utilities/arraysToObject.js","../source/functions/ary.js","../source/functions/before.js","../source/utilities/bindAll.js","../source/math/progress.js","../source/arrays/chunk.js","../source/utilities/clear.js","../source/arrays/clone.js","../source/utilities/compact.js","../source/objects/compactKeys.js","../source/utilities/concurrent.js","../source/utilities/concurrentStatus.js","../source/collection/countBy.js","../source/collection/countKey.js","../source/collection/countWithoutKey.js","../source/functions/curry.js","../source/functions/curryRight.js","../source/functions/debounce.js","../source/math/deduct.js","../source/math/divide.js","../source/arrays/dropRight.js","../source/buffers/ensure.js","../source/utilities/everyArg.js","../source/collection/findIndex.js","../source/collection/findItem.js","../source/arrays/first.js","../source/arrays/flatten.js","../source/utilities/forEachAsync.js","../source/utilities/forMap.js","../source/files/getExtension.js","../source/files/getFilename.js","../source/collection/getHighest.js","../source/collection/getLowest.js","../source/arrays/getNumberInsertIndex.js","../source/collection/groupBy.js","../source/utilities/has.js","../source/functions/ifInvoke.js","../source/utilities/ifNotAssign.js","../source/utilities/ifValue.js","../source/functions/inAsync.js","../source/functions/inSync.js","../source/math/increment.js","../source/collection/indexBy.js","../source/arrays/initial.js","../source/arrays/intersect.js","../source/objects/invert.js","../source/arrays/invoke.js","../source/collection/invoke.js","../source/collection/invokeAsync.js","../source/types/isArguments.js","../source/types/isArrayLike.js","../source/types/isChild.js","../source/types/isEmpty.js","../source/types/isFalsy.js","../source/types/isIterable.js","../source/arrays/isMatch.js","../source/numbers/isNumberEqual.js","../source/numbers/isNumberInRange.js","../source/numbers/isNumberNotInRange.js","../source/types/isParent.js","../source/types/isPrimitive.js","../source/types/isRelated.js","../source/types/isSameType.js","../source/types/isTrue.js","../source/numbers/isZero.js","../source/arrays/last.js","../source/arrays/mapRight.js","../source/arrays/mapWhile.js","../source/utilities/merge.js","../source/math/multiple.js","../source/functions/negate.js","../source/functions/nthArg.js","../source/objects/omit.js","../source/functions/once.js","../source/functions/over.js","../source/functions/overEvery.js","../source/utilities/pair.js","../source/arrays/partition.js","../source/objects/pick.js","../source/collection/pluck.js","../source/utilities/promise.js","../source/utilities/propertyMatch.js","../source/functions/rearged.js","../source/math/remainder.js","../source/arrays/remove.js","../source/strings/replace.js","../source/arrays/rest.js","../source/arrays/right.js","../source/arrays/sample.js","../source/utilities/setKey.js","../source/utilities/setValue.js","../source/arrays/sortNumberAscending.js","../source/arrays/sortNumberDescening.js","../source/utilities/stubArray.js","../source/utilities/stubObject.js","../source/utilities/stubString.js","../source/math/subtractAll.js","../source/math/sumAll.js","../source/arrays/take.js","../source/arrays/takeRight.js","../source/functions/throttle.js","../source/utilities/timesAsync.js","../source/utilities/toggle.js","../source/strings/truncate.js","../source/arrays/zip.js","../source/arrays/union.js","../source/arrays/untilFalse.js","../source/arrays/untilTrue.js","../source/arrays/whileCompactMap.js","../source/arrays/whileEach.js","../source/arrays/whileMap.js","../source/arrays/without.js","../source/functions/wrap.js","../source/arrays/xor.js"],"sourcesContent":["/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Invoke each function in the given array.\n *\n * @function invokeArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { invokeArray, assert } from '@universalweb/acid';\n * function test(arg){\n * \treturn [this, arg];\n * }\n * const results = invokeArray([test], 1, test);\n * assert(results, [test, 1]);\n */\nexport function invokeArray(source, arg, thisCall) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index].call(thisCall, arg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index](arg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollection\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * import { invokeCollection, assert } from '@universalweb/acid';\n * const results = invokeCollection([{\n *\ttest(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollection(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapArray(collection, (item, index) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollectionAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * import { invokeCollectionAsync, assert } from '@universalweb/acid';\n * const results = await invokeCollectionAsync([{\n *\tasync test(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollectionAsync(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapAsyncArray(collection, (item) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapAsyncArray(collection, async (item) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n"],"names":["clearArray","source","length","isUndefined","undefined","hasLength","Boolean","isNull","hasValue","returnValue","eachArray","iteratee","thisCall","additionalArg","arrayLength","index","call","compactMapArray","results","item","arrayOriginal","returned","push","async","eachAsyncArray","compactMapAsyncArray","result","sign","Math","isNegative","rangeUp","start","end","step","sourceArray","position","rangeDown","forEach","callback","isArray","Array","ensureArray","flattenDeep","flat","Infinity","reflectConstruct","Reflect","construct","target","argumentsList","newTarget","args","difference","sources","differencesMap","Map","differences","currentArray","parentIndex","child","childIndex","childRoot","get","count","set","drop","array","amount","upTo","splice","eachRight","thisBind","eachRightAsync","everyArray","sourceLength","everyAsyncArray","filterArray","filterAsyncArray","objectKeys","Object","keys","regexToPath","regexCloseBracket","emptyString","toPath","replace","split","propertyString","link","hasOwn","hasKeys","properties","pathArray","lastPath","pop","initialPathObject","isPlainObject","value","constructor","toString","trim","slice","isConstructor","isConstructorFactory","constructorName","name","isConstructorNameFactory","isTypeFactory","method","primarySource","otherSources","isBufferCall","isBuffer","isEqual","equals","sourceProperties","key","mathNativeMax","max","mapArray","mapAsyncArray","subtract","minuend","subtrahend","subtractReverse","floor","random","randomInt","min","arrayFrom","from","toArray","arrayLike","mapFn","thisArg","shuffle","shuffleArray","mathNativeMin","onlyUnique","indexOf","sortUnique","unique","isSorted","filter","clearBuffer","fill","findIndexCache","element","indexMatch","propertyName","sortCollectionDescendingFilter","previous","next","ifMatch","previousKey","nextKey","sortCollectionDescending","collection","sort","sortObjectsAlphabetically","localeCompare","sortCollectionAscendingFilter","sortCollectionAscending","isNumberCall","isNumber","isString","String","pluckObject","targets","sortObjectsAlphabeticallyReverse","regexTestFactory","regexType","test","isFileCSS","isFileHTML","isFileJS","isFileJSON","objectAssign","assign","eachAsyncObject","propertyCount","eachObject","objectKeysArray","isSetCall","isSet","forOf","isGeneratorCall","isGenerator","forOfAsync","generatorArgs","isFunction","Function","isAsyncCall","isAsync","generateLoop","arrayLoop","arrayLoopAsync","objectLoop","objectLoopAsync","forOfLoop","forOfLoopAsync","argument1","argument2","argument3","isIterateeAsync","each","Chain","methods","this","addChainMethod","thisChain","methodName","setValue","done","truth","falsy","noop","times","Timers","list","remove","id","clearTimeout","delete","has","callable","time","currentThis","setTimeout","clear","timers","timer","applyNative","apply","thisArgument","mapAsyncObject","thisObject","mapObject","original","getType","cloneType","sourceType","forOfMap","resultsObject","methodPush","add","methodPushBound","bind","methodSet","forOfMapAsync","resultsGenerator","map","everyAsyncObject","everyObject","forOfEvery","forOfEveryAsync","every","functionPrototype","prototype","cacheNativeMethod","getPropNames","getOwnPropertyNames","getPropDesc","getOwnPropertyDescriptor","defProp","defineProperty","hasProp","hasOwnProperty","isSame","is","objectEntries","entries","compactMapAsyncObject","compactMapObject","filterObject","filterAsyncObject","isRegexCall","isRegex","escapeRegexRegex","escapeRegex","arrayToRegex","makeSafe","RegExp","join","objectSize","normalizeCase","space","restString","string","substring","rawURLDecodeRegex","andRegex","lessThanRegex","moreThanRegex","doubleQuoteRegex","rawURLDecode","decodeURIComponent","htmlEntities","tokenizeRegEx","wordsRegEx","getWords","upperFirstLetter","toUpperCase","upperFirst","upperFirstOnly","toLowerCase","getTypeName","noValue","isMapCall","isMap","typedArrayRegex","arrayConstructorName","isTypedArray","isBigIntCall","isBigInt","isBooleanCall","isBoolean","isArrayBufferCall","isArrayBuffer","constructorNames","isDateCall","isDate","isFalse","isF32Call","isF32","isF64Call","isF64","isInteger","Number","isFloat","isI16Call","isI16","isI32Call","isI32","isI8Call","isI8","isPromise","Promise","isKindAsync","isSafeInteger","isSafeInt","isU16Call","isU16","isU32Call","isU32","isU8Call","isU8","isU8CCall","isU8C","isWeakMapCall","isWeakMap","isDeno","globalThis","Deno","isNodejs","process","versions","node","isTruthy","returnIfTrue","notEqual","jsonNative","JSON","stringify","createAssertError","expected","localOptions","options","errorTitle","title","file","Error","assertAsync","sourceArg","structuredCloneSafe","structuredClone","forOfCompactMapAsync","forOfCompactMap","compactMap","forOfFilter","forOfFilterAsync","returnFlow","arg","flow","flowRight","flowAsync","flowAsyncRight","hasDot","Intervals","clearInterval","setInterval","intervals","Model","static","modelName","modelValue","models","Store","property","data","Proxy","proxySource","console","log","UniqID","totalActive","freed","totalFree","shift","free","isActive","shouldReset","reset","uniqID","VirtualStorage","initialObject","items","getItem","setItem","removeItem","augend","addend","point","sortedObject","bindThis","targetAssign","total","currentAmount","config","size","chunked","match","sourceKeys","sourceKeysLength","targetObject","i","keyName","object","compactedKeys","queue","all","allSettled","arity","curries","curried","curryArgs","unshift","debounced","Buffer","alloc","findIndex","find","level","reduce","previousValue","currentValue","concat","values","valuesLength","cloned","methodBound","lastIndexOf","insertIndex","search","includes","rootObject","equalThis","optional","firstArgument","text","arrays","otherItem","strictFlag","indexes","sourceChild","targetParent","Symbol","iterator","compareArray","targetKeys","sourceParent","targetChild","type","targetOne","targetTwo","other","otherType","reviver","parse","indexFrom","trueIndex","merge","currentSource","sourceItem","sourceKey","blacklist","blacklistRegex","numberToString","iteratees","predicates","predicate","rejected","whitelist","compared","removeThese","words","sampleArray","used","numberList","a","b","endIndex","indexRight","throttled","shouldThrottle","on","off","maxLength","stringLength","breakAll","breakAllLength","truncateDown","truncateUp","arraySet","unZippedKeys","sourcesSet","Set","wrapper","xorMap","xored","zipedObject"],"mappings":"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"} \ No newline at end of file diff --git a/build/browser.bundle.js b/build/browser.bundle.js index 4766099f..6768245d 100644 --- a/build/browser.bundle.js +++ b/build/browser.bundle.js @@ -1,11 +1,12 @@ -(function(global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? - factory(exports) : - typeof define === 'function' && define.amd ? - define(['exports'], factory) : - ((global = typeof globalThis !== 'undefined' ? globalThis : global || self), factory((global.$ = {}))); -})(this, (exports) => { +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + ? factory(exports) + : typeof define === 'function' && define.amd + ? define(['exports'], factory) + : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self), factory((global.$ = {}))); +})(this, function (exports) { 'use strict'; + /** * Chunks an array according to a user defined number. * @@ -34,6 +35,7 @@ }); return chunked; } + /** * Clears the values out of an array. * @@ -51,6 +53,7 @@ source.length = 0; return source; } + /** * Clone an array (uses .slice()) and assign the source arrays values to the new array. * @@ -67,6 +70,7 @@ function cloneArray(source) { return source.slice(); } + /** Checks if the value is undefined. * * @function isUndefined @@ -81,6 +85,7 @@ function isUndefined(source) { return source === undefined; } + /** * Checks if the value has length greater than 0. * @@ -96,6 +101,7 @@ function hasLength(source) { return Boolean(source.length); } + /** * Checks if the value is null. * @@ -111,6 +117,7 @@ function isNull(source) { return source === null; } + /** * Checks if the value is not null or undefined. * @@ -126,6 +133,7 @@ function hasValue(source) { return !isUndefined(source) && !isNull(source); } + /** * A simple function which returns the value it's given. * @@ -137,6 +145,7 @@ function returnValue(source) { return source; } + /** * Iterates through the given array. * @@ -173,6 +182,7 @@ } return source; } + /** * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array. * @@ -210,6 +220,7 @@ } return results; } + /** * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order. * @@ -247,6 +258,7 @@ } return source; } + /** * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array. * @@ -274,6 +286,7 @@ }); return results; } + /** * Checks if a number is negative & returns true or false. * @@ -291,6 +304,7 @@ function isNegative(source) { return sign$1(source) === -1; } + function rangeUp(start, end, step, sourceArray) { let position = start; while (position < end) { @@ -332,10 +346,12 @@ return rangeDown(start, end, step, sourceArray); } } + function forEach(source, callback) { source.forEach(callback); return source; } + /** * Checks if the value is an array. This references Array.isArray. * @@ -366,6 +382,7 @@ function isNotArray(source) { return !isArray(source); } + /** * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned. * @@ -382,6 +399,7 @@ function ensureArray(source) { return (isArray(source) && source) || (hasValue(source) && [source]) || []; } + /** * Flattens an array to a single level. * @@ -398,6 +416,7 @@ function flattenDeep(source) { return source.flat(Infinity); } + /** * A function which acts like the "new" operator and can pass arguments. This is a safe version of the original which will error if given undefined * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects. @@ -427,6 +446,7 @@ } return reflectConstruct(target, args); } + /** * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences. * @@ -468,6 +488,7 @@ }); return differences; } + /** * Removes all items from an array after a specified index. * @@ -487,6 +508,7 @@ function drop(array, amount = 1, upTo = array.length) { return array.splice(amount, upTo); } + /** * Removes all items from an array before a specified index. * @@ -506,6 +528,7 @@ const dropRight = (array, amount = 1, upTo = array.length) => { return drop(array, 0, upTo - amount); }; + /** * Iterates through the given array in reverse. * @@ -535,6 +558,7 @@ } return source; } + /** * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order. * @@ -564,6 +588,7 @@ } return source; } + /** * Iterates through the given array while the iteratee returns true else the loop exits & returns false. * @@ -596,6 +621,7 @@ } return true; } + /** * Iterates through the given array while the iteratee returns true else the loop exits & returns false. * @@ -628,6 +654,7 @@ } return true; } + /** * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee. * @@ -655,6 +682,7 @@ }); return results; } + /** * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee. * @@ -682,6 +710,7 @@ }); return results; } + /** * Takes the first or multiple items from an array. * @@ -699,6 +728,7 @@ function first(array, upTo) { return upTo ? array.slice(0, upTo) : array[0]; } + /** * Flattens an array up to the provided level. * @@ -725,6 +755,7 @@ } return sourceArray; } + /** * Takes all but the last item in the array. * @@ -741,6 +772,7 @@ function initial(array) { return array.slice(0, array.length - 1); } + // Add intersectionBy & intersectionWith /** * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory)) @@ -766,6 +798,44 @@ } }); } + + /** + * Invoke each function in the given array. + * + * @function invokeArray + * @category array + * @type {Function} + * @param {Array} source - Array that will be looped through. + * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg. + * @param {*} thisCall - Iteratee called with thisCall as this. + * @param {*} additionalArg - An object to be given each time to the iteratee. + * @returns {Array} - The originally given array. + * + * @example + * import { invokeArray, assert } from '@universalweb/acid'; + * function test(arg){ + * return [this, arg]; + * } + * const results = invokeArray([test], 1, test); + * assert(results, [test, 1]); + */ + function invokeArray(source, arg, thisCall) { + if (!source) { + return; + } + const arrayLength = source.length; + if (hasValue(thisCall)) { + for (let index = 0; index < arrayLength; index++) { + source[index].call(thisCall, arg); + } + } else { + for (let index = 0; index < arrayLength; index++) { + source[index](arg); + } + } + return source; + } + /** * Get object's keys. * @@ -784,6 +854,7 @@ return objectKeys(source); } } + const regexToPath = /\.|\[/; const regexCloseBracket = /]/g; const emptyString = ''; @@ -803,6 +874,7 @@ function toPath(source) { return source.replace(regexCloseBracket, emptyString).split(regexToPath); } + /** * Returns property on an object. * @@ -834,6 +906,7 @@ }); return link; } + const hasOwn = Object.hasOwn; /** * Checks to see if an object has all of the given property names. @@ -902,6 +975,7 @@ }) ); } + /** * Checks if the value is a plain object. * @@ -917,11 +991,11 @@ */ const isPlainObject = (value) => { if (hasValue(value)) { - return value.constructor.toString().trim() - .slice(9, 16) === 'Object('; + return value.constructor.toString().trim().slice(9, 16) === 'Object('; } return false; }; + /** * Checks to see if the constructor is that of a native object. * @@ -951,14 +1025,16 @@ return constructorName(target) === source || false; }; } + function isTypeFactory(method) { - return function(primarySource, ...otherSources) { + return function (primarySource, ...otherSources) { if (otherSources) { return method(primarySource) && everyArray(otherSources, method); } return method(primarySource); }; } + /** * Checks if an object or objects are a Buffer. * @@ -973,6 +1049,7 @@ */ const isBufferCall = isConstructorNameFactory('Buffer'); const isBuffer = isTypeFactory(isBufferCall); + /** * Performs a deep comparison between two objects & determines if the value is the same using strict comparison. * @@ -1011,6 +1088,7 @@ } return false; }; + /** * Performs a shallow strict comparison between two objects. * @@ -1033,6 +1111,7 @@ } return false; } + const mathNativeMax = Math.max; /** * Plucks the largest value from an array. @@ -1050,6 +1129,7 @@ function largest(array) { return mathNativeMax(...array); } + /** * Extracts item(s) from an array starting from the last item in the array. * @@ -1068,6 +1148,7 @@ const arrayLength = array.length; return indexFrom ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1]; } + /** * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array. * @@ -1099,6 +1180,7 @@ } return results; } + /** * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array. * @@ -1123,6 +1205,7 @@ }); return results; } + /** * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse. * @@ -1150,6 +1233,7 @@ } return results; } + /** * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee. * @@ -1180,6 +1264,7 @@ } return results; } + /** * Subtracts the subtrahend (second argument) from the minuend (first argument). * @@ -1197,6 +1282,7 @@ function subtract(minuend, subtrahend) { return minuend - subtrahend; } + /** * Sorts an array of numbers in ascending order. Smallest to largest. * @@ -1212,6 +1298,7 @@ function sortNumberAscending(numberList) { return numberList.sort(subtract); } + /** * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate. * @@ -1245,6 +1332,7 @@ rejected ]; } + /** * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function. * @@ -1262,6 +1350,7 @@ function subtractReverse(subtrahend, minuend) { return minuend - subtrahend; } + /** * Sorts an array of numbers in descending order. Largest to smallest. * @@ -1277,6 +1366,7 @@ function sortNumberDescening(numberList) { return numberList.sort(subtractReverse); } + /** * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation. * @@ -1330,6 +1420,7 @@ } return source; } + /** * Extracts all items in array except the first and last item. * @@ -1346,6 +1437,7 @@ function rest(array) { return array.slice(1, array.length); } + /** * Get the item at the supplied index starting at the end of the array. * @@ -1363,9 +1455,8 @@ function right(source, amount) { return source[source.length - 1 - amount]; } - const { - floor, random: random$1 - } = Math; + + const { floor, random: random$1 } = Math; /** * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption. * @@ -1383,6 +1474,7 @@ function randomInt(max, min = 0) { return floor(random$1() * (max - min)) + min; } + const arrayFrom = Array.from; /** * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check. @@ -1403,6 +1495,7 @@ return arrayFrom(arrayLike, mapFn, thisArg); } } + /** * Checks if two numbers are the same. * @@ -1420,6 +1513,7 @@ function isNumberEqual(source, target) { return source === target; } + /** * Shuffle an array and return a new array. * @@ -1450,6 +1544,7 @@ } return shuffleArray; } + /** * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned. * @@ -1494,6 +1589,7 @@ } return sampleArray; } + const mathNativeMin = Math.min; /** * Plucks the smallest value from an array. @@ -1511,6 +1607,7 @@ function smallest(array) { return mathNativeMin(...array); } + /** * What index should the number be inserted at to keep a sorted array still sorted. * @@ -1538,6 +1635,7 @@ }); return insertIndex; } + /** * Returns a shallow copy of the array up to an amount. * @@ -1555,6 +1653,7 @@ function take(source, endIndex = 1) { return source.slice(0, endIndex); } + /** * Returns a shallow copy of the array up to an amount starting from the right. * @@ -1573,6 +1672,7 @@ const arrayLength = source.length; return source.slice(arrayLength - indexRight, arrayLength); } + function onlyUnique(value, index, array) { return array.indexOf(value) === index; } @@ -1599,6 +1699,7 @@ } return source.filter(onlyUnique); } + /** * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays. * @@ -1615,6 +1716,7 @@ function union(...arrays) { return unique(flattenDeep(arrays)); } + /** * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned. * If and when the iteratee yields false the loop stops & false is returned. @@ -1644,6 +1746,7 @@ } return true; } + /** * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned. * If and when the iteratee yields true the loop stops & false is returned. @@ -1673,6 +1776,7 @@ } return true; } + /** * Iterates through the calling object and creates a new object based on the calling object's type with the results, * (excludes results which are null or undefined), of the iteratee on every element in the calling object. @@ -1704,6 +1808,7 @@ } return source; } + /** * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over. * @@ -1731,6 +1836,7 @@ } return source; } + /** * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array. * Re-checks the length each loop. @@ -1761,6 +1867,7 @@ } return source; } + /** * Returns a copy of the array with all instances of the values removed. * @@ -1784,6 +1891,7 @@ return !sourcesSet.has(item); }); } + /** * Creates an array that is the symmetric difference of the provided arrays. * @@ -1828,6 +1936,7 @@ }); return xored; } + /** * Merges together the values of each of the arrays with the values at the corresponding position. * @@ -1868,6 +1977,7 @@ }); }); } + /** * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer. * @@ -1884,6 +1994,7 @@ function ensureBuffer(source) { return (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0); } + /** * Clears the values out of a buffer. * @@ -1901,6 +2012,7 @@ source.fill(0); return source; } + /** * Creates an object composed of keys generated from the results of running each element of collection through iteratee. * @@ -1927,6 +2039,7 @@ }); return object; } + /** * Count the amount of times a key is present in a collection. * @@ -1950,6 +2063,7 @@ }); return count; } + /** * Count the amount of times a key is not present in a collection. * @@ -1973,11 +2087,13 @@ }); return count; } + function findIndexCache(element, index, array, indexMatch, propertyName) { if (element[propertyName] === indexMatch) { return true; } } + /** * Finds an object in a collection by the given id and property name and returns the array index of the object. * @@ -1999,6 +2115,7 @@ }); return result === -1 ? false : result; } + /** * Finds an object in a collection by the given id and property name. * @@ -2020,6 +2137,7 @@ }); return result === -1 ? false : result; } + /** * Sorts an array in place using a key in descending order. * @@ -2060,6 +2178,7 @@ return sortCollectionDescendingFilter(previous, next, propertyName, ifMatch); }); } + /** * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array. * @@ -2099,6 +2218,7 @@ return sortObjectsAlphabetically(previous, next, propertyName, ifMatch); }); } + /** * Sorts an array in place using a key in ascending order. * @@ -2139,6 +2259,7 @@ return sortCollectionAscendingFilter(previous, next, propertyName, ifMatch); }); } + /** * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array. * @@ -2156,6 +2277,7 @@ function getHighest(collection, propertyName = 'id') { return sortCollectionAscending(collection, propertyName)[0]; } + /** * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array. * @@ -2173,6 +2295,7 @@ function getLowest(collection, propertyName) { return sortCollectionDescending(collection, propertyName, false)[0]; } + /** * Creates an object composed of keys generated from the results of running each element of collection thru iteratee. * The order of grouped values is determined by the order they occur in collection. @@ -2200,6 +2323,7 @@ }); return sortedObject; } + /** * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique. * @@ -2223,10 +2347,11 @@ }); return sortedObject; } + /** * Invokes a function on the provided property name in each object in the collection. * - * @function invoke + * @function invokeCollection * @category collection * @type {Function} * @param {Array} collection - Collection from which method will be taken. @@ -2235,18 +2360,27 @@ * @returns {Array} - Returns the results of the invoked method. * * @example - * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] + * import { invokeCollection, assert } from '@universalweb/acid'; + * const results = invokeCollection([{ + * test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); */ - function invoke(collection, property, value) { + function invokeCollection(collection, property, value, thisBind) { + if (thisBind) { + return mapArray(collection, (item, index) => { + return item[property].call(thisBind, value); + }); + } return mapArray(collection, (item, index) => { - return item[property](value, index); + return item[property](value); }); } + /** * Asynchronously awaits & invokes a function on the provided property name in each object in the collection. * - * @function invokeAsync + * @function invokeCollectionAsync * @category collection * @type {Function} * @async @@ -2256,20 +2390,23 @@ * @returns {Array} - Returns the results of the invoked method. * * @test - * (async () => { - * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]); - * }); - * - * @example - * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] - */ - function invokeAsync(collection, property, value) { - return mapAsyncArray(collection, async (item, index) => { - return item[property](value, index); + * import { invokeCollectionAsync, assert } from '@universalweb/acid'; + * const results = await invokeCollectionAsync([{ + * async test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); + */ + function invokeCollectionAsync(collection, property, value, thisBind) { + if (thisBind) { + return mapAsyncArray(collection, (item) => { + return item[property].call(thisBind, value); + }); + } + return mapAsyncArray(collection, async (item) => { + return item[property](value); }); } + /** * Checks if the value is a number. * @@ -2299,6 +2436,7 @@ function isNotNumber(source) { return !isNumber(source); } + /** * Checks if the value is a string. * @@ -2329,6 +2467,7 @@ function isNotString(source) { return !isString(source); } + /** * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array. * @@ -2353,6 +2492,7 @@ return source[item]; }); } + /** * Returns an array of the plucked values from the collection. * @@ -2373,6 +2513,7 @@ return pluckObject(item, targets); }); } + /** * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array. * @@ -2404,6 +2545,7 @@ return sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch); }); } + /** * Return the file extension. * @@ -2421,6 +2563,7 @@ return source.substring(source.lastIndexOf('.') + 1); } } + /** * Return the file extension. * @@ -2438,11 +2581,13 @@ return source.substring(source.lastIndexOf('/') + 1); } } + function regexTestFactory(regexType) { return (item) => { return hasValue(item) ? regexType.test(item) : false; }; } + /** * Checks if the string has a .css extension. * @@ -2456,6 +2601,7 @@ * assert(isFileCSS('test.css'), true); */ const isFileCSS = regexTestFactory(/\.css$/); + /** * Checks if the string has a .html extension. * @@ -2469,6 +2615,7 @@ * assert(isFileHTML('test.html'), true); */ const isFileHTML = regexTestFactory(/\.html$/); + /** * Checks if the string has a .js extension. * @@ -2482,6 +2629,7 @@ * assert(isFileJS('test.js'), true); */ const isFileJS = regexTestFactory(/\.js$/); + /** * Checks if the string has a .json extension. * @@ -2495,6 +2643,7 @@ * assert(isFileJSON('test.json'), true); */ const isFileJSON = regexTestFactory(/\.json$/); + /** * Creates a function that executes callable, only after being called n times. * @@ -2532,6 +2681,7 @@ }; return onlyAfter; } + /** * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments. * @@ -2551,6 +2701,7 @@ return callable(...args.splice(0, amount)); }; } + /** * Creates a function that executes callable, only before n times. * @@ -2582,6 +2733,7 @@ }; return onlyBefore; } + const objectAssign = Object.assign; /** * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object. @@ -2601,6 +2753,7 @@ return objectAssign(target, ...sources); } } + /** * Asynchronously iterates through the given object. * @@ -2637,6 +2790,7 @@ } return source; }; + /** * Iterates through the given object. * @@ -2671,6 +2825,7 @@ } return source; } + async function forEachAsync(source, callback) { const values = []; const properties = []; @@ -2685,6 +2840,7 @@ } return source; } + /** * Checks if an object(s) is a Set. * @@ -2699,6 +2855,7 @@ */ const isSetCall = isConstructorNameFactory('Set'); const isSet = isTypeFactory(isSetCall); + function forOf(source, iteratee) { if (isSet(source)) { for (const value of source) { @@ -2711,6 +2868,7 @@ } return source; } + /** * Checks if an object or objects are a Int16Array. * @@ -2726,6 +2884,7 @@ */ const isGeneratorCall = isConstructorNameFactory('GeneratorFunction'); const isGenerator = isTypeFactory(isGeneratorCall); + async function forOfAsync(source, iteratee, generatorArgs) { if (isSet(source)) { for (const value of source) { @@ -2743,6 +2902,7 @@ } return source; } + /** * Checks if an object or objects are a plain object. * @@ -2759,6 +2919,7 @@ const isFunction = (source) => { return hasValue(source) ? source instanceof Function : false; }; + /** * Checks if an object is an async function. * @@ -2773,6 +2934,7 @@ */ const isAsyncCall = isConstructorNameFactory('AsyncFunction'); const isAsync = isTypeFactory(isAsyncCall); + function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) { return (source, iteratee, argument1, argument2, argument3) => { let returned; @@ -2793,6 +2955,7 @@ return returned(source, iteratee, argument1, argument2, argument3); }; } + /** * Iterates through the given object. * @@ -2814,6 +2977,7 @@ * assert(list, {a: 1, b: 2, c: 3}); */ const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync); + class Chain { constructor(methods) { this.addChainMethod(methods); @@ -2821,7 +2985,7 @@ addChainMethod(methods) { const thisChain = this; each(methods, (method, methodName) => { - thisChain[methodName] = function(...args) { + thisChain[methodName] = function (...args) { this.value = method.call(thisChain, thisChain.value, ...args); return thisChain; }; @@ -2859,6 +3023,7 @@ function chain(config) { return construct(Chain, [config]); } + /** * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient. * @@ -2889,6 +3054,7 @@ }; return curried; } + /** * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order. * @@ -2918,6 +3084,7 @@ }; return curried; } + /** * This method returns true. * @@ -2935,6 +3102,7 @@ const stubTrue = () => { return truth; }; + /** * This method returns false. * @@ -2952,6 +3120,7 @@ const stubFalse = () => { return falsy; }; + /** * This method returns undefined. * @@ -2966,6 +3135,7 @@ const noop = () => { return; }; + /** * Iterates based on the amount given invoking the iteratee with the current index as an argument. * @@ -3015,6 +3185,7 @@ } return results; } + class Timers { list = construct(Map); construct() {} @@ -3115,6 +3286,7 @@ timers.remove(index); }); } + const applyNative = Reflect.apply; /** * Calls a target function with an optional "this" and optional arguments as specified. Same as Reflect.apply but with a function check. @@ -3135,6 +3307,7 @@ return applyNative(target, thisArgument, argumentsList); } } + /** * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer. * @@ -3172,6 +3345,7 @@ }; return debounced; } + /** * Checks if the given method is a function. If it is then it invokes it with the given arguments. * @@ -3191,6 +3365,7 @@ return callable(...args); } } + /** * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object. * @@ -3221,6 +3396,7 @@ } return source; } + /** * Invoke an array of functions. * @@ -3249,6 +3425,7 @@ item(value); }); }; + /** * Creates a function that negates the result of the predicate callable. * @@ -3267,6 +3444,7 @@ return !callable(...args); }; } + /** * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned. * @@ -3285,6 +3463,7 @@ return args[index]; }; } + /** * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function. * @@ -3316,6 +3495,7 @@ }; return onlyOnce; }; + /** * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object. * @@ -3342,6 +3522,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object. * @@ -3376,6 +3557,7 @@ } return results; } + /** * Returns the constructor of an object. * @@ -3391,6 +3573,7 @@ function getType(source) { return source?.constructor; } + /** * Returns a new empty object of the same type. * @@ -3407,11 +3590,12 @@ const sourceType = getType(source); if (sourceType === Function) { if (sourceType.name === 'function') { - return function() {}; + return function () {}; } } return construct(sourceType, args); } + /** * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object. * @@ -3451,6 +3635,7 @@ } return results; } + /** * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -3497,6 +3682,7 @@ } return results; } + /** * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object. * @@ -3517,6 +3703,7 @@ * }), {a: 2, b: 4, c: 6}); */ const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync); + /** * Creates a function that invokes iteratee with the arguments it receives and returns their results. * @@ -3537,6 +3724,7 @@ }); }; } + /** * Iterates through the given object while the iteratee returns true. * @@ -3563,6 +3751,7 @@ return iteratee(source[key], key, source, propertyCount, original); }); } + /** * Iterates through the given object while the iteratee returns true. * @@ -3589,6 +3778,7 @@ return iteratee(source[key], key, source, propertyCount, original); }); } + /** * Iterates (for of) through the given object while the iteratee returns true using a for of loop. * @@ -3623,6 +3813,7 @@ } return true; } + /** * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop. * @@ -3664,6 +3855,7 @@ } return true; } + /** * Iterates through the given object while the iteratee returns true. * @@ -3681,6 +3873,7 @@ * }), false); */ const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync); + /** * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives. * @@ -3701,6 +3894,7 @@ }); }; } + /** * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on. * @@ -3726,6 +3920,7 @@ ); }; } + /** * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer. * @@ -3763,6 +3958,7 @@ }; return throttled; } + /** * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function. * @@ -3784,6 +3980,7 @@ return wrapper(value, ...arg); }; } + const functionPrototype = Function.prototype; /** * Caches a prototype method. @@ -3801,6 +3998,7 @@ function cacheNativeMethod(method) { return functionPrototype.call.bind(method); } + /** * Returns an array of all properties (enumerable or not) found directly upon a given object. * @@ -3849,6 +4047,7 @@ */ const defProp = Object.defineProperty; const hasProp = cacheNativeMethod(Object.hasOwnProperty); + /** * Determines whether two values are the same value. * @@ -3863,6 +4062,7 @@ * assert(isSame('foo', 'foo'), true); */ const isSame = Object.is; + /** * Adds two numbers. * @@ -3880,6 +4080,7 @@ function add(augend, addend) { return augend + addend; } + /** * Decrements a number. * @@ -3898,6 +4099,7 @@ function deduct(source) { return source - 1; } + /** * Divides two numbers. * @@ -3915,6 +4117,7 @@ function divide(source, value) { return source / value; } + /** * Increments a number. * @@ -3933,6 +4136,7 @@ function increment(source) { return source + 1; } + /** * Multiplies two numbers. * @@ -3950,6 +4154,7 @@ function multiply(source, value) { return source * value; } + /** * Calculate the progress from a given total and current amount. * @@ -3973,6 +4178,7 @@ } return (currentAmount / total) * 100; } + const { random } = Math; /** * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption. @@ -3992,6 +4198,7 @@ function randomFloat(max, min = 0) { return random() * (max - min) + min; } + /** * Extracts the remainder between two numbers. * @@ -4011,6 +4218,7 @@ function remainder(source, value) { return source % value; } + /** * Subtract all numbers in the array starting from left to right & return the difference. * @@ -4029,6 +4237,7 @@ return a - b; }, 0); } + /** * Sum all numbers in a given array. * @@ -4047,6 +4256,7 @@ return a + b; }, 0); } + /** * Checks if a number is within a range. * @@ -4066,6 +4276,7 @@ function isNumberInRange(source, start, end) { return source > start && source < end; } + /** * Checks if a number is within a range. * @@ -4085,6 +4296,7 @@ function isNumberNotInRange(source, start, end) { return source < start || source > end; } + /** * Checks if a number is negative & returns true or false. * @@ -4102,6 +4314,7 @@ function isPositive(source) { return sign(source) === 1; } + /** * Strictly checks if a number is zero. * @@ -4118,6 +4331,7 @@ function isZero(source) { return source === 0; } + const objectEntries = Object.entries; /** * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error. @@ -4136,6 +4350,7 @@ return objectEntries(source); } } + /** * Extracts all keys from an object whose values are not null or undefined. * @@ -4158,6 +4373,7 @@ }); return compactedKeys; } + /** * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -4184,6 +4400,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -4210,6 +4427,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee. * @@ -4235,6 +4453,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee. * @@ -4260,6 +4479,7 @@ }); return results; } + /** * Creates an inverted version of a given object by switching it's keys and values. * @@ -4283,6 +4503,7 @@ }); return target; } + /** * Performs a shallow strict comparison between two objects. * @@ -4310,6 +4531,7 @@ } return false; }; + /** * Checks if the value is a RegExp. * @@ -4324,6 +4546,7 @@ */ const isRegexCall = isConstructorNameFactory('RegExp'); const isRegex = isTypeFactory(isRegexCall); + /** * Returns a regex safe special characters escaped version of a string. * @@ -4341,6 +4564,7 @@ function escapeRegex(source) { return source.replace(escapeRegexRegex, '\\$&'); } + /** * Convert array of strings to regex. * @@ -4360,6 +4584,7 @@ } return RegExp(source.join('|')); } + /** * Returns a clone of the given object without the given properties. * @@ -4408,6 +4633,7 @@ }); } } + /** * Returns a clone of the source object with the plucked properties. * @@ -4432,6 +4658,7 @@ }); return target; }; + /** * Returns the amount of keys on the object. * @@ -4450,6 +4677,7 @@ } return keys(source).length; } + /** * Creates an object from two arrays, one of property identifiers and one of corresponding values. * @@ -4493,6 +4721,7 @@ }); return [unZippedKeys, values]; }; + const normalizeCase$4 = /[ _-]+/g; /** * Converts a string into Camel case format. @@ -4522,6 +4751,7 @@ }); return result; } + const normalizeCase$3 = /[ _-]+/g; const space$1 = /[ ]+/g; /** @@ -4545,6 +4775,7 @@ .toLowerCase() .replace(space$1, '-'); } + const normalizeCase$2 = /[ _-]+/g; const space = /[ ]+/g; /** @@ -4568,6 +4799,7 @@ .toLowerCase() .replace(space, '_'); } + const normalizeCase$1 = /[ _-]+/g; /** * Converts a string into single space sepperated words in uppercase. @@ -4590,6 +4822,7 @@ .trim() .toUpperCase(); } + const normalizeCase = /[ _-]+/g; /** * Converts a string into single space sepperated words in lowerCase. @@ -4611,6 +4844,7 @@ .trim() .toLowerCase(); } + /** * Inserts text into a string at a given position. * @@ -4698,6 +4932,7 @@ function restString(string, index = 1) { return string.substring(index); } + /** * Replaces all occurrences of strings in an array with a value. * @@ -4716,6 +4951,7 @@ function replaceList(string, words, value) { return string.replace(new RegExp(`\\b${words.join('|')}\\b`, 'gi'), value); } + const truncateDown = (string, maxLength, stringLength) => { const breakAll = string.split(''); const breakAllLength = breakAll.length; @@ -4778,6 +5014,7 @@ const stringLength = string.length; return stringLength > maxLength ? truncateUp(string, maxLength, stringLength) : string; } + const rawURLDecodeRegex = /%(?![\da-f]{2})/gi; const andRegex = /&/g; const lessThanRegex = /console.log('Lucy & diamonds.')`), `<script>console.log('Lucy & diamonds.')</script>`); */ function htmlEntities(string) { - return string.replace(andRegex, '&').replace(lessThanRegex, '<') - .replace(moreThanRegex, '>') - .replace(doubleQuoteRegex, '"'); + return string.replace(andRegex, '&').replace(lessThanRegex, '<').replace(moreThanRegex, '>').replace(doubleQuoteRegex, '"'); } /** * Executes rawURLDecode followd by htmlEntities methods on a string. @@ -4837,6 +5072,7 @@ function sanitize(string) { return htmlEntities(rawURLDecode(string)); } + const tokenizeRegEx = /\S+/g; const wordsRegEx = /\w+/g; /** @@ -4870,6 +5106,7 @@ function words(string) { return string.match(wordsRegEx) || []; } + const getWords = /\w+/g; /** * Returns the first letter capitalized. @@ -4957,6 +5194,7 @@ return upperFirstOnly(match); }); } + /** * Returns the constructor name of an object. * @@ -4972,6 +5210,7 @@ function getTypeName(source) { return getType(source)?.name; } + /** * Checks if the value is an Arguments object. * @@ -4989,6 +5228,7 @@ function isArguments(source) { return hasValue(source) ? source.toString() === objectArguments : false; } + /** * Checks if an object is null or undefined. * @@ -5007,6 +5247,7 @@ function noValue(source) { return !hasValue(source); } + /** * Checks if an object or objects are a Map. * @@ -5022,6 +5263,7 @@ */ const isMapCall = isConstructorNameFactory('Map'); const isMap = isTypeFactory(isMapCall); + /** * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer. * @@ -5046,6 +5288,7 @@ } return false; } + /** * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property. * @@ -5082,6 +5325,7 @@ } return true; } + /** * Checks if an object or objects are a BigInt. * @@ -5096,6 +5340,7 @@ */ const isBigIntCall = isConstructorNameFactory('BigInt'); const isBigInt = isTypeFactory(isBigIntCall); + /** * Checks if the value is a Boolean. * @@ -5111,6 +5356,7 @@ */ const isBooleanCall = isConstructorNameFactory('Boolean'); const isBoolean = isTypeFactory(isBooleanCall); + /** * Checks if an object or objects are a ArrayBuffer. * @@ -5125,6 +5371,7 @@ */ const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer'); const isArrayBuffer = isTypeFactory(isArrayBufferCall); + /** * Checks if an object is the child of another. Typically used for classes. * @@ -5151,6 +5398,7 @@ } return sourceChild instanceof targetParent; } + /** * Checks if an object or objects are a structured-cloneable type. * @@ -5173,6 +5421,7 @@ } return false; } + /** * Checks if the value is a Date. * @@ -5187,6 +5436,7 @@ */ const isDateCall = isConstructorNameFactory('Date'); const isDate = isTypeFactory(isDateCall); + /** * Checks if the value is empty. * @@ -5207,6 +5457,7 @@ } return !hasValue(source); } + /** * Check if a value equals false using strict comparison. * @@ -5225,6 +5476,7 @@ function isFalse(source) { return source === false; } + /** * Checks if an object or objects are a Float32Array. * @@ -5239,6 +5491,7 @@ */ const isF32Call = isConstructorNameFactory('Float32Array'); const isF32 = isTypeFactory(isF32Call); + /** * Checks if an object or objects are a Float64Array. * @@ -5254,6 +5507,7 @@ */ const isF64Call = isConstructorNameFactory('Float64Array'); const isF64 = isTypeFactory(isF64Call); + const { isInteger } = Number; /** * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger. @@ -5269,6 +5523,7 @@ * // => true */ const isFloat = isInteger; + /** * Checks if an object or objects are a Int16Array. * @@ -5284,6 +5539,7 @@ */ const isI16Call = isConstructorNameFactory('Int16Array'); const isI16 = isTypeFactory(isI16Call); + /** * Checks if an object or objects are a Int32Array. * @@ -5297,6 +5553,7 @@ */ const isI32Call = isConstructorNameFactory('Int32Array'); const isI32 = isTypeFactory(isI32Call); + /** * Checks if an object or objects are a Int8Array. * @@ -5312,6 +5569,7 @@ */ const isI8Call = isConstructorNameFactory('Int8Array'); const isI8 = isTypeFactory(isI8Call); + /** * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments. * @@ -5329,6 +5587,7 @@ function isIterable(source) { return hasValue(source) && typeof source[Symbol.iterator] === 'function'; } + /** * Checks if an object is a promise. * @@ -5348,6 +5607,7 @@ } return false; } + /** * Checks if an object is a kind of async object such as async function, promise, or generator. * @@ -5366,6 +5626,7 @@ } return false; } + /** * Checks if an object is the child of another. Typically used for classes. * @@ -5392,6 +5653,7 @@ } return sourceParent instanceof targetChild; } + /** * Checks if an object is a primitive. * @@ -5409,6 +5671,7 @@ const type = typeof value; return source === null || source === undefined || (type !== 'object' && type !== 'function'); } + /** * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways. * @@ -5442,6 +5705,7 @@ } return targetTwo.constructor === targetOne.constructor; } + const { isSafeInteger } = Number; /** * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger. @@ -5457,6 +5721,7 @@ * // => true */ const isSafeInt = isSafeInteger; + function isSameType(source, other) { const sourceType = getType(source); const otherType = getType(other); @@ -5467,6 +5732,7 @@ } return false; } + /** * Check if a value equals true using strict comparison. * @@ -5485,6 +5751,7 @@ function isTrue(source) { return source === true; } + /** * Checks if an object or objects are a Uint16Array. * @@ -5500,6 +5767,7 @@ */ const isU16Call = isConstructorNameFactory('Uint16Array'); const isU16 = isTypeFactory(isU16Call); + /** * Checks if an object or objects are a Uint32Array. * @@ -5515,6 +5783,7 @@ */ const isU32Call = isConstructorNameFactory('Uint32Array'); const isU32 = isTypeFactory(isU32Call); + /** * Checks if an object or objects are a Uint8Array. * @@ -5530,6 +5799,7 @@ */ const isU8Call = isConstructorNameFactory('Uint8Array'); const isU8 = isTypeFactory(isU8Call); + /** * Checks if an object or objects are a Uint8ClampedArray. * @@ -5545,6 +5815,7 @@ */ const isU8CCall = isConstructorNameFactory('Uint8ClampedArray'); const isU8C = isTypeFactory(isU8CCall); + /** * Checks if an object or objects are a WeakMap. * @@ -5559,8 +5830,11 @@ */ const isWeakMapCall = isConstructorNameFactory('WeakMap'); const isWeakMap = isTypeFactory(isWeakMapCall); + const isDeno = typeof globalThis.Deno !== 'undefined'; + const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node; + /** * Check if a value is isTruthy which is anything but false, null, 0, "", undefined, and NaN. * @@ -5579,6 +5853,7 @@ function isTruthy(source, returnIfTrue = true) { return Boolean(source) && returnIfTrue; } + /** * Check if a value is isFalsy which are false, null, 0, "", undefined, and NaN. * @@ -5597,6 +5872,7 @@ function isFalsy(source, returnIfTrue = true) { return Boolean(source) === false && returnIfTrue; } + /** * If source has a value then assign it to an object or call a function. * @@ -5625,6 +5901,7 @@ } } } + /** * Performs a deep comparison between two objects & determines if they're different using strict comparison. * @@ -5642,6 +5919,7 @@ function notEqual(source, target) { return isFalse(isEqual(source, target)); } + const jsonNative = JSON; /** * Parses JSON string with safety check for undefined. @@ -5676,6 +5954,7 @@ * assert(stringify({a:1}), '{a:1}'); */ const stringify = jsonNative.stringify; + function createAssertError(source, expected, localOptions) { const options = globalThis.options || localOptions; let errorTitle; @@ -5726,6 +6005,7 @@ } return true; } + /** * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to. * @@ -5748,6 +6028,7 @@ }); return targetAssign ? assign(targetAssign, results) : results; } + /** * Clears the values out of an array, buffer, and objects like Map that have a clear method. * @@ -5775,6 +6056,7 @@ } return source; } + /** * Creates a structured clone of an object which is a "structured-cloneable type". * @@ -5792,6 +6074,7 @@ function clone(source) { return structuredCloneSafe(source); } + /** * Creates an array with all isFalsy values removed. The values false, null, 0, "", undefined, and NaN are isFalsy. * @@ -5824,6 +6107,7 @@ return isTruthy(item); }); } + /** * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -5879,6 +6163,7 @@ } return results; } + /** * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -5924,6 +6209,7 @@ } return results; } + /** * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -5949,9 +6235,10 @@ forOfCompactMap, forOfCompactMapAsync ); + function everyArg(...methods) { if (isAsync(methods[0])) { - return async function(...args) { + return async function (...args) { return every(methods, async (method) => { return every(args, async (item) => { return method(item); @@ -5959,7 +6246,7 @@ }); }; } - return function(...args) { + return function (...args) { return every(methods, (method) => { return every(args, (item) => { return method(item); @@ -5967,6 +6254,7 @@ }); }; } + /** * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee. * @@ -6012,6 +6300,7 @@ } return results; } + /** * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee. * @@ -6066,6 +6355,7 @@ } return results; } + /** * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee. * @@ -6084,6 +6374,7 @@ * }), {b: true, c: true}); */ const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync); + function returnFlow$1(callable) { return (...methods) => { return (arg) => { @@ -6123,6 +6414,7 @@ * // => 1 */ const flowRight = returnFlow$1(eachRight); + function returnFlow(callable) { return (...methods) => { return async (arg) => { @@ -6164,6 +6456,7 @@ * // => 2 */ const flowAsyncRight = returnFlow(eachRightAsync); + function forMap(source, callback) { const cloned = cloneType(source); const method = cloned.push || cloned.add; @@ -6186,6 +6479,7 @@ } return cloned; } + /** * Takes all but the last item in the array. * @@ -6207,6 +6501,7 @@ }); return sortedObject; } + /** * Checks if an object contains something. * @@ -6257,6 +6552,7 @@ } return false; } + /** * Checks if the string has a '.'. * @@ -6270,6 +6566,7 @@ * assert(hasDot('test.js'), true); */ const hasDot = regexTestFactory(/\./); + /** * Checks if a property on an object has a value. If not, it will assign a value. * @@ -6291,6 +6588,7 @@ } return rootObject; }; + class Intervals { list = construct(Map); construct() {} @@ -6384,6 +6682,7 @@ intervals.remove(index); }); } + function merge(target, ...sources) { each(sources, (currentSource) => { each(currentSource, (sourceItem, sourceKey) => { @@ -6397,6 +6696,7 @@ }); return target; } + /** * Set & Get a model. * @@ -6435,6 +6735,7 @@ } return get(modelName, Model.models); } + /** * Takes the first two arguments given and returns them inside a new array. * @@ -6451,6 +6752,7 @@ function pair(argument1, argument2) { return [argument1, argument2]; } + /** * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee. * @@ -6478,6 +6780,7 @@ } return Promise.all(queue); } + /** * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee. * @@ -6505,6 +6808,7 @@ } return Promise.allSettled(queue); } + /** * A wrapper around the promise constructor. * @@ -6527,6 +6831,7 @@ function promise(callback) { return new Promise(callback); } + /** * Using a deep comparison it checks if properties of two objects using an array are equal. * @@ -6553,6 +6858,7 @@ return isEqual(source[property], compared[property]); }); }; + function setKey(source, key, value) { if (key && isPlainObject(source)) { source[key] = value; @@ -6569,6 +6875,7 @@ } return source; } + function setValue(source, value, key) { if (isNumber(key) && isArray(source)) { source[key] = value; @@ -6581,6 +6888,7 @@ } return source; } + class Store { source; constructor(source = {}) { @@ -6604,6 +6912,7 @@ }); } } + /** * This method returns a new empty array. * @@ -6619,6 +6928,7 @@ const stubArray = () => { return []; }; + /** * This method returns a new empty object. * @@ -6635,6 +6945,7 @@ const stubObject = () => { return {}; }; + /** * This method returns a new empty string. * @@ -6651,6 +6962,7 @@ const stubString = () => { return ''; }; + /** * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument. * @@ -6702,6 +7014,7 @@ } return results; } + /** * Performs a toggle between 2 values using a deep or strict comparison. * @@ -6722,6 +7035,7 @@ function toggle(value, on = true, off = false) { return isEqual(on, value) ? off : on; } + /** * Unique ID Generator Module. * @@ -6817,6 +7131,7 @@ * assert(uniqID.get(), 0); */ const uniqID = construct(UniqID); + /** * Class representing a virtual storage. A drop in replacement for localStorage. * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it. @@ -6918,6 +7233,7 @@ function virtualStorage(initialObject) { return new VirtualStorage(initialObject); } + /** * Checks to see of the browser agent has a string. * @@ -6952,6 +7268,7 @@ isAgent[item] = true; }); } + /** * Attaches an event listener to a node. * @@ -6992,6 +7309,7 @@ node.removeEventListener(eventName, callback, useCapture); return node; } + /** * Checks if the keycode of the event is strictly equal to 13. * @@ -7008,6 +7326,7 @@ function isEnter(eventObject) { return eventObject.keyCode === 13; } + /** * Create a document fragment. * @@ -7018,6 +7337,7 @@ * @returns {Fragment} - Returns a new document fragment. */ const createFragment = document.createDocumentFragment.bind(document); + /** * Append a DOM node. * @@ -7034,6 +7354,7 @@ parentNode.appendChild(child); return child; } + /** * Assign attributes to a DOM node. * @@ -7063,6 +7384,7 @@ }); return node; } + const dotString = '.'; const poundString = '#'; const classTest = /^.[\w_-]+$/; @@ -7130,23 +7452,24 @@ function selector(select) { const firstLetter = select[0]; switch (firstLetter) { - case poundString: - if (!regexSpace.test(select)) { - return getById(restString(select)); - } - break; - case dotString: - if (classTest.test(select)) { - return getByClass(restString(select)); - } - break; - default: - if (tagTest.test(select)) { - return getByTag(select); - } + case poundString: + if (!regexSpace.test(select)) { + return getById(restString(select)); + } + break; + case dotString: + if (classTest.test(select)) { + return getByClass(restString(select)); + } + break; + default: + if (tagTest.test(select)) { + return getByTag(select); + } } return querySelectorAll(select); } + const createElementCache = document.createElement.bind(document); const nodeAttachLoadingEvents = (node) => { return promise((accept) => { @@ -7178,6 +7501,7 @@ }); return nodeAttachLoadingEvents(node); } + /** * Runs a function if the document has finished loading. If not, add an eventlistener. * @@ -7208,6 +7532,7 @@ const scriptName = (scriptTag && scriptTag.getAttribute('data-index')) || '/index'; importjs(scriptName); }); + const protocol = location.protocol; const protocolSocket = protocol === 'http:' ? 'ws' : 'wss'; const hostname = location.hostname; @@ -7230,6 +7555,7 @@ protocolSocket } }; + function saveDimensions() { assign(info, { bodyHeight: document.body.offsetHeight, @@ -7256,6 +7582,7 @@ isDocumentReady(updateDimensions); eventAdd(window, 'load', updateDimensions, true); eventAdd(window, 'resize', updateDimensions, true); + /** * LocalStorage Module.. * @@ -7405,6 +7732,7 @@ function crate(virtualFlag) { return new Crate(virtualFlag); } + const generateTheme = (color, bg) => { return `color:${color};background:${bg};`; }; @@ -7454,6 +7782,7 @@ const cnslTheme = (themeName, color, background) => { themes[themeName] = generateTheme(color, background); }; + /** * Checks if value is a plain DOM Node. * @@ -7506,6 +7835,7 @@ function isNodeList(source) { return hasValue(source) ? source.toString() === objectNodeList : false; } + exports.Chain = Chain; exports.Crate = Crate; exports.Intervals = Intervals; @@ -7655,8 +7985,9 @@ exports.interval = interval; exports.intervals = intervals; exports.invert = invert; - exports.invoke = invoke; - exports.invokeAsync = invokeAsync; + exports.invokeArray = invokeArray; + exports.invokeCollection = invokeCollection; + exports.invokeCollectionAsync = invokeCollectionAsync; exports.isAgent = isAgent; exports.isArguments = isArguments; exports.isArray = isArray; @@ -7881,4 +8212,4 @@ exports.zip = zip; exports.zipObject = zipObject; }); -// # sourceMappingURL=browser.bundle.js.map +//# sourceMappingURL=browser.bundle.js.map diff --git a/build/browser.bundle.js.map b/build/browser.bundle.js.map index 57b00180..b0da8c7e 100644 --- a/build/browser.bundle.js.map +++ b/build/browser.bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"browser.bundle.js","sources":["../source/arrays/chunk.js","../source/arrays/clear.js","../source/arrays/clone.js","../source/types/isUndefined.js","../source/utilities/hasLength.js","../source/types/isNull.js","../source/types/hasValue.js","../source/utilities/returnValue.js","../source/arrays/each.js","../source/arrays/compactMap.js","../source/arrays/eachAsync.js","../source/arrays/compactMapAsync.js","../source/numbers/isNegative.js","../source/arrays/range.js","../source/utilities/forEach.js","../source/types/isArray.js","../source/arrays/ensure.js","../source/arrays/flattenDeep.js","../source/classes/construct.js","../source/arrays/difference.js","../source/arrays/drop.js","../source/arrays/dropRight.js","../source/arrays/eachRight.js","../source/arrays/eachRightAsync.js","../source/arrays/every.js","../source/arrays/everyAsync.js","../source/arrays/filter.js","../source/arrays/filterAsync.js","../source/arrays/first.js","../source/arrays/flatten.js","../source/arrays/initial.js","../source/arrays/intersect.js","../source/objects/keys.js","../source/utilities/toPath.js","../source/utilities/get.js","../source/objects/hasKeys.js","../source/types/isPlainObject.js","../source/types/isConstructor.js","../source/types/isTypeFactory.js","../source/types/isBuffer.js","../source/utilities/isEqual.js","../source/arrays/isMatch.js","../source/arrays/largest.js","../source/arrays/last.js","../source/arrays/map.js","../source/arrays/mapAsync.js","../source/arrays/mapRight.js","../source/arrays/mapWhile.js","../source/math/subtract.js","../source/arrays/sortNumberAscending.js","../source/arrays/partition.js","../source/math/subtractReverse.js","../source/arrays/sortNumberDescening.js","../source/arrays/remove.js","../source/arrays/rest.js","../source/arrays/right.js","../source/math/randomInt.js","../source/internal/array.js","../source/numbers/isNumberEqual.js","../source/arrays/shuffle.js","../source/arrays/sample.js","../source/arrays/smallest.js","../source/arrays/getNumberInsertIndex.js","../source/arrays/take.js","../source/arrays/takeRight.js","../source/arrays/unique.js","../source/arrays/union.js","../source/arrays/untilFalse.js","../source/arrays/untilTrue.js","../source/arrays/whileCompactMap.js","../source/arrays/whileEach.js","../source/arrays/whileMap.js","../source/arrays/without.js","../source/arrays/xor.js","../source/arrays/zip.js","../source/buffers/ensure.js","../source/buffers/clear.js","../source/collection/countBy.js","../source/collection/countKey.js","../source/collection/countWithoutKey.js","../source/collection/findIndexCache.js","../source/collection/findIndex.js","../source/collection/findItem.js","../source/collection/sortCollectionDescending.js","../source/collection/sortCollectionAlphabetically.js","../source/collection/sortCollectionAscending.js","../source/collection/getHighest.js","../source/collection/getLowest.js","../source/collection/groupBy.js","../source/collection/indexBy.js","../source/collection/invoke.js","../source/collection/invokeAsync.js","../source/types/isNumber.js","../source/types/isString.js","../source/objects/pluckObject.js","../source/collection/pluck.js","../source/collection/sortCollectionAlphabeticallyReverse.js","../source/files/getExtension.js","../source/files/getFilename.js","../source/internal/regexTestFactory.js","../source/files/isFileCSS.js","../source/files/isFileHTML.js","../source/files/isFileJS.js","../source/files/isFileJSON.js","../source/functions/after.js","../source/functions/ary.js","../source/functions/before.js","../source/objects/assign.js","../source/objects/eachAsync.js","../source/objects/each.js","../source/utilities/forEachAsync.js","../source/types/isSet.js","../source/utilities/forOf.js","../source/types/isGenerator.js","../source/utilities/forOfAsync.js","../source/types/isFunction.js","../source/types/isAsync.js","../source/utilities/generateLoop.js","../source/utilities/each.js","../source/functions/chain.js","../source/functions/curry.js","../source/functions/curryRight.js","../source/utilities/stubTrue.js","../source/utilities/stubFalse.js","../source/utilities/noop.js","../source/utilities/times.js","../source/utilities/timer.js","../source/internal/apply.js","../source/functions/debounce.js","../source/functions/ifInvoke.js","../source/functions/inAsync.js","../source/functions/inSync.js","../source/functions/negate.js","../source/functions/nthArg.js","../source/functions/once.js","../source/objects/mapAsync.js","../source/objects/map.js","../source/types/getType.js","../source/types/cloneType.js","../source/utilities/forOfMap.js","../source/utilities/forOfMapAsync.js","../source/utilities/map.js","../source/functions/over.js","../source/objects/everyAsync.js","../source/objects/every.js","../source/utilities/forOfEvery.js","../source/utilities/forOfEveryAsync.js","../source/utilities/every.js","../source/functions/overEvery.js","../source/functions/rearged.js","../source/functions/throttle.js","../source/functions/wrap.js","../source/utilities/cacheNativeMethod.js","../source/internal/object.js","../source/internal/isSame.js","../source/math/add.js","../source/math/deduct.js","../source/math/divide.js","../source/math/increment.js","../source/math/multiple.js","../source/math/progress.js","../source/math/randomFloat.js","../source/math/remainder.js","../source/math/subtractAll.js","../source/math/sumAll.js","../source/numbers/isNumberInRange.js","../source/numbers/isNumberNotInRange.js","../source/numbers/isPositive.js","../source/numbers/isZero.js","../source/objects/getEntries.js","../source/objects/compactKeys.js","../source/objects/compactMapAsync.js","../source/objects/compactMap.js","../source/objects/filter.js","../source/objects/filterAsync.js","../source/objects/invert.js","../source/objects/isMatch.js","../source/types/isRegex.js","../source/regexps/escapeRegex.js","../source/regexps/arrayToRegex.js","../source/objects/omit.js","../source/objects/pick.js","../source/objects/size.js","../source/objects/zip.js","../source/strings/camelCase.js","../source/strings/kebabCase.js","../source/strings/snakeCase.js","../source/strings/upperCase.js","../source/strings/lowerCase.js","../source/strings/range.js","../source/strings/replace.js","../source/strings/truncate.js","../source/strings/sanitize.js","../source/strings/tokenize.js","../source/strings/typography.js","../source/types/getTypeName.js","../source/types/isArguments.js","../source/types/noValue.js","../source/types/isMap.js","../source/types/isTypedArray.js","../source/types/isArrayLike.js","../source/types/isBigInt.js","../source/types/isBoolean.js","../source/types/isArrayBuffer.js","../source/types/isChild.js","../source/types/isCloneable.js","../source/types/isDate.js","../source/types/isEmpty.js","../source/types/isFalse.js","../source/types/isF32.js","../source/types/isF64.js","../source/types/isFloat.js","../source/types/isI16.js","../source/types/isI32.js","../source/types/isI8.js","../source/types/isIterable.js","../source/types/isPromise.js","../source/types/isKindAsync.js","../source/types/isParent.js","../source/types/isPrimitive.js","../source/types/isRelated.js","../source/types/isSafeInt.js","../source/types/isSameType.js","../source/types/isTrue.js","../source/types/isU16.js","../source/types/isU32.js","../source/types/isU8.js","../source/types/isU8C.js","../source/types/isWeakMap.js","../source/types/isDeno.js","../source/types/isNode.js","../source/types/isTruthy.js","../source/types/isFalsy.js","../source/utilities/ifValue.js","../source/utilities/notEqual.js","../source/utilities/json.js","../source/utilities/assert.js","../source/utilities/bindAll.js","../source/utilities/clear.js","../source/utilities/clone.js","../source/utilities/compact.js","../source/utilities/forOfCompactMapAsync.js","../source/utilities/forOfCompactMap.js","../source/utilities/compactMap.js","../source/utilities/everyArg.js","../source/utilities/forOfFilter.js","../source/utilities/forOfFilterAsync.js","../source/utilities/filter.js","../source/utilities/flow.js","../source/utilities/flowAsync.js","../source/utilities/forMap.js","../source/utilities/arraysToObject.js","../source/utilities/has.js","../source/utilities/hasDot.js","../source/utilities/ifNotAssign.js","../source/utilities/interval.js","../source/utilities/merge.js","../source/utilities/model.js","../source/utilities/pair.js","../source/utilities/concurrent.js","../source/utilities/concurrentStatus.js","../source/utilities/promise.js","../source/utilities/propertyMatch.js","../source/utilities/setKey.js","../source/utilities/setValue.js","../source/utilities/store.js","../source/utilities/stubArray.js","../source/utilities/stubObject.js","../source/utilities/stubString.js","../source/utilities/timesAsync.js","../source/utilities/toggle.js","../source/utilities/uid.js","../source/utilities/virtualStorage.js","../source/browser/agent.js","../source/browser/event.js","../source/browser/isEnter.js","../source/browser/frag.js","../source/browser/append.js","../source/browser/attribute.js","../source/browser/selector.js","../source/browser/importScript.js","../source/browser/ready.js","../source/browser/info.js","../source/browser/dimensions.js","../source/browser/storage.js","../source/browser/console.js","../source/browser/is.js"],"sourcesContent":["/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invoke\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invoke(collection, property, value) {\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * (async () => {\n * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]);\n * });\n *\n * @example\n * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invokeAsync(collection, property, value) {\n\treturn mapAsyncArray(collection, async (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from '../objects/each.js';\nimport { isBoolean } from '../types/isBoolean.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Checks to see of the browser agent has a string.\n *\n * @function isAgent\n * @category browser\n * @type {Function}\n * @param {String} source - The string to search for.\n * @returns {Boolean} - Returns true or false.\n * @example\n * isAgent('mobile');\n * // => false\n */\nexport function isAgent(source) {\n\treturn (source) ? isAgent[source] : keys(isAgent);\n}\nconst userAgent = globalThis.navigator?.userAgentData;\nif (userAgent) {\n\teachObject(userAgent, (value, key) => {\n\t\tif (isBoolean(value) && value) {\n\t\t\tisAgent[key] = value;\n\t\t}\n\t});\n\teachArray(userAgent.brands, (value) => {\n\t\tisAgent[value.brand] = value.version;\n\t});\n} else if (navigator.userAgent) {\n\tlet userAgentNormalized = navigator.userAgent.toLowerCase();\n\tuserAgentNormalized = userAgentNormalized.replace(/_/g, '.');\n\tuserAgentNormalized = userAgentNormalized.replace(/[#_,;()]/g, '');\n\tconst userAgentSplit = userAgentNormalized.split(/ |\\//);\n\teachArray(userAgentSplit, (item) => {\n\t\tisAgent[item] = true;\n\t});\n}\n\n","/**\n * Attaches an event listener to a node.\n *\n * @function eventAdd\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventAdd(document.body, 'click', () => {console.log('CLICKED');});\n * // = > document.body\n */\nexport function eventAdd(node, eventName, callback, useCapture) {\n\tnode.addEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n/**\n * Attaches an event listener to a node.\n *\n * @function eventRemove\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventRemove(document.body, () => {console.log('CLICKED');});\n * // = > Undefined\n */\nexport function eventRemove(node, eventName, callback, useCapture) {\n\tnode.removeEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n\n","/**\n * Checks if the keycode of the event is strictly equal to 13.\n *\n * @function isEnter\n * @category browser\n * @type {Function}\n * @param {Object} eventObject - Object to be checked.\n * @returns {Boolean} - Returns true if the keycode property of the object equals 13.\n *\n * @example\n * isEnter('click');\n * // => false\n */\nexport function isEnter(eventObject) {\n\treturn eventObject.keyCode === 13;\n}\n\n","/**\n * Create a document fragment.\n *\n * @function createFragment\n * @category browser\n * @type {Function}\n * @ignore\n * @returns {Fragment} - Returns a new document fragment.\n*/\nexport const createFragment = document.createDocumentFragment.bind(document);\n","/**\n * Append a DOM node.\n *\n * @function append\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @ignore\n * @param {Node} parentNode - The parent node.\n * @param {Node} child - The node to be appended.\n * @returns {undefined} - Returns the child.\n */\nexport function append(parentNode, child) {\n\tparentNode.appendChild(child);\n\treturn child;\n}\n","import { eachObject } from '../objects/each.js';\nimport { isArray } from '../types/isArray.js';\nimport { mapArray } from '../arrays/map.js';\nimport { zipObject } from '../objects/zip.js';\n/**\n * Assign attributes to a DOM node.\n *\n * @function nodeAttribute\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @async\n * @param {Node} node - The DOM node.\n * @param {Object|Array} object - Object with key being the attribute name and the value being the attribute value. If an array is given it will get the values corresponding to the array items.\n * @returns {Object|Node} - If using an array this returns an object of attribute names as keys and their values as the property value. If using an object this will return the provided node.\n *\n * @example\n * nodeAttribute(document.body, { 'data-example': 'test'});\n */\nexport function nodeAttribute(node, object) {\n\tif (isArray(object)) {\n\t\treturn zipObject(object, mapArray(object, (item) => {\n\t\t\treturn node.getAttribute(item);\n\t\t}));\n\t}\n\teachObject(object, (item, key) => {\n\t\tnode.setAttribute(key, item);\n\t});\n\treturn node;\n}\n\n","import { restString } from '../strings/range.js';\nconst dotString = '.';\nconst poundString = '#';\nconst classTest = /^.[\\w_-]+$/;\nconst tagTest = /^[A-Za-z]+$/;\nconst regexSpace = /\\s/;\n/**\n * Wrapper around getElementsByClassName.\n *\n * @function getByClass\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByClass = document.getElementsByClassName.bind(document);\n/**\n * Wrapper around getElementsByTagName.\n *\n * @function getByTag\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByTag = document.getElementsByTagName.bind(document);\n/**\n * Wrapper around getElementsByIdName.\n *\n * @function getById\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getById = document.getElementById.bind(document);\n/**\n * Wrapper around querySelector.\n *\n * @function querySelector\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelector = document.querySelector.bind(document);\n/**\n * Wrapper around querySelectorAll.\n *\n * @function querySelectorAll\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelectorAll = document.querySelectorAll.bind(document);\n/**\n * Returns relevant DOM node.\n *\n * @function selector\n * @category browser\n * @ignoreTest\n * @param {String} select - String to be evaluated.\n * @type {Function}\n * @returns {Node} - Returns a DOM node.\n *\n * @example\n * selector('#node');\n * // =>
\n */\nexport function selector(select) {\n\tconst firstLetter = select[0];\n\tswitch (firstLetter) {\n\tcase poundString:\n\t\tif (!regexSpace.test(select)) {\n\t\t\treturn getById(restString(select));\n\t\t}\n\t\tbreak;\n\tcase dotString:\n\t\tif (classTest.test(select)) {\n\t\t\treturn getByClass(restString(select));\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tif (tagTest.test(select)) {\n\t\t\treturn getByTag(select);\n\t\t}\n\t}\n\treturn querySelectorAll(select);\n}\n\n","import { append } from './append.js';\nimport { hasDot } from '../utilities/hasDot.js';\nimport { eventAdd } from './event.js';\nimport { nodeAttribute } from './attribute.js';\nimport { promise } from '../utilities/promise.js';\nimport { querySelector } from './selector.js';\nconst createElementCache = document.createElement.bind(document);\nconst nodeAttachLoadingEvents = (node) => {\n\treturn promise((accept) => {\n\t\teventAdd(node, 'load', accept, true);\n\t\teventAdd(node, 'error', accept, true);\n\t\tappend(querySelector('head'), node);\n\t});\n};\n/**\n * Asynchronously import a js file and append it to the head node.\n * If a script fails to load importjs won't reject the promise rather it'll return the error event to limit further complications & reduce code complexity.\n *\n * @function importjs\n * @category browser\n * @type {Function}\n * @async\n * @param {*} url - URL of the script to import. If not \".\" is found in the file name \".js\" will be appended.\n * @returns {Promise} - Returns a promise which returns a \"load\" or \"error\" event associated with the script.\n *\n * @example\n * importjs('core.js');\n * importjs('core');\n */\nexport function importjs(url) {\n\tconst src = hasDot(url) && url || `${url}.js`;\n\tconst node = nodeAttribute(createElementCache('script'), {\n\t\tasync: '',\n\t\tsrc\n\t});\n\treturn nodeAttachLoadingEvents(node);\n}\n\n","import { eventAdd } from './event.js';\nimport { importjs } from './importScript.js';\nimport { getById } from './selector.js';\n/**\n * Runs a function if the document has finished loading. If not, add an eventlistener.\n *\n * @function isDocumentReady\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Function} callable - Function to be run.\n * @returns {Boolean|Function} - If the document is ready, returns a function. If not, return false.\n *\n * @example\n * isDocumentReady(() => {return 1});\n * // => 1\n */\nexport function isDocumentReady(callable) {\n\tconst state = document.readyState;\n\tconst checkStatus = state === 'interactive' || state === 'completed' || state === 'complete';\n\tif (checkStatus) {\n\t\treturn (callable) ? callable() : true;\n\t}\n\tif (callable) {\n\t\teventAdd(document, 'DOMContentLoaded', callable);\n\t}\n\treturn false;\n}\nisDocumentReady(() => {\n\tconst scriptTag = getById('AcidLib');\n\tconst scriptName = (scriptTag && scriptTag.getAttribute('data-index')) || '/index';\n\timportjs(scriptName);\n});\n","const protocol = location.protocol;\nconst protocolSocket = (protocol === 'http:') ? 'ws' : 'wss';\nconst hostname = location.hostname;\n/**\n * Holds client hardware, browser, and host info.\n *\n * @memberof $\n * @category browser\n * @ignoreTest\n * @property {Object} info - Client hardware & host info.\n * @type {Object}\n */\nexport const info = {\n\thardware: {\n\t\tcores: navigator.hardwareConcurrency\n\t},\n\thost: {\n\t\tname: hostname,\n\t\tprotocol,\n\t\tprotocolSocket,\n\t}\n};\n\n","import { assign } from '../objects/assign.js';\nimport { eventAdd } from './event.js';\nimport { info } from './info.js';\nimport { isDocumentReady } from './ready.js';\nexport function saveDimensions() {\n\tassign(info, {\n\t\tbodyHeight: document.body.offsetHeight,\n\t\tbodyWidth: document.body.offsetWidth,\n\t\twindowHeight: window.innerHeight,\n\t\twindowWidth: window.innerWidth,\n\t});\n}\n/**\n * Save current document & window dimensions to the info property.\n *\n * @function updateDimensions\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * updateDimensions();\n */\nexport function updateDimensions() {\n\tsaveDimensions();\n}\nisDocumentReady(updateDimensions);\neventAdd(window, 'load', updateDimensions, true);\neventAdd(window, 'resize', updateDimensions, true);\n\n","/**\n * LocalStorage Module..\n *\n * @module browser/storage\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nimport { virtualStorage } from '../utilities/virtualStorage.js';\nexport let hasLocal;\nfunction hasStorage(storeCheck) {\n\ttry {\n\t\tstoreCheck().removeItem('TESTING');\n\t\thasLocal = true;\n\t} catch (e) {\n\t\thasLocal = false;\n\t}\n}\nhasStorage(() => {\n\treturn localStorage;\n});\n/**\n * Constructs a virtual storage container with localStorage support.\n * Crate will fallback to strictly virtual storage if localStorage isn't supported.\n * If localStorage is supported virtual storage will be used first & only fallback to localStorage when needed.\n * Crate is ideal as a seemless drop in replacement for localStorage when not supported or allowed.\n *\n * @class Crate\n * @category browser\n * @returns {Crate} - Returns a new instance of Crate.\n *\n * @example\n * import { Crate, construct, assert } from '@universalweb/acid';\n * const storageCrate = construct(Crate);\n * storageCrate.setItem('key', 'value');\n * assert(storageCrate.getItem('key'), 'value');\n */\nexport class Crate {\n\tconstructor(initialObject) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local = localStorage;\n\t\t}\n\t\tthis.storage = virtualStorage(initialObject);\n\t}\n\thasLocal = hasLocal;\n\t/**\n\t * Save an item to a crate.\n\t *\n\t * @function setItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.setItem(key, (isString(value)) ? value : stringify(value));\n\t\t}\n\t\treturn this.storage.setItem(key, value);\n\t}\n\t/**\n\t * Get an item from a crate.\n\t *\n\t * @function getItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tgetItem(key) {\n\t\tconst item = this.storage.getItem(key);\n\t\tif (hasValue(item)) {\n\t\t\treturn item;\n\t\t}\n\t\tif (!hasValue(item) && this.hasLocal) {\n\t\t\treturn this.local.getItem(key);\n\t\t}\n\t}\n\t/**\n\t * Clears all data for the crate including all of localStorage if supported.\n\t *\n\t * @function clear\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.clear();\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tclear() {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.clear();\n\t\t}\n\t\tthis.storage.clear();\n\t}\n\t/**\n\t * Remove an item from a crate.\n\t *\n\t * @class Crate\n\t * @category browser\n\t * @function removeItem\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.removeItem('key');\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tremoveItem(key) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.removeItem(key);\n\t\t}\n\t\tthis.storage.removeItem(key);\n\t}\n}\n/**\n * The crate function is a factory which wraps the Crate class constructor.\n *\n * @function crate\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new Crate Object.\n *\n * @example\n * const storageCrate = crate();\n * // => New Crate Object\n */\nexport function crate(virtualFlag) {\n\treturn new Crate(virtualFlag);\n}\n\n","import { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nconst generateTheme = (color, bg) => {\n\treturn `color:${color};background:${bg};`;\n};\nexport const themes = {\n\talert: generateTheme('#fff', '#f44336'),\n\timportant: generateTheme('#fff', '#E91E63'),\n\tnotify: generateTheme('#fff', '#651FFF'),\n\twarning: generateTheme('#000', '#FFEA00'),\n};\n/**\n * Console.trace wrapper with theme support.\n *\n * @function cnsl\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Object} value - The value to be logged.\n * @param {String} themeName - The name of the theme to be used.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnsl('Lucy', 'notify');\n * // 'Lucy'\n*/\nexport const cnsl = (value, themeName) => {\n\tconst data = isString(value) ? value : stringify(value);\n\tif (themeName === 'alert' || themeName === 'warning') {\n\t\treturn console.trace(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n\t}\n\tconsole.log(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n};\n/**\n * Create color themes for cnsl method.\n *\n * @function cnslTheme\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {String} themeName - The name of the theme.\n * @param {String} color - The text color.\n * @param {String} background - The background color of the block.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnslTheme('BlackNWhite', '#fff', '#000');\n*/\nexport const cnslTheme = (themeName, color, background) => {\n\tthemes[themeName] = generateTheme(color, background);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { difference } from '../arrays/difference.js';\n/**\n * Checks if value is a plain DOM Node.\n *\n * @function isDom\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDom, assert } from '@universalweb/acid';\n * assert(isDom(document.querySelectorAll('head')), true);\n */\nexport function isDom(source) {\n\treturn source && source.nodeType !== 9;\n}\n/**\n * Checks if the value is a HTMLCollection.\n *\n * @function isHTMLCollection\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isHTMLCollection, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isHTMLCollection(document.getElementsByClassName('test')), true);\n */\nconst objectHTMLCollection = '[object HTMLCollection]';\nexport function isHTMLCollection(source) {\n\treturn (hasValue(source)) ? source.toString() === objectHTMLCollection : false;\n}\n/**\n * Checks if the value is a NodeList.\n *\n * @function isNodeList\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNodeList, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isNodeList(document.querySelectorAll('.test')), true);\n */\nconst objectNodeList = '[object NodeList]';\nexport function isNodeList(source) {\n\treturn (hasValue(source)) ? source.toString() === objectNodeList : false;\n}\n"],"names":["sign","random","normalizeCase","space","returnFlow","hasLocal"],"mappings":"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AAC;CACxB;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE;CAC/B,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;CACnB;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;CACtC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;CACvB;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE;CAClC,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;CACnB;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;CACxC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;CACvB;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE;CACnD,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;CAClB,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;CACF,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE;CAC1B,EAAE,OAAO,CAAC,CAAC;CACX,EAAE;CACF,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,IAAI,GAAG,CAAC;CACtC;;CCtBA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;CAC1C,CAAC,OAAO,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;CACrC;;CClBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;CACzC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;CACvB;;CClBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;CAChC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;CACf,EAAE,EAAE,CAAC,CAAC,CAAC;CACP;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE;CAC/B,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;CAChC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;CACf,EAAE,EAAE,CAAC,CAAC,CAAC;CACP;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;CACpD,CAAC,OAAO,MAAM,GAAG,KAAK,IAAI,MAAM,GAAG,GAAG,CAAC;CACvC;;CClBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;CACvD,CAAC,OAAO,MAAM,GAAG,KAAK,IAAI,MAAM,GAAG,GAAG,CAAC;CACvC;;CClBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CACf,SAAS,UAAU,CAAC,MAAM,EAAE;CACnC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAC3B;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE;CAC/B,CAAC,OAAO,MAAM,KAAK,CAAC,CAAC;CACrB;;ACdY,OAAC,aAAa,GAAG,MAAM,CAAC,QAAQ;CAC5C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,MAAM,EAAE;CACnC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACvB,EAAE,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;CAC/B,EAAE;CACF;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;CAC1B,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;CACnC,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;CACtB,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC3B,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,aAAa,CAAC;CACtB;;CCpBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,qBAAqB,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE,OAAO,GAAG,EAAE,EAAE;CAC1F,CAAC,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,KAAK;CACzF,EAAE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;CACzF,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACxB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;CACzB,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,OAAO,CAAC;CAChB;;CCxBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE,OAAO,GAAG,EAAE,EAAE;CAC/E,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,KAAK;CACxE,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;CACnF,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACxB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;CACzB,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,OAAO,CAAC;CAChB;;CC7BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;CAC7D,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,KAAK;CACxE,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,KAAK,IAAI,EAAE;CAClF,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CACvB,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,OAAO,CAAC;CAChB;;CCxBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;CACxE,CAAC,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,KAAK;CACzF,EAAE,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,KAAK,IAAI,EAAE;CACxF,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CACvB,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,OAAO,CAAC;CAChB;;CCvBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE;CAC5C,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;CACnC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;CACrB,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,MAAM,CAAC;CACf;;CCrBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK;CACjD,CAAC,IAAI,MAAM,KAAK,MAAM,EAAE;CACxB,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;CACF,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;CAC9C,EAAE,OAAO,UAAU,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK;CACzC,GAAG,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC;CACtC,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,OAAO,KAAK,CAAC;CACd;;CC3BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,WAAW,GAAG,wBAAwB,CAAC,QAAQ,EAAE;AAClD,OAAC,OAAO,GAAG,aAAa,CAAC,WAAW;;CCfhD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,gBAAgB,GAAG,4BAA4B;CACrD,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;CACjD;;CCdA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE;CAC/C,CAAC,IAAI,QAAQ,EAAE;CACf,EAAE,OAAO,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;CACrD,EAAE;CACF,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CACjC;;CCbA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE;CACxC,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;CACzB,EAAE,MAAM,cAAc,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;CACjD,EAAE,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;CAC7C,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACpC,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;CACzB,EAAE,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;CAC7C,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC/B,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE;CAC1B,EAAE,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;CAC7C,GAAG,OAAO,GAAG,KAAK,SAAS,CAAC;CAC5B,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE;CAC1B,EAAE,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;CAC9C,EAAE,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;CAC7C,GAAG,OAAO,GAAG,KAAK,cAAc,CAAC;CACjC,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE;CAC5B,EAAE,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;CAC7C,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CAChC,GAAG,CAAC,CAAC;CACL,EAAE;CACF;;CCrDA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,EAAE,KAAK;CACxD,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,KAAK;CAChC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;CAC9B,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,MAAM,CAAC;CACf;;CCvBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,MAAM,EAAE;CACnC,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;CAC5B;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK;CACjD,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;CACxB,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;CACtC,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;CAClC,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,WAAW,CAAC;CACpB,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,WAAW,GAAG,CAAC,MAAM,KAAK;CACvC,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;CACzB,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC;CACnB,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;CACnC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACzB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACpB,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;CAC/B;;CC5CA,MAAMC,eAAa,GAAG,SAAS,CAAC;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE;CAClC,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC;CACjB,CAAC,MAAM,CAAC,OAAO,CAACA,eAAa,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;CAC1C,GAAG,KAAK,CAAC,GAAG,CAAC;CACb,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;CAC5B,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE;CACpB,IAAI,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;CACjC,IAAI,MAAM;CACV,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;CAClE,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,CAAC,OAAO,MAAM,CAAC;CACf;;CC1BA,MAAMA,eAAa,GAAG,SAAS,CAAC;CAChC,MAAMC,OAAK,GAAG,OAAO,CAAC;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE;CAClC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;CAC1C,GAAG,OAAO,CAACD,eAAa,EAAE,GAAG,CAAC;CAC9B,GAAG,IAAI,EAAE;CACT,GAAG,WAAW,EAAE;CAChB,GAAG,OAAO,CAACC,OAAK,EAAE,GAAG,CAAC,CAAC;CACvB;;CCrBA,MAAMD,eAAa,GAAG,SAAS,CAAC;CAChC,MAAM,KAAK,GAAG,OAAO,CAAC;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE;CAClC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;CAC1C,GAAG,OAAO,CAACA,eAAa,EAAE,GAAG,CAAC;CAC9B,GAAG,IAAI,EAAE;CACT,GAAG,WAAW,EAAE;CAChB,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CACvB;;CCrBA,MAAMA,eAAa,GAAG,SAAS,CAAC;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE;CAClC,CAAC,OAAO,MAAM;CACd,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;CAC9B,GAAG,OAAO,CAACA,eAAa,EAAE,GAAG,CAAC;CAC9B,GAAG,IAAI,EAAE;CACT,GAAG,WAAW,EAAE,CAAC;CACjB;;CCrBA,MAAM,aAAa,GAAG,SAAS,CAAC;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE;CAClC,CAAC,OAAO,MAAM;CACd,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;CAC9B,GAAG,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;CAC9B,GAAG,IAAI,EAAE;CACT,GAAG,WAAW,EAAE,CAAC;CACjB;;CCpBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;CACnD,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;CAC3E,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE;CAC/C,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;CACtC,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE;CAC1C,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAC/D,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE;CACjD,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE;CAC9C,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;CAChC;;CCtFA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;CAClD,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;CAC5E;;CCjBA,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,KAAK;CAC1D,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;CACnC,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;CACxC,CAAC,IAAI,IAAI,CAAC;CACV,CAAC,IAAI,KAAK,GAAG,YAAY,GAAG,SAAS,CAAC;CACtC,CAAC,OAAO,KAAK,GAAG,cAAc,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;CACvD,EAAE,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;CACzB,EAAE,IAAI,IAAI,KAAK,GAAG,EAAE;CACpB,GAAG,MAAM;CACT,GAAG;CACH,EAAE;CACF,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;CACtC,CAAC,CAAC;CACF,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,KAAK;CACxD,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;CACnC,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;CACxC,CAAC,IAAI,IAAI,CAAC;CACV,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;CACvB,CAAC,OAAO,KAAK,GAAG,cAAc,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE;CACtD,EAAE,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;CACzB,EAAE,IAAI,IAAI,KAAK,GAAG,EAAE;CACpB,GAAG,MAAM;CACT,GAAG;CACH,EAAE;CACF,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;CACrD,CAAC,CAAC;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE;CAC5C,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;CACpC,CAAC,OAAO,CAAC,YAAY,GAAG,SAAS,IAAI,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC;CAC5F,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE;CACjD,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;CACpC,CAAC,OAAO,CAAC,YAAY,GAAG,SAAS,IAAI,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC;CAC1F;;CC5DA,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;CAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC;CACtB,MAAM,aAAa,GAAG,IAAI,CAAC;CAC3B,MAAM,aAAa,GAAG,IAAI,CAAC;CAC3B,MAAM,gBAAgB,GAAG,IAAI,CAAC;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,YAAY,CAAC,MAAM,EAAE;CACrC,CAAC,OAAO,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM;CACnE,EAAE,OAAO,KAAK,CAAC;CACf,EAAE,CAAC,CAAC,CAAC;CACL,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,YAAY,CAAC,MAAM,EAAE;CACrC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;CACzC,GAAG,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC;CACjC,GAAG,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC;CACjC,GAAG,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;CACvC,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE;CACjC,CAAC,OAAO,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;CAC3C;;CC1DA,MAAM,aAAa,GAAG,MAAM,CAAC;CAC7B,MAAM,UAAU,GAAG,MAAM,CAAC;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE;CACjC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;CAC1C,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,MAAM,EAAE;CAC9B,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;CACvC;;CC/BA,MAAM,QAAQ,GAAG,MAAM,CAAC;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,gBAAgB,CAAC,MAAM,EAAE;CACzC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;CAChC,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,MAAM,EAAE;CACnC,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;CACtD,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,cAAc,CAAC,MAAM,EAAE;CACvC,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;CACpE,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,aAAa,CAAC,MAAM,EAAE;CACtC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAK;CAC5C,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;CAC3B,EAAE,CAAC,CAAC;CACJ,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,iBAAiB,CAAC,MAAM,EAAE;CAC1C,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAK;CAC5C,EAAE,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;CAC/B,EAAE,CAAC,CAAC;CACJ;;CCtFA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;CAC9B;;CCdA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,MAAM,eAAe,GAAG,oBAAoB,CAAC;CACtC,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,eAAe,GAAG,KAAK,CAAC;CAC3E;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,MAAM,EAAE;CAChC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC1B;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,wBAAwB,CAAC,KAAK,EAAE;AAC7C,OAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;CChB5C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,MAAM,eAAe,GAAG,OAAO,CAAC;CAChC,MAAM,oBAAoB,GAAG,OAAO,CAAC;CAC9B,SAAS,YAAY,CAAC,MAAM,EAAE;CACrC,CAAC,IAAI,MAAM,EAAE;CACb,EAAE,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9C,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,eAAe,KAAK,oBAAoB,EAAE;CACzF,GAAG,OAAO,IAAI,CAAC;CACf,GAAG;CACH,EAAE;CACF,CAAC,OAAO,KAAK,CAAC;CACd;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE;CAChD,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;CAC5C,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;CACF,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;CAC9C,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;CACF,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;CACpC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE;CAC5E,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;CACF,CAAC,IAAI,UAAU,EAAE;CACjB,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;CAC/B,EAAE,IAAI,OAAO,EAAE;CACf,GAAG,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK;CAC3C,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;CACzC,IAAI,CAAC,CAAC;CACN,GAAG;CACH,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;CACF,CAAC,OAAO,IAAI,CAAC;CACb;;CC1CA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,YAAY,GAAG,wBAAwB,CAAC,QAAQ,EAAE;AACnD,OAAC,QAAQ,GAAG,aAAa,CAAC,YAAY;;CCblD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,aAAa,GAAG,wBAAwB,CAAC,SAAS,EAAE;AACrD,OAAC,SAAS,GAAG,aAAa,CAAC,aAAa;;CCdpD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,iBAAiB,GAAG,wBAAwB,CAAC,aAAa,EAAE;AAC7D,OAAC,aAAa,GAAG,aAAa,CAAC,iBAAiB;;CCf5D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE;CACnD,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE;CACpC,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;CACF,CAAC,OAAO,WAAW,YAAY,YAAY,CAAC;CAC5C;;CCxBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,MAAM,gBAAgB,GAAG,MAAM,CAAC,qKAAqK,CAAC,CAAC;CAChM,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACvB,EAAE,MAAM,eAAe,GAAG,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC;CACpD,EAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;CAChD,EAAE;CACF,CAAC,OAAO,KAAK,CAAC;CACd;;CClBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,UAAU,GAAG,wBAAwB,CAAC,MAAM,EAAE;AAC/C,OAAC,MAAM,GAAG,aAAa,CAAC,UAAU;;CCT9C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,MAAM,EAAE;CAChC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;CAC1C,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;CAC5B,EAAE,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;CACnC,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;CAC7B,EAAE;CACF,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC1B;;CCzBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,MAAM,EAAE;CAChC,CAAC,OAAO,MAAM,KAAK,KAAK,CAAC;CACzB;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,wBAAwB,CAAC,cAAc,EAAE;AACtD,OAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;CCb5C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,wBAAwB,CAAC,cAAc,EAAE;AACtD,OAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;CChB5C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,OAAO,GAAG;;CCZvB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,wBAAwB,CAAC,YAAY,EAAE;AACpD,OAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;CCd5C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,wBAAwB,CAAC,YAAY,EAAE;AACpD,OAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;CCZ5C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,QAAQ,GAAG,wBAAwB,CAAC,WAAW,EAAE;AAClD,OAAC,IAAI,GAAG,aAAa,CAAC,QAAQ;;CCf1C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,MAAM,EAAE;CACnC,CAAC,OAAO,QAA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AC,WAAW,GAAG,CAAC,CAAC;CACvB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;CACxB,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;CACrB,EAAE;CACF,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,MAAM,GAAG,SAAS,CAAC,MAAM;;CChGtC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,MAAM,cAAc,CAAC;CAC5B,CAAC,WAAW,CAAC,aAAa,GAAG,EAAE,EAAE;CACjC,EAAE,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;CAC7B,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,OAAO,CAAC,GAAG,EAAE;CACd,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACzB,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;CACrB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CAC1B,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,KAAK,GAAG;CACT,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;CAClB,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,UAAU,CAAC,GAAG,EAAE;CACjB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CACzB,EAAE;CACF,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,cAAc,CAAC,aAAa,EAAE;CAC9C,CAAC,OAAO,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;CAC1C;;CChGA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,MAAM,EAAE;CAChC,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;CACnD,CAAC;CACD,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,EAAE,aAAa,CAAC;CACtD,IAAI,SAAS,EAAE;CACf,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;CACvC,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE;CACjC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CACxB,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK;CACxC,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;CACvC,EAAE,CAAC,CAAC;CACJ,CAAC,MAAM,IAAI,SAAS,CAAC,SAAS,EAAE;CAChC,CAAC,IAAI,mBAAmB,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;CAC7D,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CAC9D,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;CACpE,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CAC1D,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,IAAI,KAAK;CACrC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACvB,EAAE,CAAC,CAAC;CACJ;;CCrCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE;CAChE,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;CACxD,CAAC,OAAO,IAAI,CAAC;CACb,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE;CACnE,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;CAC3D,CAAC,OAAO,IAAI,CAAC;CACb;;CCvCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,WAAW,EAAE;CACrC,CAAC,OAAO,WAAW,CAAC,OAAO,KAAK,EAAE,CAAC;CACnC;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,cAAc,GAAG,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ;;CCT3E;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE;CAC1C,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;CAC/B,CAAC,OAAO,KAAK,CAAC;CACd;;CCXA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;CAC5C,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;CACtB,EAAE,OAAO,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;CACtD,GAAG,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;CAClC,GAAG,CAAC,CAAC,CAAC;CACN,EAAE;CACF,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;CACnC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CAC/B,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,IAAI,CAAC;CACb;;CC5BA,MAAM,SAAS,GAAG,GAAG,CAAC;CACtB,MAAM,WAAW,GAAG,GAAG,CAAC;CACxB,MAAM,SAAS,GAAG,YAAY,CAAC;CAC/B,MAAM,OAAO,GAAG,aAAa,CAAC;CAC9B,MAAM,UAAU,GAAG,IAAI,CAAC;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,UAAU,GAAG,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE;CACzE;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,QAAQ,GAAG,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE;CACrE;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC9D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CACnE;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE;CACzE;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE;CACjC,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CAC/B,CAAC,QAAQ,WAAW;CACpB,CAAC,KAAK,WAAW;CACjB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;CAChC,GAAG,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;CACtC,GAAG;CACH,EAAE,MAAM;CACR,CAAC,KAAK,SAAS;CACf,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;CAC9B,GAAG,OAAO,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;CACzC,GAAG;CACH,EAAE,MAAM;CACR,CAAC;CACD,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;CAC5B,GAAG,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC3B,GAAG;CACH,EAAE;CACF,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;CACjC;;CC9EA,MAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CACjE,MAAM,uBAAuB,GAAG,CAAC,IAAI,KAAK;CAC1C,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,KAAK;CAC5B,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;CACvC,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;CACxC,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;CACtC,EAAE,CAAC,CAAC;CACJ,CAAC,CAAC;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,GAAG,EAAE;CAC9B,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;CAC/C,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE;CAC1D,EAAE,KAAK,EAAE,EAAE;CACX,EAAE,GAAG;CACL,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC;CACtC;;CCjCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,eAAe,CAAC,QAAQ,EAAE;CAC1C,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC;CACnC,CAAC,MAAM,WAAW,GAAG,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,UAAU,CAAC;CAC9F,CAAC,IAAI,WAAW,EAAE;CAClB,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAAE,GAAG,IAAI,CAAC;CACxC,EAAE;CACF,CAAC,IAAI,QAAQ,EAAE;CACf,EAAE,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;CACnD,EAAE;CACF,CAAC,OAAO,KAAK,CAAC;CACd,CAAC;CACD,eAAe,CAAC,MAAM;CACtB,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CACtC,CAAC,MAAM,UAAU,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC;CACpF,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;CACtB,CAAC,CAAC;;CChCF,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;CACnC,MAAM,cAAc,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC;CAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;CACnC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,IAAI,GAAG;CACpB,CAAC,QAAQ,EAAE;CACX,EAAE,KAAK,EAAE,SAAS,CAAC,mBAAmB;CACtC,EAAE;CACF,CAAC,IAAI,EAAE;CACP,EAAE,IAAI,EAAE,QAAQ;CAChB,EAAE,QAAQ;CACV,EAAE,cAAc;CAChB,EAAE;CACF;;CCjBO,SAAS,cAAc,GAAG;CACjC,CAAC,MAAM,CAAC,IAAI,EAAE;CACd,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY;CACxC,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW;CACtC,EAAE,YAAY,EAAE,MAAM,CAAC,WAAW;CAClC,EAAE,WAAW,EAAE,MAAM,CAAC,UAAU;CAChC,EAAE,CAAC,CAAC;CACJ,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,gBAAgB,GAAG;CACnC,CAAC,cAAc,EAAE,CAAC;CAClB,CAAC;CACD,eAAe,CAAC,gBAAgB,CAAC,CAAC;CAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;CACjD,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC;;CC7BlD;CACA;CACA;CACA;CACA;AAKWC,2BAAS;CACpB,SAAS,UAAU,CAAC,UAAU,EAAE;CAChC,CAAC,IAAI;CACL,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;CACrC,EAAEA,gBAAQ,GAAG,IAAI,CAAC;CAClB,EAAE,CAAC,OAAO,CAAC,EAAE;CACb,EAAEA,gBAAQ,GAAG,KAAK,CAAC;CACnB,EAAE;CACF,CAAC;CACD,UAAU,CAAC,MAAM;CACjB,CAAC,OAAO,YAAY,CAAC;CACrB,CAAC,CAAC,CAAC;CACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,MAAM,KAAK,CAAC;CACnB,CAAC,WAAW,CAAC,aAAa,EAAE;CAC5B,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;CACrB,GAAG,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;CAC7B,GAAG;CACH,EAAE,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;CAC/C,EAAE;CACF,CAAC,QAAQ,GAAGA,gBAAQ,CAAC;CACrB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;CACrB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;CACrB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;CACzE,GAAG;CACH,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;CAC1C,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,OAAO,CAAC,GAAG,EAAE;CACd,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CACzC,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;CACtB,GAAG,OAAO,IAAI,CAAC;CACf,GAAG;CACH,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;CACxC,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAClC,GAAG;CACH,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,KAAK,GAAG;CACT,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;CACrB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;CACtB,GAAG;CACH,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;CACvB,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,UAAU,CAAC,GAAG,EAAE;CACjB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;CACrB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;CAC9B,GAAG;CACH,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;CAC/B,EAAE;CACF,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,WAAW,EAAE;CACnC,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;CAC/B;;CCtJA,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK;CACrC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;CAC3C,CAAC,CAAC;AACU,OAAC,MAAM,GAAG;CACtB,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC;CACxC,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5C,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC;CACzC,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC;CAC1C,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,IAAI,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK;CAC1C,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;CACzD,CAAC,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,EAAE;CACvD,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC;CAC7G,EAAE;CACF,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC;CACnG,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,KAAK;CAC3D,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;CACtD;;CChDA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,MAAM,EAAE;CAC9B,CAAC,OAAO,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;CACxC,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;CAChD,SAAS,gBAAgB,CAAC,MAAM,EAAE;CACzC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,oBAAoB,GAAG,KAAK,CAAC;CAChF,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,MAAM,cAAc,GAAG,mBAAmB,CAAC;CACpC,SAAS,UAAU,CAAC,MAAM,EAAE;CACnC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,cAAc,GAAG,KAAK,CAAC;CAC1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"browser.bundle.js","sources":["../source/arrays/chunk.js","../source/arrays/clear.js","../source/arrays/clone.js","../source/types/isUndefined.js","../source/utilities/hasLength.js","../source/types/isNull.js","../source/types/hasValue.js","../source/utilities/returnValue.js","../source/arrays/each.js","../source/arrays/compactMap.js","../source/arrays/eachAsync.js","../source/arrays/compactMapAsync.js","../source/numbers/isNegative.js","../source/arrays/range.js","../source/utilities/forEach.js","../source/types/isArray.js","../source/arrays/ensure.js","../source/arrays/flattenDeep.js","../source/classes/construct.js","../source/arrays/difference.js","../source/arrays/drop.js","../source/arrays/dropRight.js","../source/arrays/eachRight.js","../source/arrays/eachRightAsync.js","../source/arrays/every.js","../source/arrays/everyAsync.js","../source/arrays/filter.js","../source/arrays/filterAsync.js","../source/arrays/first.js","../source/arrays/flatten.js","../source/arrays/initial.js","../source/arrays/intersect.js","../source/arrays/invoke.js","../source/objects/keys.js","../source/utilities/toPath.js","../source/utilities/get.js","../source/objects/hasKeys.js","../source/types/isPlainObject.js","../source/types/isConstructor.js","../source/types/isTypeFactory.js","../source/types/isBuffer.js","../source/utilities/isEqual.js","../source/arrays/isMatch.js","../source/arrays/largest.js","../source/arrays/last.js","../source/arrays/map.js","../source/arrays/mapAsync.js","../source/arrays/mapRight.js","../source/arrays/mapWhile.js","../source/math/subtract.js","../source/arrays/sortNumberAscending.js","../source/arrays/partition.js","../source/math/subtractReverse.js","../source/arrays/sortNumberDescening.js","../source/arrays/remove.js","../source/arrays/rest.js","../source/arrays/right.js","../source/math/randomInt.js","../source/internal/array.js","../source/numbers/isNumberEqual.js","../source/arrays/shuffle.js","../source/arrays/sample.js","../source/arrays/smallest.js","../source/arrays/getNumberInsertIndex.js","../source/arrays/take.js","../source/arrays/takeRight.js","../source/arrays/unique.js","../source/arrays/union.js","../source/arrays/untilFalse.js","../source/arrays/untilTrue.js","../source/arrays/whileCompactMap.js","../source/arrays/whileEach.js","../source/arrays/whileMap.js","../source/arrays/without.js","../source/arrays/xor.js","../source/arrays/zip.js","../source/buffers/ensure.js","../source/buffers/clear.js","../source/collection/countBy.js","../source/collection/countKey.js","../source/collection/countWithoutKey.js","../source/collection/findIndexCache.js","../source/collection/findIndex.js","../source/collection/findItem.js","../source/collection/sortCollectionDescending.js","../source/collection/sortCollectionAlphabetically.js","../source/collection/sortCollectionAscending.js","../source/collection/getHighest.js","../source/collection/getLowest.js","../source/collection/groupBy.js","../source/collection/indexBy.js","../source/collection/invoke.js","../source/collection/invokeAsync.js","../source/types/isNumber.js","../source/types/isString.js","../source/objects/pluckObject.js","../source/collection/pluck.js","../source/collection/sortCollectionAlphabeticallyReverse.js","../source/files/getExtension.js","../source/files/getFilename.js","../source/internal/regexTestFactory.js","../source/files/isFileCSS.js","../source/files/isFileHTML.js","../source/files/isFileJS.js","../source/files/isFileJSON.js","../source/functions/after.js","../source/functions/ary.js","../source/functions/before.js","../source/objects/assign.js","../source/objects/eachAsync.js","../source/objects/each.js","../source/utilities/forEachAsync.js","../source/types/isSet.js","../source/utilities/forOf.js","../source/types/isGenerator.js","../source/utilities/forOfAsync.js","../source/types/isFunction.js","../source/types/isAsync.js","../source/utilities/generateLoop.js","../source/utilities/each.js","../source/functions/chain.js","../source/functions/curry.js","../source/functions/curryRight.js","../source/utilities/stubTrue.js","../source/utilities/stubFalse.js","../source/utilities/noop.js","../source/utilities/times.js","../source/utilities/timer.js","../source/internal/apply.js","../source/functions/debounce.js","../source/functions/ifInvoke.js","../source/functions/inAsync.js","../source/functions/inSync.js","../source/functions/negate.js","../source/functions/nthArg.js","../source/functions/once.js","../source/objects/mapAsync.js","../source/objects/map.js","../source/types/getType.js","../source/types/cloneType.js","../source/utilities/forOfMap.js","../source/utilities/forOfMapAsync.js","../source/utilities/map.js","../source/functions/over.js","../source/objects/everyAsync.js","../source/objects/every.js","../source/utilities/forOfEvery.js","../source/utilities/forOfEveryAsync.js","../source/utilities/every.js","../source/functions/overEvery.js","../source/functions/rearged.js","../source/functions/throttle.js","../source/functions/wrap.js","../source/utilities/cacheNativeMethod.js","../source/internal/object.js","../source/internal/isSame.js","../source/math/add.js","../source/math/deduct.js","../source/math/divide.js","../source/math/increment.js","../source/math/multiple.js","../source/math/progress.js","../source/math/randomFloat.js","../source/math/remainder.js","../source/math/subtractAll.js","../source/math/sumAll.js","../source/numbers/isNumberInRange.js","../source/numbers/isNumberNotInRange.js","../source/numbers/isPositive.js","../source/numbers/isZero.js","../source/objects/getEntries.js","../source/objects/compactKeys.js","../source/objects/compactMapAsync.js","../source/objects/compactMap.js","../source/objects/filter.js","../source/objects/filterAsync.js","../source/objects/invert.js","../source/objects/isMatch.js","../source/types/isRegex.js","../source/regexps/escapeRegex.js","../source/regexps/arrayToRegex.js","../source/objects/omit.js","../source/objects/pick.js","../source/objects/size.js","../source/objects/zip.js","../source/strings/camelCase.js","../source/strings/kebabCase.js","../source/strings/snakeCase.js","../source/strings/upperCase.js","../source/strings/lowerCase.js","../source/strings/range.js","../source/strings/replace.js","../source/strings/truncate.js","../source/strings/sanitize.js","../source/strings/tokenize.js","../source/strings/typography.js","../source/types/getTypeName.js","../source/types/isArguments.js","../source/types/noValue.js","../source/types/isMap.js","../source/types/isTypedArray.js","../source/types/isArrayLike.js","../source/types/isBigInt.js","../source/types/isBoolean.js","../source/types/isArrayBuffer.js","../source/types/isChild.js","../source/types/isCloneable.js","../source/types/isDate.js","../source/types/isEmpty.js","../source/types/isFalse.js","../source/types/isF32.js","../source/types/isF64.js","../source/types/isFloat.js","../source/types/isI16.js","../source/types/isI32.js","../source/types/isI8.js","../source/types/isIterable.js","../source/types/isPromise.js","../source/types/isKindAsync.js","../source/types/isParent.js","../source/types/isPrimitive.js","../source/types/isRelated.js","../source/types/isSafeInt.js","../source/types/isSameType.js","../source/types/isTrue.js","../source/types/isU16.js","../source/types/isU32.js","../source/types/isU8.js","../source/types/isU8C.js","../source/types/isWeakMap.js","../source/types/isDeno.js","../source/types/isNode.js","../source/types/isTruthy.js","../source/types/isFalsy.js","../source/utilities/ifValue.js","../source/utilities/notEqual.js","../source/utilities/json.js","../source/utilities/assert.js","../source/utilities/bindAll.js","../source/utilities/clear.js","../source/utilities/clone.js","../source/utilities/compact.js","../source/utilities/forOfCompactMapAsync.js","../source/utilities/forOfCompactMap.js","../source/utilities/compactMap.js","../source/utilities/everyArg.js","../source/utilities/forOfFilter.js","../source/utilities/forOfFilterAsync.js","../source/utilities/filter.js","../source/utilities/flow.js","../source/utilities/flowAsync.js","../source/utilities/forMap.js","../source/utilities/arraysToObject.js","../source/utilities/has.js","../source/utilities/hasDot.js","../source/utilities/ifNotAssign.js","../source/utilities/interval.js","../source/utilities/merge.js","../source/utilities/model.js","../source/utilities/pair.js","../source/utilities/concurrent.js","../source/utilities/concurrentStatus.js","../source/utilities/promise.js","../source/utilities/propertyMatch.js","../source/utilities/setKey.js","../source/utilities/setValue.js","../source/utilities/store.js","../source/utilities/stubArray.js","../source/utilities/stubObject.js","../source/utilities/stubString.js","../source/utilities/timesAsync.js","../source/utilities/toggle.js","../source/utilities/uid.js","../source/utilities/virtualStorage.js","../source/browser/agent.js","../source/browser/event.js","../source/browser/isEnter.js","../source/browser/frag.js","../source/browser/append.js","../source/browser/attribute.js","../source/browser/selector.js","../source/browser/importScript.js","../source/browser/ready.js","../source/browser/info.js","../source/browser/dimensions.js","../source/browser/storage.js","../source/browser/console.js","../source/browser/is.js"],"sourcesContent":["/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Invoke each function in the given array.\n *\n * @function invokeArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { invokeArray, assert } from '@universalweb/acid';\n * function test(arg){\n * \treturn [this, arg];\n * }\n * const results = invokeArray([test], 1, test);\n * assert(results, [test, 1]);\n */\nexport function invokeArray(source, arg, thisCall) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index].call(thisCall, arg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index](arg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollection\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * import { invokeCollection, assert } from '@universalweb/acid';\n * const results = invokeCollection([{\n *\ttest(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollection(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapArray(collection, (item, index) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollectionAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * import { invokeCollectionAsync, assert } from '@universalweb/acid';\n * const results = await invokeCollectionAsync([{\n *\tasync test(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollectionAsync(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapAsyncArray(collection, (item) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapAsyncArray(collection, async (item) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from '../objects/each.js';\nimport { isBoolean } from '../types/isBoolean.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Checks to see of the browser agent has a string.\n *\n * @function isAgent\n * @category browser\n * @type {Function}\n * @param {String} source - The string to search for.\n * @returns {Boolean} - Returns true or false.\n * @example\n * isAgent('mobile');\n * // => false\n */\nexport function isAgent(source) {\n\treturn (source) ? isAgent[source] : keys(isAgent);\n}\nconst userAgent = globalThis.navigator?.userAgentData;\nif (userAgent) {\n\teachObject(userAgent, (value, key) => {\n\t\tif (isBoolean(value) && value) {\n\t\t\tisAgent[key] = value;\n\t\t}\n\t});\n\teachArray(userAgent.brands, (value) => {\n\t\tisAgent[value.brand] = value.version;\n\t});\n} else if (navigator.userAgent) {\n\tlet userAgentNormalized = navigator.userAgent.toLowerCase();\n\tuserAgentNormalized = userAgentNormalized.replace(/_/g, '.');\n\tuserAgentNormalized = userAgentNormalized.replace(/[#_,;()]/g, '');\n\tconst userAgentSplit = userAgentNormalized.split(/ |\\//);\n\teachArray(userAgentSplit, (item) => {\n\t\tisAgent[item] = true;\n\t});\n}\n\n","/**\n * Attaches an event listener to a node.\n *\n * @function eventAdd\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventAdd(document.body, 'click', () => {console.log('CLICKED');});\n * // = > document.body\n */\nexport function eventAdd(node, eventName, callback, useCapture) {\n\tnode.addEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n/**\n * Attaches an event listener to a node.\n *\n * @function eventRemove\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventRemove(document.body, () => {console.log('CLICKED');});\n * // = > Undefined\n */\nexport function eventRemove(node, eventName, callback, useCapture) {\n\tnode.removeEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n\n","/**\n * Checks if the keycode of the event is strictly equal to 13.\n *\n * @function isEnter\n * @category browser\n * @type {Function}\n * @param {Object} eventObject - Object to be checked.\n * @returns {Boolean} - Returns true if the keycode property of the object equals 13.\n *\n * @example\n * isEnter('click');\n * // => false\n */\nexport function isEnter(eventObject) {\n\treturn eventObject.keyCode === 13;\n}\n\n","/**\n * Create a document fragment.\n *\n * @function createFragment\n * @category browser\n * @type {Function}\n * @ignore\n * @returns {Fragment} - Returns a new document fragment.\n*/\nexport const createFragment = document.createDocumentFragment.bind(document);\n","/**\n * Append a DOM node.\n *\n * @function append\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @ignore\n * @param {Node} parentNode - The parent node.\n * @param {Node} child - The node to be appended.\n * @returns {undefined} - Returns the child.\n */\nexport function append(parentNode, child) {\n\tparentNode.appendChild(child);\n\treturn child;\n}\n","import { eachObject } from '../objects/each.js';\nimport { isArray } from '../types/isArray.js';\nimport { mapArray } from '../arrays/map.js';\nimport { zipObject } from '../objects/zip.js';\n/**\n * Assign attributes to a DOM node.\n *\n * @function nodeAttribute\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @async\n * @param {Node} node - The DOM node.\n * @param {Object|Array} object - Object with key being the attribute name and the value being the attribute value. If an array is given it will get the values corresponding to the array items.\n * @returns {Object|Node} - If using an array this returns an object of attribute names as keys and their values as the property value. If using an object this will return the provided node.\n *\n * @example\n * nodeAttribute(document.body, { 'data-example': 'test'});\n */\nexport function nodeAttribute(node, object) {\n\tif (isArray(object)) {\n\t\treturn zipObject(object, mapArray(object, (item) => {\n\t\t\treturn node.getAttribute(item);\n\t\t}));\n\t}\n\teachObject(object, (item, key) => {\n\t\tnode.setAttribute(key, item);\n\t});\n\treturn node;\n}\n\n","import { restString } from '../strings/range.js';\nconst dotString = '.';\nconst poundString = '#';\nconst classTest = /^.[\\w_-]+$/;\nconst tagTest = /^[A-Za-z]+$/;\nconst regexSpace = /\\s/;\n/**\n * Wrapper around getElementsByClassName.\n *\n * @function getByClass\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByClass = document.getElementsByClassName.bind(document);\n/**\n * Wrapper around getElementsByTagName.\n *\n * @function getByTag\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByTag = document.getElementsByTagName.bind(document);\n/**\n * Wrapper around getElementsByIdName.\n *\n * @function getById\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getById = document.getElementById.bind(document);\n/**\n * Wrapper around querySelector.\n *\n * @function querySelector\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelector = document.querySelector.bind(document);\n/**\n * Wrapper around querySelectorAll.\n *\n * @function querySelectorAll\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelectorAll = document.querySelectorAll.bind(document);\n/**\n * Returns relevant DOM node.\n *\n * @function selector\n * @category browser\n * @ignoreTest\n * @param {String} select - String to be evaluated.\n * @type {Function}\n * @returns {Node} - Returns a DOM node.\n *\n * @example\n * selector('#node');\n * // =>
\n */\nexport function selector(select) {\n\tconst firstLetter = select[0];\n\tswitch (firstLetter) {\n\tcase poundString:\n\t\tif (!regexSpace.test(select)) {\n\t\t\treturn getById(restString(select));\n\t\t}\n\t\tbreak;\n\tcase dotString:\n\t\tif (classTest.test(select)) {\n\t\t\treturn getByClass(restString(select));\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tif (tagTest.test(select)) {\n\t\t\treturn getByTag(select);\n\t\t}\n\t}\n\treturn querySelectorAll(select);\n}\n\n","import { append } from './append.js';\nimport { hasDot } from '../utilities/hasDot.js';\nimport { eventAdd } from './event.js';\nimport { nodeAttribute } from './attribute.js';\nimport { promise } from '../utilities/promise.js';\nimport { querySelector } from './selector.js';\nconst createElementCache = document.createElement.bind(document);\nconst nodeAttachLoadingEvents = (node) => {\n\treturn promise((accept) => {\n\t\teventAdd(node, 'load', accept, true);\n\t\teventAdd(node, 'error', accept, true);\n\t\tappend(querySelector('head'), node);\n\t});\n};\n/**\n * Asynchronously import a js file and append it to the head node.\n * If a script fails to load importjs won't reject the promise rather it'll return the error event to limit further complications & reduce code complexity.\n *\n * @function importjs\n * @category browser\n * @type {Function}\n * @async\n * @param {*} url - URL of the script to import. If not \".\" is found in the file name \".js\" will be appended.\n * @returns {Promise} - Returns a promise which returns a \"load\" or \"error\" event associated with the script.\n *\n * @example\n * importjs('core.js');\n * importjs('core');\n */\nexport function importjs(url) {\n\tconst src = hasDot(url) && url || `${url}.js`;\n\tconst node = nodeAttribute(createElementCache('script'), {\n\t\tasync: '',\n\t\tsrc\n\t});\n\treturn nodeAttachLoadingEvents(node);\n}\n\n","import { eventAdd } from './event.js';\nimport { importjs } from './importScript.js';\nimport { getById } from './selector.js';\n/**\n * Runs a function if the document has finished loading. If not, add an eventlistener.\n *\n * @function isDocumentReady\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Function} callable - Function to be run.\n * @returns {Boolean|Function} - If the document is ready, returns a function. If not, return false.\n *\n * @example\n * isDocumentReady(() => {return 1});\n * // => 1\n */\nexport function isDocumentReady(callable) {\n\tconst state = document.readyState;\n\tconst checkStatus = state === 'interactive' || state === 'completed' || state === 'complete';\n\tif (checkStatus) {\n\t\treturn (callable) ? callable() : true;\n\t}\n\tif (callable) {\n\t\teventAdd(document, 'DOMContentLoaded', callable);\n\t}\n\treturn false;\n}\nisDocumentReady(() => {\n\tconst scriptTag = getById('AcidLib');\n\tconst scriptName = (scriptTag && scriptTag.getAttribute('data-index')) || '/index';\n\timportjs(scriptName);\n});\n","const protocol = location.protocol;\nconst protocolSocket = (protocol === 'http:') ? 'ws' : 'wss';\nconst hostname = location.hostname;\n/**\n * Holds client hardware, browser, and host info.\n *\n * @memberof $\n * @category browser\n * @ignoreTest\n * @property {Object} info - Client hardware & host info.\n * @type {Object}\n */\nexport const info = {\n\thardware: {\n\t\tcores: navigator.hardwareConcurrency\n\t},\n\thost: {\n\t\tname: hostname,\n\t\tprotocol,\n\t\tprotocolSocket,\n\t}\n};\n\n","import { assign } from '../objects/assign.js';\nimport { eventAdd } from './event.js';\nimport { info } from './info.js';\nimport { isDocumentReady } from './ready.js';\nexport function saveDimensions() {\n\tassign(info, {\n\t\tbodyHeight: document.body.offsetHeight,\n\t\tbodyWidth: document.body.offsetWidth,\n\t\twindowHeight: window.innerHeight,\n\t\twindowWidth: window.innerWidth,\n\t});\n}\n/**\n * Save current document & window dimensions to the info property.\n *\n * @function updateDimensions\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * updateDimensions();\n */\nexport function updateDimensions() {\n\tsaveDimensions();\n}\nisDocumentReady(updateDimensions);\neventAdd(window, 'load', updateDimensions, true);\neventAdd(window, 'resize', updateDimensions, true);\n\n","/**\n * LocalStorage Module..\n *\n * @module browser/storage\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nimport { virtualStorage } from '../utilities/virtualStorage.js';\nexport let hasLocal;\nfunction hasStorage(storeCheck) {\n\ttry {\n\t\tstoreCheck().removeItem('TESTING');\n\t\thasLocal = true;\n\t} catch (e) {\n\t\thasLocal = false;\n\t}\n}\nhasStorage(() => {\n\treturn localStorage;\n});\n/**\n * Constructs a virtual storage container with localStorage support.\n * Crate will fallback to strictly virtual storage if localStorage isn't supported.\n * If localStorage is supported virtual storage will be used first & only fallback to localStorage when needed.\n * Crate is ideal as a seemless drop in replacement for localStorage when not supported or allowed.\n *\n * @class Crate\n * @category browser\n * @returns {Crate} - Returns a new instance of Crate.\n *\n * @example\n * import { Crate, construct, assert } from '@universalweb/acid';\n * const storageCrate = construct(Crate);\n * storageCrate.setItem('key', 'value');\n * assert(storageCrate.getItem('key'), 'value');\n */\nexport class Crate {\n\tconstructor(initialObject) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local = localStorage;\n\t\t}\n\t\tthis.storage = virtualStorage(initialObject);\n\t}\n\thasLocal = hasLocal;\n\t/**\n\t * Save an item to a crate.\n\t *\n\t * @function setItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.setItem(key, (isString(value)) ? value : stringify(value));\n\t\t}\n\t\treturn this.storage.setItem(key, value);\n\t}\n\t/**\n\t * Get an item from a crate.\n\t *\n\t * @function getItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tgetItem(key) {\n\t\tconst item = this.storage.getItem(key);\n\t\tif (hasValue(item)) {\n\t\t\treturn item;\n\t\t}\n\t\tif (!hasValue(item) && this.hasLocal) {\n\t\t\treturn this.local.getItem(key);\n\t\t}\n\t}\n\t/**\n\t * Clears all data for the crate including all of localStorage if supported.\n\t *\n\t * @function clear\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.clear();\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tclear() {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.clear();\n\t\t}\n\t\tthis.storage.clear();\n\t}\n\t/**\n\t * Remove an item from a crate.\n\t *\n\t * @class Crate\n\t * @category browser\n\t * @function removeItem\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.removeItem('key');\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tremoveItem(key) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.removeItem(key);\n\t\t}\n\t\tthis.storage.removeItem(key);\n\t}\n}\n/**\n * The crate function is a factory which wraps the Crate class constructor.\n *\n * @function crate\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new Crate Object.\n *\n * @example\n * const storageCrate = crate();\n * // => New Crate Object\n */\nexport function crate(virtualFlag) {\n\treturn new Crate(virtualFlag);\n}\n\n","import { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nconst generateTheme = (color, bg) => {\n\treturn `color:${color};background:${bg};`;\n};\nexport const themes = {\n\talert: generateTheme('#fff', '#f44336'),\n\timportant: generateTheme('#fff', '#E91E63'),\n\tnotify: generateTheme('#fff', '#651FFF'),\n\twarning: generateTheme('#000', '#FFEA00'),\n};\n/**\n * Console.trace wrapper with theme support.\n *\n * @function cnsl\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Object} value - The value to be logged.\n * @param {String} themeName - The name of the theme to be used.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnsl('Lucy', 'notify');\n * // 'Lucy'\n*/\nexport const cnsl = (value, themeName) => {\n\tconst data = isString(value) ? value : stringify(value);\n\tif (themeName === 'alert' || themeName === 'warning') {\n\t\treturn console.trace(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n\t}\n\tconsole.log(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n};\n/**\n * Create color themes for cnsl method.\n *\n * @function cnslTheme\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {String} themeName - The name of the theme.\n * @param {String} color - The text color.\n * @param {String} background - The background color of the block.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnslTheme('BlackNWhite', '#fff', '#000');\n*/\nexport const cnslTheme = (themeName, color, background) => {\n\tthemes[themeName] = generateTheme(color, background);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { difference } from '../arrays/difference.js';\n/**\n * Checks if value is a plain DOM Node.\n *\n * @function isDom\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDom, assert } from '@universalweb/acid';\n * assert(isDom(document.querySelectorAll('head')), true);\n */\nexport function isDom(source) {\n\treturn source && source.nodeType !== 9;\n}\n/**\n * Checks if the value is a HTMLCollection.\n *\n * @function isHTMLCollection\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isHTMLCollection, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isHTMLCollection(document.getElementsByClassName('test')), true);\n */\nconst objectHTMLCollection = '[object HTMLCollection]';\nexport function isHTMLCollection(source) {\n\treturn (hasValue(source)) ? source.toString() === objectHTMLCollection : false;\n}\n/**\n * Checks if the value is a NodeList.\n *\n * @function isNodeList\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNodeList, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isNodeList(document.querySelectorAll('.test')), true);\n */\nconst objectNodeList = '[object NodeList]';\nexport function isNodeList(source) {\n\treturn (hasValue(source)) ? source.toString() === objectNodeList : false;\n}\n"],"names":["sign","random","normalizeCase","space","returnFlow","hasLocal"],"mappings":";;;;;;CAAA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE;CACvC,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;CACpB,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;CACf,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;CAC9B,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CACpB,GAAG,IAAI,GAAG,EAAE;CACZ,IAAI,KAAK,EAAE,CAAC;CACZ,IAAI;CACJ,GAAG;CACH,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAC5B,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,OAAO,CAAC;CAChB;;CC3BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,MAAM,EAAE;CACnC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;CACnB,CAAC,OAAO,MAAM,CAAC;CACf;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,MAAM,EAAE;CACnC,CAAC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;CACvB;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,OAAO,MAAM,KAAK,SAAS,CAAC;CAC7B;;CCZA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE;CAClC,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAC/B;;CCdA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE;CAC/B,CAAC,OAAO,MAAM,KAAK,IAAI,CAAC;CACxB;;CCbA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE;CACjC,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAChD;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,OAAO,MAAM,CAAC;CACf;;CCRA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE;CACrE,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;CACnC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;CACzB,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;CACpD,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;CACrF,GAAG;CACH,EAAE,MAAM;CACR,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;CACpD,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;CACtE,GAAG;CACH,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CClCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,eAAe,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE;CACvG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;CACzB,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,KAAK;CACjE,GAAG,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;CAC7G,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;CAC3B,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC3B,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,EAAE,MAAM;CACR,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,KAAK;CACjE,GAAG,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;CACxG,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;CAC3B,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC3B,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,OAAO,OAAO,CAAC;CAChB;;CCtCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE;CAChF,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;CACnC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;CACzB,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;CACpD,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;CAC3F,GAAG;CACH,EAAE,MAAM;CACR,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;CACpD,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;CAC5E,GAAG;CACH,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CClCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,oBAAoB,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE;CAC3E,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;CACpB,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,KAAK,EAAE,WAAW,KAAK;CAClE,EAAE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;CACnE,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACxB,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,OAAO,CAAC;CAChB;;CC7BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,MAAM,QAAEA,MAAI,EAAE,GAAG,IAAI,CAAC;CACf,SAAS,UAAU,CAAC,MAAM,EAAE;CACnC,CAAC,OAAOA,MAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;CAC5B;;CCfO,SAAS,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE;CACvD,CAAC,IAAI,QAAQ,GAAG,KAAK,CAAC;CACtB,CAAC,OAAO,QAAQ,GAAG,GAAG,EAAE;CACxB,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC7B,EAAE,QAAQ,IAAI,IAAI,CAAC;CACnB,EAAE;CACF,CAAC,OAAO,WAAW,CAAC;CACpB,CAAC;CACM,SAAS,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE;CACzD,CAAC,IAAI,QAAQ,GAAG,KAAK,CAAC;CACtB,CAAC,OAAO,QAAQ,GAAG,GAAG,EAAE;CACxB,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC7B,EAAE,QAAQ,IAAI,IAAI,CAAC;CACnB,EAAE;CACF,CAAC,OAAO,WAAW,CAAC;CACpB,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,EAAE,WAAW,GAAG,EAAE,EAAE;CAC9D,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;CACvB,EAAE,OAAO,WAAW,CAAC;CACrB,EAAE;CACF,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE;CAClB,EAAE,OAAO,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;CAChD,EAAE,MAAM;CACR,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;CAClD,EAAE;CACF;;CCzCO,SAAS,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE;CAC1C,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC1B,CAAC,OAAO,MAAM,CAAC;CACf;;CCHA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,OAAO,GAAG,KAAK,CAAC,QAAQ;CACrC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,MAAM,EAAE;CACnC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB;;CC3BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;CAC5E;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC9B;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;CAEpC,SAAS,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,EAAE,EAAE,SAAS,EAAE;CACjE,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,aAAa,CAAC,CAAC;CACzE,CAAC,IAAI,SAAS,EAAE;CAChB,EAAE,OAAO,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;CACnD,EAAE;CACF,CAAC,OAAO,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CACvC;;CCzBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,GAAG,OAAO,EAAE;CACvC,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;CACvC,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;CACxB,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,KAAK;CACnD,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK;CACjD,GAAG,IAAI,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CAC7C,GAAG,IAAI,CAAC,SAAS,EAAE;CACnB,IAAI,SAAS,GAAG;CAChB,KAAK,KAAK,EAAE,CAAC;CACb,KAAK,WAAW;CAChB,KAAK,KAAK;CACV,KAAK,CAAC;CACN,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;CACzC,IAAI,MAAM,IAAI,SAAS,CAAC,WAAW,KAAK,WAAW,EAAE;CACrD,IAAI,OAAO;CACX,IAAI,MAAM;CACV,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;CACtB,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,IAAI,KAAK;CACnC,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE;CAClD,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CAChC,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,WAAW,CAAC;CACpB;;CC5CA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE;CAC7D,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CACnC;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK;CACrE,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;CACtC;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;CACtD,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;CACnC,CAAC,KAAK,IAAI,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;CACtD,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;CAChE,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CC9BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE;CACvD,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;CACnC,CAAC,KAAK,IAAI,KAAK,GAAG,WAAW,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;CACxD,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;CAC5D,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CC1BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;CACvD,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;CACpC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE;CAClD,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,KAAK,EAAE;CAChF,GAAG,OAAO,KAAK,CAAC;CAChB,GAAG;CACH,EAAE;CACF,CAAC,OAAO,IAAI,CAAC;CACb;;CC/BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;CAClE,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;CACpC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE;CAClD,EAAE,IAAI,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,KAAK,EAAE;CACtF,GAAG,OAAO,KAAK,CAAC;CAChB,GAAG;CACH,EAAE;CACF,CAAC,OAAO,IAAI,CAAC;CACb;;CC9BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE;CACtE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,KAAK;CAChE,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;CACrF,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACtB,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,OAAO,CAAC;CAChB;;CC1BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE;CACjF,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,KAAK;CACjF,EAAE,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;CAC3F,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACtB,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,OAAO,CAAC;CAChB;;CC7BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;CACnC,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACjD;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE;CAC3C,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,IAAI,WAAW,GAAG,MAAM,CAAC;CAC1B,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;CACjC,EAAE,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,YAAY,KAAK;CACpE,GAAG,OAAO,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;CAC1D,GAAG,EAAE,EAAE,CAAC,CAAC;CACT,EAAE;CACF,CAAC,OAAO,WAAW,CAAC;CACpB;;CC1BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,KAAK,EAAE;CAC/B,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;CACzC;;CCbA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG,MAAM,EAAE;CAC/C,CAAC,OAAO,eAAe,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK;CACzC,EAAE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,SAAS,KAAK;CACzD,GAAG,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;CACnC,GAAG,CAAC,CAAC;CACL,EAAE,IAAI,YAAY,EAAE;CACpB,GAAG,OAAO,IAAI,CAAC;CACf,GAAG;CACH,EAAE,CAAC,CAAC;CACJ;;CCzBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE;CACnD,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;CACnC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;CACzB,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;CACpD,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;CACrC,GAAG;CACH,EAAE,MAAM;CACR,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;CACpD,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,GAAG;CACH,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CCpCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;CACxB,SAAS,IAAI,CAAC,MAAM,EAAE;CAC7B,CAAC,IAAI,MAAM,EAAE;CACb,EAAE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;CAC5B,EAAE;CACF;;CCjBA,MAAM,WAAW,GAAG,OAAO,CAAC;CAC5B,MAAM,iBAAiB,GAAG,IAAI,CAAC;CAC/B,MAAM,WAAW,GAAG,EAAE,CAAC;CACvB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE;CAC/B,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;CAC1E;;CCdA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE;CAC5C,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;CACF,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC;CACnB,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;CACvF,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,IAAI,KAAK;CACjC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;CACpB,EAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;CACxB,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,IAAI,CAAC;CACb;;CC9BA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,MAAM,EAAE,GAAG,UAAU,EAAE;CAC/C,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,OAAO,UAAU,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;CACzC,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;CACjC,EAAE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;CAC9B,GAAG,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC/B,GAAG,MAAM;CACT,GAAG,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;CACpC,GAAG,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;CACpD,GAAG,IAAI,iBAAiB,EAAE;CAC1B,IAAI,OAAO,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;CAC/C,IAAI;CACJ,GAAG,OAAO,KAAK,CAAC;CAChB,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,MAAM,EAAE,GAAG,UAAU,EAAE;CAClD,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;CAC1C,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;CACjC,EAAE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;CAC9B,GAAG,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC/B,GAAG,MAAM;CACT,GAAG,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;CACpC,GAAG,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;CACpD,GAAG,IAAI,iBAAiB,EAAE;CAC1B,IAAI,OAAO,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;CAC/C,IAAI;CACJ,GAAG,OAAO,KAAK,CAAC;CAChB,GAAG;CACH,EAAE,CAAC,CAAC,CAAC;CACL;;CCpEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,aAAa,GAAG,CAAC,KAAK,KAAK;CACxC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;CACtB,EAAE,OAAO,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;CAC5C,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,SAAS,CAAC;CAC/B,EAAE;CACF,CAAC,OAAO,KAAK,CAAC;CACd;;CCnBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE;CAC9C,CAAC,OAAO,MAAM,EAAE,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC;CAChD,CAAC;CACM,SAAS,oBAAoB,CAAC,MAAM,EAAE;CAC7C,CAAC,OAAO,CAAC,MAAM,KAAK;CACpB,EAAE,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,EAAE,CAAC;CACH,CAAC;CACM,SAAS,eAAe,CAAC,MAAM,EAAE;CACxC,CAAC,OAAO,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC;CAClC,CAAC;CACM,SAAS,wBAAwB,CAAC,MAAM,EAAE;CACjD,CAAC,OAAO,CAAC,MAAM,KAAK;CACpB,EAAE,OAAO,eAAe,CAAC,MAAM,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC;CACrD,EAAE,CAAC;CACH;;CC5BO,SAAS,aAAa,CAAC,MAAM,EAAE;CACtC,CAAC,OAAO,SAAS,aAAa,EAAE,GAAG,YAAY,EAAE;CACjD,EAAE,IAAI,YAAY,EAAE;CACpB,GAAG,OAAO,MAAM,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;CACpE,GAAG;CACH,EAAE,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC;CAC/B,EAAE,CAAC;CACH;;CCNA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,YAAY,GAAG,wBAAwB,CAAC,QAAQ,EAAE;AACnD,OAAC,QAAQ,GAAG,aAAa,CAAC,YAAY;;CCTlD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK;CAC3C,CAAC,IAAI,MAAM,KAAK,MAAM,EAAE;CACxB,EAAE,OAAO,IAAI,CAAC;CACd,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CAC9B,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAC/B,EAAE,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE;CACrD,EAAE,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;CAC7B,GAAG,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;CACzC,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE;CAC1C,IAAI,OAAO,UAAU,CAAC,gBAAgB,EAAE,CAAC,GAAG,KAAK;CACjD,KAAK,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9C,KAAK,CAAC,CAAC;CACP,IAAI;CACJ,GAAG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;CAC9B,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;CACxC,IAAI,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;CAC/C,KAAK,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;CACzC,KAAK,CAAC,CAAC;CACP,IAAI;CACJ,GAAG;CACH,EAAE;CACF,CAAC,OAAO,KAAK,CAAC;CACd;;CCzCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE;CACnD,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE;CAC5C,EAAE,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;CAC7C,GAAG,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;CAC7C,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,OAAO,KAAK,CAAC;CACd;;CCvBA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,KAAK,EAAE;CAC/B,CAAC,OAAO,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC;CAChC;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE;CACvC,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;CAClC,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;CACjG;;CCdA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE;CAClF,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;CACzB,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,KAAK;CACjE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;CAC7G,GAAG,CAAC,CAAC;CACL,EAAE,MAAM;CACR,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,KAAK;CACjE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;CAC9F,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,OAAO,OAAO,CAAC;CAChB;;CChCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE;CACtD,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;CACpB,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,KAAK,EAAE,WAAW,KAAK;CAClE,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;CAC5D,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,OAAO,CAAC;CAChB;;CCrBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE;CACxE,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC;CACnB,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;CACnC,CAAC,KAAK,IAAI,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;CACtD,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;CACrF,EAAE,SAAS,EAAE,CAAC;CACd,EAAE;CACF,CAAC,OAAO,OAAO,CAAC;CAChB;;CC1BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE;CACnE,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;CACnC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,EAAE;CACjD,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;CAC7B,EAAE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;CACjF,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;CAC1B,GAAG,MAAM;CACT,GAAG;CACH,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CACxB,EAAE;CACF,CAAC,OAAO,OAAO,CAAC;CAChB;;CChCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE;CAC9C,CAAC,OAAO,OAAO,GAAG,UAAU,CAAC;CAC7B;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,mBAAmB,CAAC,UAAU,EAAE;CAChD,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAClC;;CCdA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE;CAC5C,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;CACrB,CAAC,OAAO;CACR,EAAE,eAAe,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;CAC1C,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;CAC/B,IAAI,OAAO,IAAI,CAAC;CAChB,IAAI;CACJ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACvB,GAAG,CAAC;CACJ,EAAE,QAAQ;CACV,EAAE,CAAC;CACH;;CCjCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,eAAe,CAAC,UAAU,EAAE,OAAO,EAAE;CACrD,CAAC,OAAO,OAAO,GAAG,UAAU,CAAC;CAC7B;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,mBAAmB,CAAC,UAAU,EAAE;CAChD,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;CACzC;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE;CAC3C,CAAC,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;CAChC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;CACnD,EAAE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;CAC5B,EAAE,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;CAClC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAC1B,GAAG,KAAK,EAAE,CAAC;CACX,GAAG,WAAW,EAAE,CAAC;CACjB,GAAG;CACH,EAAE;CACF,CAAC,OAAO,KAAK,CAAC;CACd,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE;CAC3C,CAAC,IAAI,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;CACjC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;CACnD,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;CAC7B,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;CAC7B,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAC3B,GAAG,KAAK,EAAE,CAAC;CACX,GAAG,WAAW,EAAE,CAAC;CACjB,GAAG;CACH,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CCpDA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,IAAI,CAAC,KAAK,EAAE;CAC5B,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACrC;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE;CACtC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;CAC3C;;CChBA,MAAM;CACN,CAAC,KAAK;CACN,SAACC,QAAM;CACP,CAAC,GAAG,IAAI,CAAC;CACT;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;CACxC,CAAC,OAAO,KAAK,CAACA,QAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;CAC5C;;CCnBA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;CACnD,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE;CAC1B,EAAE,OAAO,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;CAC9C,EAAE;CACF;;CCpBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE;CAC9C,CAAC,OAAO,MAAM,KAAK,MAAM,CAAC;CAC1B;;CCbA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;CACxD,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;CACzB,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB,EAAE;CACF,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;CACf,CAAC,IAAI,KAAK,CAAC;CACX,CAAC,IAAI,KAAK,CAAC;CACX,CAAC,OAAO,KAAK,GAAG,MAAM,EAAE;CACxB,EAAE,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CAChD,EAAE,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;CAC9B,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;CAC5C,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;CAC9B,EAAE,KAAK,EAAE,CAAC;CACV,EAAE;CACF,CAAC,OAAO,YAAY,CAAC;CACrB;;CC9BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;CACvC,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;CACF,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;CACnC,CAAC,IAAI,WAAW,KAAK,MAAM,IAAI,MAAM,GAAG,WAAW,EAAE;CACrD,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB,EAAE;CACF,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;CACnB,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CACjD,EAAE;CACF,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;CACxB,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;CACjB,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;CACf,CAAC,IAAI,KAAK,CAAC;CACX,CAAC,OAAO,KAAK,GAAG,MAAM,EAAE;CACxB,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1C,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;CACpB,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;CACnC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CACtB,GAAG,KAAK,EAAE,CAAC;CACX,GAAG;CACH,EAAE;CACF,CAAC,OAAO,WAAW,CAAC;CACpB;;CC7CA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,KAAK,EAAE;CAChC,CAAC,OAAO,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC;CAChC;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE;CACrD,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC;CACrB,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;CACrC,EAAE,WAAW,GAAG,KAAK,CAAC;CACtB,EAAE,IAAI,MAAM,IAAI,IAAI,EAAE;CACtB,GAAG,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC;CAC3B,GAAG,OAAO,IAAI,CAAC;CACf,GAAG,MAAM;CACT,GAAG,OAAO,KAAK,CAAC;CAChB,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,WAAW,CAAC;CACpB;;CC3BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE;CAC3C,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;CAClC;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE;CAClD,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;CACnC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,EAAE,WAAW,CAAC,CAAC;CAC5D;;CCjBO,SAAS,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;CAChD,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;CACvC,CAAC;CACM,SAAS,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;CAC/C,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;CAClC,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE;CACzC,CAAC,IAAI,QAAQ,EAAE;CACf,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;CACnC,EAAE;CACF,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;CAClC;;CCvBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,GAAG,MAAM,EAAE;CACjC,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;CACpC;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE;CAClD,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;CACpC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE;CAClD,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,KAAK,EAAE;CAChD,GAAG,OAAO,KAAK,CAAC;CAChB,GAAG;CACH,EAAE;CACF,CAAC,OAAO,IAAI,CAAC;CACb;;CC5BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE;CACjD,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;CACpC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE;CAClD,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;CAC/C,GAAG,OAAO,KAAK,CAAC;CAChB,GAAG;CACH,EAAE;CACF,CAAC,OAAO,IAAI,CAAC;CACb;;CC5BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE;CAC1E,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;CACf,CAAC,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;CAC/B,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;CAC/F,EAAE,KAAK,EAAE,CAAC;CACV,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACxB,GAAG;CACH,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CC9BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;CAC3D,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;CACf,CAAC,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;CAC/B,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAClE,EAAE,KAAK,EAAE,CAAC;CACV,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CC1BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE;CACxE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;CACf,CAAC,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;CAC/B,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;CAChF,EAAE,KAAK,EAAE,CAAC;CACV,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CC9BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;CACzC,CAAC,IAAI,CAAC,OAAO,EAAE;CACf,EAAE,OAAO,MAAM,CAAC;CAChB,EAAE;CACF,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;CAC5C,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK;CAChC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAC/B,EAAE,CAAC,CAAC;CACJ;;CCnBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,GAAG,CAAC,GAAG,OAAO,EAAE;CAChC,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;CAC/B,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;CAClB,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;CACtC,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE;CAC1B,EAAE,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,EAAE;CACF,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,KAAK;CACnD,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK;CACjD,GAAG,IAAI,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACrC,GAAG,IAAI,CAAC,SAAS,EAAE;CACnB,IAAI,SAAS,GAAG;CAChB,KAAK,KAAK,EAAE,CAAC;CACb,KAAK,WAAW;CAChB,KAAK,KAAK;CACV,KAAK,CAAC;CACN,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;CACjC,IAAI,MAAM,IAAI,SAAS,CAAC,WAAW,KAAK,WAAW,EAAE;CACrD,IAAI,OAAO;CACX,IAAI,MAAM;CACV,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;CACtB,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;CAC3B,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;CACxB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CAC1B,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,KAAK,CAAC;CACd;;CC/CA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,GAAG,CAAC,GAAG,MAAM,EAAE;CAC/B,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;CACvC,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;CAC/B,GAAG,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;CACvB,GAAG,CAAC,CAAC;CACL,EAAE,CAAC,CAAC;CACJ,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,MAAM,EAAE;CAC9B,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;CACvC,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK;CAClC,GAAG,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;CAC1B,GAAG,CAAC,CAAC;CACL,EAAE,CAAC,CAAC;CACJ;;CCrCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,YAAY,CAAC,MAAM,EAAE;CACrC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACrG;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAChB,CAAC,OAAO,MAAM,CAAC;CACf;;CCdA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE;CAC9C,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC;CACnB,CAAC,IAAI,MAAM,CAAC;CACZ,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;CACjC,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;CAC1B,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;CACvB,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CACtB,GAAG;CACH,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;CACnB,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,MAAM,CAAC;CACf;;CC1BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE;CACnD,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;CACf,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;CACjC,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE;CAC1B,GAAG,KAAK,EAAE,CAAC;CACX,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,KAAK,CAAC;CACd;;CCtBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE;CAC1D,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;CACf,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;CACjC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;CAC3B,GAAG,KAAK,EAAE,CAAC;CACX,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,KAAK,CAAC;CACd;;CCvBO,SAAS,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE;CAChF,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,UAAU,EAAE;CAC3C,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;CACF;;CCHA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,UAAU,EAAE,EAAE,EAAE,YAAY,GAAG,IAAI,EAAE;CAC/D,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK;CACzD,EAAE,OAAO,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;CACtE,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC;CACzC;;CCpBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,UAAU,EAAE,EAAE,EAAE,YAAY,GAAG,IAAI,EAAE;CAC9D,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK;CACpD,EAAE,OAAO,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;CACtE,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC;CACzC;;CCrBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,8BAA8B,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE;CACtF,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;CAC5C,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;CACpC,CAAC,IAAI,WAAW,KAAK,OAAO,IAAI,OAAO,EAAE;CACzC,EAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;CAC/C,EAAE;CACF,CAAC,IAAI,CAAC,OAAO,EAAE;CACf,EAAE,OAAO,CAAC,CAAC,CAAC;CACZ,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;CAC1B,EAAE,OAAO,CAAC,CAAC;CACX,EAAE,MAAM,IAAI,WAAW,GAAG,OAAO,EAAE;CACnC,EAAE,OAAO,CAAC,CAAC;CACX,EAAE,MAAM,IAAI,WAAW,GAAG,OAAO,EAAE;CACnC,EAAE,OAAO,CAAC,CAAC,CAAC;CACZ,EAAE;CACF,CAAC,OAAO,CAAC,CAAC;CACV,CAAC;CACM,SAAS,wBAAwB,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,EAAE;CACnF,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK;CAC5C,EAAE,OAAO,8BAA8B,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;CAC/E,EAAE,CAAC,CAAC;CACJ;;CCvCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE;CACjF,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;CAC5C,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;CACpC,CAAC,IAAI,WAAW,KAAK,OAAO,IAAI,OAAO,EAAE;CACzC,EAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;CAC/C,EAAE;CACF,CAAC,OAAO,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;CAC3C,CAAC;CACM,SAAS,4BAA4B,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,EAAE;CACvF,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK;CAC5C,EAAE,OAAO,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;CAC1E,EAAE,CAAC,CAAC;CACJ;;CCtCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,6BAA6B,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE;CACrF,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;CAC5C,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;CACpC,CAAC,IAAI,WAAW,KAAK,OAAO,IAAI,OAAO,EAAE;CACzC,EAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;CAC/C,EAAE;CACF,CAAC,IAAI,CAAC,OAAO,EAAE;CACf,EAAE,OAAO,CAAC,CAAC;CACX,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;CAC1B,EAAE,OAAO,CAAC,CAAC,CAAC;CACZ,EAAE,MAAM,IAAI,WAAW,GAAG,OAAO,EAAE;CACnC,EAAE,OAAO,CAAC,CAAC,CAAC;CACZ,EAAE,MAAM,IAAI,WAAW,GAAG,OAAO,EAAE;CACnC,EAAE,OAAO,CAAC,CAAC;CACX,EAAE;CACF,CAAC,OAAO,CAAC,CAAC;CACV,CAAC;CACM,SAAS,uBAAuB,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,EAAE;CAClF,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK;CAC5C,EAAE,OAAO,6BAA6B,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;CAC9E,EAAE,CAAC,CAAC;CACJ;;CCrCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE;CAC5D,CAAC,OAAO,uBAAuB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7D;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE;CACpD,CAAC,OAAO,wBAAwB,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CACrE;;CClBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE;CAC9C,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;CACzB,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;CACjC,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;CACjC,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;CAC9B,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;CAC9B,GAAG;CACH,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACnC,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,YAAY,CAAC;CACrB;;CC1BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE;CACzD,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;CACzB,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;CACjC,EAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC;CAC1C,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,YAAY,CAAC;CACrB;;CCtBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,gBAAgB,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;CACxE,CAAC,IAAI,QAAQ,EAAE;CACf,EAAE,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;CAC/C,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;CAC/C,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;CAC9C,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;CAC/B,EAAE,CAAC,CAAC;CACJ;;CC3BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;CAC7E,CAAC,IAAI,QAAQ,EAAE;CACf,EAAE,OAAO,aAAa,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;CAC7C,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;CAC/C,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,OAAO,aAAa,CAAC,UAAU,EAAE,OAAO,IAAI,KAAK;CAClD,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;CAC/B,EAAE,CAAC,CAAC;CACJ;;CC3BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,YAAY,GAAG,wBAAwB,CAAC,QAAQ,EAAE;AACnD,OAAC,QAAQ,GAAG,aAAa,CAAC,YAAY,EAAE;CACpD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC1B;;CC5BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,QAAQ,GAAG,oBAAoB,CAAC,MAAM,EAAE;CACrD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC1B;;CC7BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE;CAC7C,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE;CAC/B,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;CACzB,EAAE;CACF,CAAC,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK;CACpC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;CACtB,EAAE,CAAC,CAAC;CACJ;;CCvBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE;CAC3C,CAAC,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;CACvC,EAAE,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;CACpC,EAAE,CAAC,CAAC;CACJ;;CCrBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,gCAAgC,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE;CACxF,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;CAC5C,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;CACpC,CAAC,IAAI,WAAW,KAAK,OAAO,IAAI,OAAO,EAAE;CACzC,EAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;CAC/C,EAAE;CACF,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;CAC3C,CAAC;CACM,SAAS,mCAAmC,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,EAAE;CAC9F,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK;CAC5C,EAAE,OAAO,gCAAgC,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;CACjF,EAAE,CAAC,CAAC;CACJ;;CC9BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,gBAAgB,CAAC,MAAM,EAAE;CACzC,CAAC,IAAI,MAAM,EAAE;CACb,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACvD,EAAE;CACF;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,IAAI,MAAM,EAAE;CACb,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACvD,EAAE;CACF;;CCfO,SAAS,gBAAgB,CAAC,SAAS,EAAE;CAC5C,CAAC,OAAO,CAAC,IAAI,KAAK;CAClB,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;CACzD,EAAE,CAAC;CACH;;CCJA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,gBAAgB,CAAC,QAAQ;;CCZlD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,UAAU,GAAG,gBAAgB,CAAC,SAAS;;CCZpD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,QAAQ,GAAG,gBAAgB,CAAC,OAAO;;CCZhD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,UAAU,GAAG,gBAAgB,CAAC,SAAS;;CCbpD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE;CACxC,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC;CACpB,CAAC,IAAI,KAAK,CAAC;CACX,CAAC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,KAAK;CAChC,EAAE,IAAI,KAAK,KAAK,IAAI,EAAE;CACtB,GAAG,KAAK,EAAE,CAAC;CACX,GAAG;CACH,EAAE,IAAI,KAAK,IAAI,CAAC,EAAE;CAClB,GAAG,KAAK,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;CAC7B,GAAG,KAAK,GAAG,IAAI,CAAC;CAChB,GAAG;CACH,EAAE,OAAO,KAAK,CAAC;CACf,EAAE,CAAC;CACH,CAAC,OAAO,SAAS,CAAC;CAClB;;CCpCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE;CACtC,CAAC,OAAO,CAAC,GAAG,IAAI,KAAK;CACrB,EAAE,OAAO,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7C,EAAE,CAAC;CACH;;CClBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE;CACzC,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC;CACpB,CAAC,IAAI,KAAK,CAAC;CACX,CAAC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,KAAK;CACjC,EAAE,IAAI,KAAK,KAAK,IAAI,EAAE;CACtB,GAAG,KAAK,EAAE,CAAC;CACX,GAAG;CACH,EAAE,IAAI,KAAK,IAAI,CAAC,EAAE;CAClB,GAAG,KAAK,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;CAC7B,GAAG,MAAM;CACT,GAAG,KAAK,GAAG,IAAI,CAAC;CAChB,GAAG;CACH,EAAE,OAAO,KAAK,CAAC;CACf,EAAE,CAAC;CACH,CAAC,OAAO,UAAU,CAAC;CACnB;;AC7BY,OAAC,YAAY,GAAG,MAAM,CAAC,OAAO;CAC1C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE;CAC3C,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACvB,EAAE,OAAO,YAAY,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;CAC1C,EAAE;CACF;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,eAAe,GAAG,OAAO,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,KAAK;CACpF,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;CACzB,EAAE,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,KAAK;CACzE,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;CACtG,GAAG,CAAC,CAAC;CACL,EAAE,MAAM;CACR,EAAE,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,KAAK;CACzE,GAAG,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;CACvF,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CCnCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE;CACtE,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;CACzB,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,KAAK;CACxE,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;CACpG,GAAG,CAAC,CAAC;CACL,EAAE,MAAM;CACR,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,KAAK;CACxE,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;CACrF,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CCpCO,eAAe,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE;CACrD,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC;CACnB,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;CACvB,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;CACtB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;CAC/B,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;CAC9B,EAAE,UAAU,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;CAClC,EAAE,YAAY,EAAE,CAAC;CACjB,EAAE,CAAC,CAAC;CACJ,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,EAAE,KAAK,EAAE,EAAE;CACpD,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;CACnD,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CCVA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,wBAAwB,CAAC,KAAK,EAAE;AAC7C,OAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;CCfrC,SAAS,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE;CACxC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;CACpB,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;CAC9B,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC3B,GAAG;CACH,EAAE,OAAO,MAAM,CAAC;CAChB,EAAE;CACF,CAAC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;CACpC,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CAC/B,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CCVA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,eAAe,GAAG,wBAAwB,CAAC,mBAAmB,EAAE;AACjE,OAAC,WAAW,GAAG,aAAa,CAAC,eAAe;;CCdjD,eAAe,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE;CAClE,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;CACpB,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;CAC9B,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CACjC,GAAG;CACH,EAAE,OAAO,MAAM,CAAC;CAChB,EAAE;CACF,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;CAC1B,EAAE,WAAW,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE;CACrD,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CAChC,GAAG;CACH,EAAE;CACF,CAAC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;CACpC,EAAE,MAAM,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CACrC,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,UAAU,GAAG,CAAC,MAAM,KAAK;CACtC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,YAAY,QAAQ,GAAG,KAAK,CAAC;CAChE;;CCdA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,WAAW,GAAG,wBAAwB,CAAC,eAAe,EAAE;AACzD,OAAC,OAAO,GAAG,aAAa,CAAC,WAAW;;CCTzC,SAAS,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAE;CAChH,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,KAAK;CAC/D,EAAE,IAAI,QAAQ,CAAC;CACf,EAAE,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC5C,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;CACtC,GAAG,OAAO;CACV,GAAG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;CAC9B,GAAG,QAAQ,GAAG,CAAC,eAAe,IAAI,cAAc,GAAG,SAAS,CAAC;CAC7D,GAAG,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;CAC1D,GAAG,QAAQ,GAAG,CAAC,eAAe,IAAI,eAAe,GAAG,UAAU,CAAC;CAC/D,GAAG,MAAM,IAAI,SAAS,EAAE;CACxB,GAAG,QAAQ,GAAG,CAAC,eAAe,IAAI,cAAc,GAAG,SAAS,CAAC;CAC7D,GAAG,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;CAClC,GAAG,QAAQ,GAAG,cAAc,CAAC;CAC7B,GAAG,MAAM;CACT,GAAG,QAAQ,GAAG,CAAC,eAAe,IAAI,eAAe,GAAG,UAAU,CAAC;CAC/D,GAAG;CACH,EAAE,OAAO,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;CACrE,EAAE,CAAC;CACH;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,IAAI,GAAG,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU;;CCvBnG,MAAM,KAAK,CAAC;CACnB,CAAC,WAAW,CAAC,OAAO,EAAE;CACtB,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;CAC/B,EAAE;CACF,CAAC,cAAc,CAAC,OAAO,EAAE;CACzB,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC;CACzB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK;CACxC,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,EAAE;CAC7C,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;CAClE,IAAI,OAAO,SAAS,CAAC;CACrB,IAAI,CAAC;CACL,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,QAAQ,CAAC,KAAK,EAAE;CACjB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;CACrB,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;CACF,CAAC,IAAI,GAAG;CACR,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CAC3B,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CACpB,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;CACF,CAAC,KAAK,GAAG,IAAI,CAAC;CACd,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,MAAM,EAAE;CAC9B,CAAC,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;CACnC;;CCjDA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE;CACzD,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;CACpB,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,SAAS,KAAK;CACnC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;CAC7B,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;CAChC,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,CAAC;CACvC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;CACvB,GAAG,OAAO,MAAM,CAAC;CACjB,GAAG;CACH,EAAE,OAAO,OAAO,CAAC;CACjB,EAAE,CAAC;CACH,CAAC,OAAO,OAAO,CAAC;CAChB;;CC7BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE;CAC9D,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;CACpB,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,SAAS,KAAK;CACnC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;CAChC,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;CAChC,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,CAAC;CACvC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;CACvB,GAAG,OAAO,MAAM,CAAC;CACjB,GAAG;CACH,EAAE,OAAO,OAAO,CAAC;CACjB,EAAE,CAAC;CACH,CAAC,OAAO,OAAO,CAAC;CAChB;;CC7BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,KAAK,GAAG,KAAK;AACd,OAAC,QAAQ,GAAG,MAAM;CAC9B,CAAC,OAAO,KAAK,CAAC;CACd;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,KAAK,GAAG,MAAM;AACf,OAAC,SAAS,GAAG,MAAM;CAC/B,CAAC,OAAO,KAAK,CAAC;CACd;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,IAAI,GAAG,MAAM;CAC1B,CAAC,OAAO;CACR;;CCbA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE;CACxC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;CAC9C,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;CAClB,EAAE;CACF,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;CACzD,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;CAC9C,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;CACpC,EAAE;CACF,CAAC,OAAO,OAAO,CAAC;CAChB;;CC3CO,MAAM,MAAM,CAAC;CACpB,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;CACvB,CAAC,SAAS,GAAG;CACb,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,MAAM,CAAC,EAAE,EAAE;CACZ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;CACnB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CACvB,EAAE;CACF,CAAC,GAAG,CAAC,EAAE,EAAE;CACT,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;CAC3B,EAAE;CACF,CAAC,GAAG,CAAC,EAAE,EAAE;CACT,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;CAC3B,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE;CACrB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;CAC3B,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM;CAC9B,GAAG,QAAQ,EAAE,CAAC;CACd,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CAC1B,GAAG,EAAE,IAAI,CAAC,CAAC;CACX,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;CAC3B,EAAE,OAAO,EAAE,CAAC;CACZ,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,KAAK,GAAG;CACT,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;CAC3B,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;CACnC,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CAC1B,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC;AACW,OAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE;CACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE;CACtC,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;CACnC,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,GAAG;CAC9B,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CAChC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK;CACtB,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CACvB,EAAE,CAAC,CAAC;CACJ;;CCzGA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;CAGlC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE;CAC3D,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;CACzB,EAAE,OAAO,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;CAC1D,EAAE;CACF;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE;CACzC,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE;CAC7B,EAAE,IAAI,SAAS,CAAC,EAAE,KAAK,KAAK,EAAE;CAC9B,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;CAC/B,GAAG;CACH,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM;CAC7B,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;CAC/B,GAAG,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;CACxB,GAAG,EAAE,IAAI,CAAC,CAAC;CACX,EAAE;CACF,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;CACtB,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CAC/C,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM;CACzB,EAAE,IAAI,SAAS,CAAC,EAAE,KAAK,KAAK,EAAE;CAC9B,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;CAC/B,GAAG,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;CACxB,GAAG;CACH,EAAE,CAAC;CACH,CAAC,OAAO,SAAS,CAAC;CAClB;;CCvCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE;CAC5C,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;CAC3B,EAAE,OAAO,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;CAC3B,EAAE;CACF;;CCnBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE;CACrD,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;CACnC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;CACnD,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;CAC/B,EAAE,MAAM,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;CAC1D,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CC5BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,MAAM,GAAG,CAAC,UAAU,EAAE,KAAK,KAAK;CAC7C,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;CACnC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;CACd,EAAE,CAAC,CAAC;CACJ;;CC5BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,QAAQ,EAAE;CACjC,CAAC,OAAO,CAAC,GAAG,IAAI,KAAK;CACrB,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;CAC5B,EAAE,CAAC;CACH;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;CAClC,CAAC,OAAO,CAAC,GAAG,IAAI,KAAK;CACrB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;CACrB,EAAE,CAAC;CACH;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,IAAI,GAAG,CAAC,QAAQ,KAAK;CAClC,CAAC,IAAI,KAAK,CAAC;CACX,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,KAAK;CAC/B,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;CACxB,GAAG,KAAK,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;CAC7B,GAAG;CACH,EAAE,OAAO,KAAK,CAAC;CACf,EAAE,CAAC;CACH,CAAC,OAAO,QAAQ,CAAC;CACjB;;CC7BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;CACrE,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,KAAK;CAC3F,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;CAC3F,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,OAAO,CAAC;CAChB;;CCxBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE;CACnF,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;CACzB,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,KAAK;CACzE,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;CAClH,GAAG,CAAC,CAAC;CACL,EAAE,MAAM;CACR,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,KAAK;CACzE,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;CACnG,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,OAAO,OAAO,CAAC;CAChB;;CCpCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,MAAM,EAAE;CAChC,CAAC,OAAO,MAAM,EAAE,WAAW,CAAC;CAC5B;;CCZA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE;CAC7C,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpC,CAAC,IAAI,UAAU,KAAK,QAAQ,EAAE;CAC9B,EAAE,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;CACtC,GAAG,OAAO,WAAW,EAAE,CAAC;CACxB,GAAG;CACH,EAAE;CACF,CAAC,OAAO,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;CACpC;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE,aAAa,EAAE;CACxE,CAAC,MAAM,OAAO,GAAG,aAAa,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;CACpD,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;CACvC,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;CACjD,EAAE,MAAM,eAAe,GAAG,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACjE,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;CAC9B,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CACnD,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;CAC3B,GAAG;CACH,EAAE,OAAO,OAAO,CAAC;CACjB,EAAE;CACF,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAC3C,CAAC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;CACpC,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CACvD,EAAE,IAAI,SAAS,EAAE;CACjB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;CAC5B,GAAG,MAAM;CACT,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;CACzB,GAAG;CACH,EAAE;CACF,CAAC,OAAO,OAAO,CAAC;CAChB;;CCtCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE;CAClG,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;CAC1B,EAAE,MAAM,gBAAgB,GAAG,EAAE,CAAC;CAC9B,EAAE,WAAW,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE;CACrD,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;CACzE,GAAG;CACH,EAAE,OAAO,gBAAgB,CAAC;CAC1B,EAAE;CACF,CAAC,MAAM,OAAO,GAAG,aAAa,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;CACpD,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;CACvC,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;CACjD,EAAE,MAAM,eAAe,GAAG,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACjE,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;CAC9B,GAAG,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CACzD,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;CAC3B,GAAG;CACH,EAAE,OAAO,OAAO,CAAC;CACjB,EAAE;CACF,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAC3C,CAAC,WAAW,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;CAC1C,EAAE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CAC7D,EAAE,IAAI,SAAS,EAAE;CACjB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;CAC5B,GAAG,MAAM;CACT,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;CACzB,GAAG;CACH,EAAE;CACF,CAAC,OAAO,OAAO,CAAC;CAChB;;CC7CA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa;;CCzB3G;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,IAAI,CAAC,SAAS,EAAE;CAChC,CAAC,OAAO,CAAC,GAAG,IAAI,KAAK;CACrB,EAAE,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,KAAK;CAClC,GAAG,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;CACxB,GAAG,CAAC,CAAC;CACL,EAAE,CAAC;CACH;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE;CACzD,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC,OAAO,eAAe,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,KAAK;CAC7E,EAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;CACrE,EAAE,CAAC,CAAC;CACJ;;CC1BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE;CAC9C,CAAC,IAAI,CAAC,MAAM,EAAE;CACd,EAAE,OAAO;CACT,EAAE;CACF,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC,OAAO,UAAU,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,KAAK;CACxE,EAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;CACrE,EAAE,CAAC,CAAC;CACJ;;CCtBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE;CAC3D,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;CACvC,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;CAC9B,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC1C,GAAG,IAAI,MAAM,KAAK,KAAK,EAAE;CACzB,IAAI,OAAO,KAAK,CAAC;CACjB,IAAI;CACJ,GAAG;CACH,EAAE,MAAM;CACR,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;CACrC,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CAC/C,GAAG,IAAI,MAAM,KAAK,KAAK,EAAE;CACzB,IAAI,OAAO,KAAK,CAAC;CACjB,IAAI;CACJ,GAAG;CACH,EAAE;CACF,CAAC,OAAO,IAAI,CAAC;CACb;;CChCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,eAAe,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE,aAAa,EAAE;CACrF,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;CAC1B,EAAE,WAAW,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE;CACrD,GAAG,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CAC/C,GAAG,IAAI,MAAM,KAAK,KAAK,EAAE;CACzB,IAAI,OAAO,KAAK,CAAC;CACjB,IAAI;CACJ,GAAG;CACH,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;CAC9C,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;CAC9B,GAAG,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAChD,GAAG,IAAI,MAAM,KAAK,KAAK,EAAE;CACzB,IAAI,OAAO,KAAK,CAAC;CACjB,IAAI;CACJ,GAAG;CACH,EAAE,MAAM;CACR,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;CACrC,GAAG,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CACrD,GAAG,IAAI,MAAM,KAAK,KAAK,EAAE;CACzB,IAAI,OAAO,KAAK,CAAC;CACjB,IAAI;CACJ,GAAG;CACH,EAAE;CACF,CAAC,OAAO,IAAI,CAAC;CACb;;CCvCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,KAAK,GAAG,YAAY,CAAC,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe;;CCtBzH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,UAAU,EAAE;CACtC,CAAC,OAAO,CAAC,GAAG,KAAK;CACjB,EAAE,OAAO,KAAK,CAAC,UAAU,EAAE,CAAC,SAAS,KAAK;CAC1C,GAAG,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;CACzB,GAAG,CAAC,CAAC;CACL,EAAE,CAAC;CACH;;CCpBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE;CACzC,CAAC,OAAO,CAAC,GAAG,IAAI,KAAK;CACrB,EAAE,OAAO,QAAQ,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;CAC3C,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;CACrB,GAAG,CAAC,CAAC,CAAC;CACN,EAAE,CAAC;CACH;;CCnBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE;CACzC,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE;CAC7B,EAAE,IAAI,SAAS,CAAC,EAAE,EAAE;CACpB,GAAG,SAAS,CAAC,cAAc,GAAG,KAAK,CAAC;CACpC,GAAG,OAAO;CACV,GAAG;CACH,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;CAC9B,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM;CAC7B,GAAG,IAAI,SAAS,CAAC,cAAc,EAAE;CACjC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;CAChC,IAAI;CACJ,GAAG,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;CACxB,GAAG,EAAE,IAAI,CAAC,CAAC;CACX,EAAE;CACF,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;CACtB,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CAC/C,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM;CACzB,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;CAC9B,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;CACvB,EAAE,CAAC;CACH,CAAC,OAAO,SAAS,CAAC;CAClB;;CCvCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;CACrC,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK;CACpB,EAAE,OAAO,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;CAChC,EAAE,CAAC;CACH;;CCpBA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC;CAC7C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,iBAAiB,CAAC,MAAM,EAAE;CAC1C,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC5C;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,YAAY,GAAG,MAAM,CAAC,oBAAoB;CACvD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,WAAW,GAAG,MAAM,CAAC,yBAAyB;CAC3D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,OAAO,GAAG,MAAM,CAAC,eAAe;AACjC,OAAC,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,cAAc;;CC/C9D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,MAAM,GAAG,MAAM,CAAC;;CCd7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE;CACpC,CAAC,OAAO,MAAM,GAAG,MAAM,CAAC;CACxB;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE;CAC/B,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;CACnB;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;CACtC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;CACvB;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE;CAClC,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;CACnB;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;CACxC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;CACvB;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE;CACnD,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;CAClB,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;CACF,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE;CAC1B,EAAE,OAAO,CAAC,CAAC;CACX,EAAE;CACF,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,IAAI,GAAG,CAAC;CACtC;;CCtBA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;CAC1C,CAAC,OAAO,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;CACrC;;CClBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;CACzC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;CACvB;;CClBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;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CA;CACA;CACA;AACY,OAAC,MAAM,GAAG,SAAS,CAAC,MAAM;;CChGtC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,MAAM,cAAc,CAAC;CAC5B,CAAC,WAAW,CAAC,aAAa,GAAG,EAAE,EAAE;CACjC,EAAE,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;CAC7B,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,OAAO,CAAC,GAAG,EAAE;CACd,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACzB,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;CACrB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CAC1B,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,KAAK,GAAG;CACT,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;CAClB,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,UAAU,CAAC,GAAG,EAAE;CACjB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CACzB,EAAE;CACF,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,cAAc,CAAC,aAAa,EAAE;CAC9C,CAAC,OAAO,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;CAC1C;;CChGA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,MAAM,EAAE;CAChC,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;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"} \ No newline at end of file diff --git a/build/browser.js b/build/browser.js index 4931347e..93bdd434 100644 --- a/build/browser.js +++ b/build/browser.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function e(t){return void 0===t}function r(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!e(t)&&!o(t)}function c(t){return t}function s(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const a=n.call(r,t,c,e,s,u,o);i(a)&&e.push(a)})):s(t,((t,c,s,u)=>{const a=n(t,c,e,s,u,r,o);i(a)&&e.push(a)})),e}async function a(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const c=await n(t,r,e,o);i(c)&&e.push(c)})),e}const{sign:l}=Math;function h(t){return-1===l(t)}function g(t,n,e,r){let o=t;for(;on;)r.push(o),o-=e;return r}function d(t,n){return t.forEach(n),t}const y=Array.isArray;function m(t){return y(t)&&t||i(t)&&[t]||[]}function b(t){return t.flat(1/0)}const A=Reflect.construct;function w(t,n=[],e){const r=y(n)?n:[n];return e?A(t,r,e):A(t,r)}function v(...t){const n=w(Map),e=[];return s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&0===t.parentIndex&&e.push(t.child)})),e}function C(t,n=1,e=t.length){return t.splice(n,e)}function I(t,n,e){if(!t)return;const r=t.length;for(let o=r-1;o>=0;o--)n(t[o],o,t,r,e);return t}async function O(t,n){if(!t)return;const e=t.length;for(let r=e-1;r>=0;r--)await n(t[r],r,t,e);return t}function E(t,n,e){if(!t)return;const r=t.length;for(let o=0;o{!0===n(t,o,e,i,c,r)&&e.push(t)})),e}async function j(t,n,e=[],r){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,e,i,c,r)&&e.push(t)})),e}const x=Object.keys;function M(t){if(t)return x(t)}const T=/\.|\[/,R=/]/g,B="";function N(t){return t.replace(R,B).split(T)}function L(t,n){if(!n)return!1;let e=n;return E(y(t)?t:N(t),(t=>(e=e[t],i(e)))),e}const $=Object.hasOwn;function k(t,...n){if(t)return E(n,(n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}}))}const D=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function U(t,n){return t?.constructor===n||!1}function P(t){return n=>U(n,t)}function q(t){return t?.constructor?.name}function z(t){return n=>q(n)===t||!1}function W(t){return function(n,...e){return e?t(n)&&E(e,t):t(n)}}const _=z("Buffer"),H=W(_),V=(t,n)=>{if(t===n)return!0;if(H(t))return t.equals(n);if(t.toString()===n.toString())if(D(t)){const e=M(t);if(k(n,e))return E(e,(e=>V(t[e],n[e])))}else if(y(t)&&t.length===n.length)return E(t,((t,e)=>V(t,n[e])));return!1};const Z=Math.max;function K(t,n,e=[],r,o){return i(r)?s(t,((t,i,c,s)=>{e[i]=n.call(r,t,i,e,c,s,o)})):s(t,((t,r,i,c)=>{e[r]=n(t,r,e,i,c,o)})),e}async function G(t,n){const e=[];return await a(t,(async(t,r,o)=>{e[r]=await n(t,r,o)})),e}function J(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function et(t,n,e){if(i(t))return nt(t,n,e)}function rt(t,n=t.length){if(t.length<=1)return et(t);const e=et(t);let r,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",e){return t.sort(((t,r)=>ft(t,r,n,e)))}function ht(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):o.localeCompare(i)}function gt(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i?o?oi?1:0:-1:1}function pt(t,n="id",e){return t.sort(((t,r)=>gt(t,r,n,e)))}const dt=z("Number"),yt=W(dt);const mt=P(String);function bt(t,n){if(t)return mt(n)?t[n]:K(n,(n=>t[n]))}function At(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),It=wt(/\.js$/),Ot=wt(/\.json$/);const Et=Object.assign;function Ft(t,...n){if(i(t))return Et(t,...n)}const St=async(t,n,e,r)=>{if(!t)return;const o=M(t);return i(e)?await a(o,((i,c,s,u)=>n.call(e,t[i],i,t,u,o,r))):await a(o,((e,i,c,s)=>n(t[e],e,t,s,o,r))),t};function jt(t,n,e,r){if(!t)return;const o=M(t);return i(e)?s(o,((o,i,c,s)=>{n.call(e,t[o],o,t,s,c,r)})):s(o,((e,o,i,c)=>{n(t[e],e,t,c,i,r)})),t}const xt=z("Set"),Mt=W(xt);function Tt(t,n){if(Mt(t)){for(const e of t)n(e,t);return t}for(const[e,r]of t)n(r,e,t);return t}const Rt=z("GeneratorFunction"),Bt=W(Rt);async function Nt(t,n,e){if(Mt(t)){for(const e of t)await n(e,t);return t}if(Bt(t))for await(const r of t(...e))await n(r,t);for(const[e,r]of t)await n(r,e,t);return t}const Lt=t=>!!i(t)&&t instanceof Function,$t=z("AsyncFunction"),kt=W($t);function Dt(t,n,e,r,o,c){return(s,u,a,f,l)=>{let h;const g=kt(u);if(i(s)&&u)return h=y(s)?g?n:t:D(s)||Lt(s)?g?r:e:o?g?c:o:Bt(s)?c:g?r:e,h(s,u,a,f,l)}}const Ut=Dt(s,a,jt,St,Tt,Nt);class Pt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Ut(t,((t,e)=>{n[e]=function(...e){return this.value=t.call(n,n.value,...e),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,zt=!1,Wt=()=>{};function _t(t,n){for(let e=0;e{t(),e.remove(r)}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Vt=w(Ht);function Zt(t,n){return Vt.set(t,n)}const Kt=Reflect.apply;function Gt(t,n,e){if(Lt(t))return Kt(t,n,e)}async function Jt(t,n,e={}){if(t)return await St(t,(async(t,r,o,i,c)=>{e[r]=await n(t,r,e,o,i,c)})),e}function Qt(t,n,e={},r,o){if(t)return i(r)?jt(t,((t,i,c,s,u)=>{e[i]=n.call(r,t,i,e,c,s,u,o)})):jt(t,((t,r,i,c,s)=>{e[r]=n(t,r,e,i,c,s,o)})),e}function Xt(t){return t?.constructor}function Yt(t,n=[]){const e=Xt(t);return e===Function&&"function"===e.name?function(){}:w(e,n)}function tn(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){o(n(e,r,t))}return r}const o=Lt(r.set);for(const[e,i]of t){const c=n(i,e,r,t);o?r.set(e,c):r[e]=c}return r}async function nn(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))e.push(await n(o,e,t));return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){r(await n(e,o,t))}return o}const i=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i?o.set(e,c):o[e]=c}return o}const en=Dt(K,G,Qt,Jt,tn,nn);async function rn(t,n){if(!t)return;return F(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function on(t,n){if(!t)return;return E(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function cn(t,n=c){if(y(t)||Mt(t))for(const e of t){if(!1===n(e,t))return!1}else for(const[e,r]of t){if(!1===n(r,e,t))return!1}return!0}async function sn(t,n=c,e){if(Bt(t))for await(const r of t(...e)){if(!1===await n(r,t))return!1}else if(y(t)||Mt(t))for(const e of t){if(!1===await n(e,t))return!1}else for(const[e,r]of t){if(!1===await n(r,e,t))return!1}return!0}const un=Dt(E,F,on,rn,cn,sn);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,gn=Object.defineProperty,pn=fn(Object.hasOwnProperty),dn=Object.is;const{random:yn}=Math;const{sign:mn}=Math;const bn=Object.entries;async function An(t,n=c,e={}){return await St(t,(async(t,r,o,c,s)=>{const u=await n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function wn(t,n=c,e={}){return jt(t,((t,r,o,c,s)=>{const u=n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function vn(t,n,e={}){return jt(t,((t,r,o,i,c)=>{!0===n(t,r,e,o,i,c)&&(e[r]=t)})),e}async function Cn(t,n,e={}){return await St(t,(async(t,r,o,i,c)=>{!0===await n(t,r,e,o,i,c)&&(e[r]=t)})),e}const In=z("RegExp"),On=W(In),En=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(En,"\\$&")}function Sn(t,n){return n?Sn(K(t,Fn)):RegExp(t.join("|"))}function jn(t){if(t)return M(t).length}const xn=(t,n)=>{const e={};return s(t,((t,r)=>{e[t]=n[r]})),e},Mn=/[ _-]+/g;const Tn=/[ _-]+/g,Rn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Ln=/[ _-]+/g;const $n=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Dn=/%(?![\da-f]{2})/gi,Un=/&/g,Pn=//g,zn=/"/g;function Wn(t){return decodeURIComponent(t.replace(Dn,(()=>"%25")))}function _n(t){return t.replace(Un,"&").replace(Pn,"<").replace(qn,">").replace(zn,""")}const Hn=/\S+/g,Vn=/\w+/g;const Zn=/\w+/g;function Kn(t){return t[0].toUpperCase()}function Gn(t){return Kn(t)+kn(t)}function Jn(t){return Kn(t)+kn(t).toLowerCase()}function Qn(t){return Xt(t)?.name}function Xn(t){return!i(t)}const Yn=z("Map"),te=W(Yn),ne=/Array/,ee="Array";function re(t){if(t){const n=Qn(t);if(ne.test(n)&&n!==ee)return!0}return!1}const oe=z("BigInt"),ie=W(oe),ce=z("Boolean"),se=W(ce),ue=z("ArrayBuffer"),ae=W(ue);const fe=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const le=z("Date"),he=W(le);function ge(t){return!1===t}const pe=z("Float32Array"),de=W(pe),ye=z("Float64Array"),me=W(ye),{isInteger:be}=Number,Ae=be,we=z("Int16Array"),ve=W(we),Ce=z("Int32Array"),Ie=W(Ce),Oe=z("Int8Array"),Ee=W(Oe);function Fe(t){return!!t&&t instanceof Promise}function Se(t){return!!t&&(Fe(t)||kt(t)||Bt(t))}const{isSafeInteger:je}=Number,xe=je;const Me=z("Uint16Array"),Te=W(Me),Re=z("Uint32Array"),Be=W(Re),Ne=z("Uint8Array"),Le=W(Ne),$e=z("Uint8ClampedArray"),ke=W($e),De=z("WeakMap"),Ue=W(De),Pe=void 0!==globalThis.Deno,qe=void 0!==globalThis.process&&process.versions&&process.versions.node;function ze(t,n=!0){return Boolean(t)&&n}function We(t,n){return ge(V(t,n))}const _e=JSON;const He=_e.stringify;function Ve(t,n,e){const r=globalThis.options||e;let o;return Lt(r)?o=`${r.name} : ${r.constructor.name}`:r&&(o=`${r.title||r.method.name} -> ${r.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${He(t)}\n\t\tExpected: ${He(n)}`,r)}async function Ze(t,n,e){const r=await t;return!(Lt(n)&&!1===await n(r,e))&&!We(r,n)||Ve(r,n,e)}const Ke=globalThis.structuredClone;async function Ge(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r)){const r=await n(o,e,t);i(r)&&e.push(r)}return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){const c=await n(e,o,t);i(c)&&r(c)}return o}const s=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i(c)&&(s?o.set(e,c):o[e]=c)}return o}function Je(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){const c=n(e,r,t);i(c)&&o(c)}return r}const o=Lt(r.set);for(const[e,c]of t){const s=n(c,e,r,t);i(s)&&(o?r.set(e,s):r[e]=s)}return r}const Qe=Dt(u,f,wn,An,Je,Ge);function Xe(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){!0===n(e,r,t)&&o(e)}}else{const e=Lt(r.set);for(const[o,i]of t){!0===n(i,o,r,t)&&(e?r.set(o,i):r[o]=i)}}return r}async function Ye(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))!0===await n(o,e,t)&&e.push(o);return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){!0===await n(e,o,t)&&r(e)}}else{const e=Lt(o.set);for await(const[r,i]of t){!0===await n(i,r,o,t)&&(e?o.set(r,i):o[r]=i)}}return o}const tr=Dt(S,j,vn,Cn,Xe,Ye);function nr(t){return(...n)=>e=>{let r=e;return t(n,(t=>{r=t(r)})),r}}const er=nr(s),rr=nr(I);function or(t){return(...n)=>async e=>{let r=e;return await t(n,(async t=>{r=await t(r)})),r}}const ir=or(a),cr=or(O);const sr=wt(/\./);class ur{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const e=setInterval((()=>{t()}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const ar=w(ur);class fr{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,fr.models.set(t,n)):Ft(this,t)}}function lr(t){return new Promise(t)}class hr{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;jt(t,(n=>{t[n]=new hr(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,e)=>(console.log(t,n,t[n]),t[n]=new hr(e),!0)})}}class gr{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,e=this.totalActive===this.totalFree;n&&e&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const pr=w(gr);class dr{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function yr(t){return new dr(t)}function mr(t){return t?mr[t]:M(mr)}const br=globalThis.navigator?.userAgentData;if(br)jt(br,((t,n)=>{se(t)&&t&&(mr[n]=t)})),s(br.brands,(t=>{mr[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{mr[t]=!0}))}function Ar(t,n,e,r){return t.addEventListener(n,e,r),t}const wr=document.createDocumentFragment.bind(document);function vr(t,n){return t.appendChild(n),n}function Cr(t,n){return y(n)?xn(n,K(n,(n=>t.getAttribute(n)))):(jt(n,((n,e)=>{t.setAttribute(e,n)})),t)}const Ir=/^.[\w_-]+$/,Or=/^[A-Za-z]+$/,Er=/\s/,Fr=document.getElementsByClassName.bind(document),Sr=document.getElementsByTagName.bind(document),jr=document.getElementById.bind(document),xr=document.querySelector.bind(document),Mr=document.querySelectorAll.bind(document);const Tr=document.createElement.bind(document);function Rr(t){const n=sr(t)&&t||`${t}.js`;return(t=>lr((n=>{Ar(t,"load",n,!0),Ar(t,"error",n,!0),vr(xr("head"),t)})))(Cr(Tr("script"),{async:"",src:n}))}function Br(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&Ar(document,"DOMContentLoaded",t),!1)}Br((()=>{const t=jr("AcidLib");Rr(t&&t.getAttribute("data-index")||"/index")}));const Nr=location.protocol,Lr="http:"===Nr?"ws":"wss",$r=location.hostname,kr={hardware:{cores:navigator.hardwareConcurrency},host:{name:$r,protocol:Nr,protocolSocket:Lr}};function Dr(){Ft(kr,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function Ur(){Dr()}Br(Ur),Ar(window,"load",Ur,!0),Ar(window,"resize",Ur,!0),t.hasLocal=void 0,function(n){try{n().removeItem("TESTING"),t.hasLocal=!0}catch(n){t.hasLocal=!1}}((()=>localStorage));class Pr{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=yr(t)}hasLocal=t.hasLocal;setItem(t,n){return this.hasLocal&&this.local.setItem(t,mt(n)?n:He(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return i(n)?n:!i(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}const qr=(t,n)=>`color:${t};background:${n};`,zr={alert:qr("#fff","#f44336"),important:qr("#fff","#E91E63"),notify:qr("#fff","#651FFF"),warning:qr("#000","#FFEA00")};t.Chain=Pt,t.Crate=Pr,t.Intervals=ur,t.Model=fr,t.Store=hr,t.Timers=Ht,t.UniqID=gr,t.VirtualStorage=dr,t.add=function(t,n){return t+n},t.after=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r<=0&&(e=n(...t),r=null),e)},t.append=vr,t.apply=Gt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const e={};return s(t,((t,r)=>{e[n[r]]=t})),e},t.ary=function(t,n){return(...e)=>t(...e.splice(0,n))},t.assert=function(t,n,e){return Se(t)||Se(n)?Ze(t,n,e):!(Lt(n)&&!1===n(t,e))&&!We(t,n)||Ve(t,n,e)},t.assertAsync=Ze,t.assign=Ft,t.before=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r>=1?e=n(...t):r=null,e)},t.bindAll=function(t,n,e){const r=en(t,(t=>Lt(t)?t.bind(n):t));return e?Ft(e,r):r},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Mn," ").trim().split(" ").forEach(((t,e)=>{n+=0===e?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Pt,[t])},t.chunk=function(t,n=1){const e=[];let r=0;return t.forEach(((t,o)=>{o%n||(e.push([]),o&&r++),e[r].push(t)})),e},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(H(t))return ut(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=ut,t.clearIntervals=function(){_t(setTimeout(Wt,0),(t=>{ar.remove(t)}))},t.clearTimers=function(){_t(setTimeout(Wt,0),(t=>{Vt.remove(t)}))},t.clone=function(t){return Ke(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.cnsl=(t,n)=>{const e=mt(t)?t:He(t);if("alert"===n||"warning"===n)return console.trace(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},t.cnslTheme=(t,n,e)=>{zr[t]=qr(n,e)},t.compact=function(t){if(D(t)){const n=M(t),e=n.length,r={};for(let o=0;oze(t)))},t.compactKeys=function(t){const n=[];return jt(t,((t,e)=>{i(t)&&n.push(e)})),n},t.compactMap=Qe,t.compactMapArray=u,t.compactMapAsyncArray=f,t.compactMapAsyncObject=An,t.compactMapObject=wn,t.concurrent=function(t,n,e){const r=t.length,o=[];for(let i=0;i{r=n(t),e[r]||(e[r]=0),e[r]++})),e},t.countKey=function(t,n){let e=0;return s(t,(t=>{t[n]&&e++})),e},t.countWithoutKey=function(t,n){let e=0;return s(t,(t=>{t[n]||e++})),e},t.crate=function(t){return new Pr(t)},t.createFragment=wr,t.curry=function(t,e=t.length){const r=[],o=(...i)=>{if(r.push(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.curryRight=function(t,e=t.length){const r=[],o=(...i)=>{if(r.unshift(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.debounce=function(t,n){function e(...t){e.id!==zt&&Vt.remove(e.id),e.id=Zt((()=>{e.callable(...t),e.id=zt}),n)}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{e.id!==zt&&(Vt.remove(e.id),e.id=zt)},e},t.deduct=function(t){return t-1},t.defProp=gn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,e=t.length)=>C(t,0,e-n),t.each=Ut,t.eachArray=s,t.eachAsyncArray=a,t.eachAsyncObject=St,t.eachObject=jt,t.eachRight=I,t.eachRightAsync=O,t.ensureArray=m,t.ensureBuffer=function(t){return H(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=En,t.eventAdd=Ar,t.eventRemove=function(t,n,e,r){return t.removeEventListener(n,e,r),t},t.every=un,t.everyArg=function(...t){return kt(t[0])?async function(...n){return un(t,(async t=>un(n,(async n=>t(n)))))}:function(...n){return un(t,(t=>un(n,(n=>t(n)))))}},t.everyArray=E,t.everyAsyncArray=F,t.everyAsyncObject=rn,t.everyObject=on,t.falsy=zt,t.filter=tr,t.filterArray=S,t.filterAsyncArray=j,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,e="id"){const r=t.findIndex(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.findIndexCache=at,t.findItem=function(t,n,e="id"){const r=t.find(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let e=t;for(let t=0;tt.concat(m(n))),[]);return e},t.flattenDeep=b,t.flow=er,t.flowAsync=ir,t.flowAsyncRight=cr,t.flowRight=rr,t.forEach=d,t.forEachAsync=async function(t,n){const e=[],r=[];let o=0;t.forEach(((t,n)=>{e[o]=t,r[o]=t,o++}));for(let t=0;t{const r=n(t,e);o(r)}))}else Lt(e.set)?t.forEach(((t,r)=>{const o=n(t,r,e);e.set(r,o)})):t.forEach(((t,r)=>{const o=n(t,r,e);e[r]=o}));return e},t.forOf=Tt,t.forOfAsync=Nt,t.forOfCompactMap=Je,t.forOfCompactMapAsync=Ge,t.forOfEvery=cn,t.forOfEveryAsync=sn,t.forOfFilter=Xe,t.forOfFilterAsync=Ye,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=Dt,t.get=L,t.getByClass=Fr,t.getById=jr,t.getByTag=Sr,t.getEntries=function(t){if(i(t))return bn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return pt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let e=0;return E(t,((t,r)=>(e=r,n>=t&&(e=r+1,!0)))),e},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Qn,t.groupBy=function(t,n){const e={};return s(t,(t=>{const r=n(t);e[r]||(e[r]=[]),e[r].push(t)})),e},t.has=function t(n,e,r){if(Xn(n)||Xn(e))return!1;if(mt(n))return mt(e)?n.includes(e,r):On(e)?e.test(n):Lt(e)?Boolean(e(n)):un(e,(e=>Boolean(t(n,e))));if(y(n)){if(mt(e))return n.includes(e,r);if(On(e))return un(n,(t=>t.test(e)));if(y(e))return un(e,(e=>Boolean(t(n,e))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}})))},t.hasDot=sr,t.hasKeys=k,t.hasLength=r,t.hasProp=pn,t.hasValue=i,t.htmlEntities=_n,t.ifInvoke=function(t,...n){if(Lt(t))return t(...n)},t.ifNotAssign=(t,n,e)=>(n&&!i(t[n])&&(t[n]=e),t),t.ifValue=function(t,n,e,r){if(i(t)){if(Lt(n))return e?Gt(n,e,r):n(...r);if(D(n))return n[e]=t,n}},t.importjs=Rr,t.inAsync=async function(t,n){const e=t.length;for(let r=0;rUt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const e={};return s(t,(t=>{e[t[n]]=t})),e},t.info=kr,t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,e){return t.slice(0,n)+e+t.slice(n,t.length)},t.intersection=function(t,...n){return u(t,(t=>{if(E(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return ar.set(t,n)},t.intervals=ar,t.invert=function(t,n={}){if(t)return jt(t,((t,e)=>{n[t]=e})),n},t.invoke=function(t,n,e){return K(t,((t,r)=>t[n](e,r)))},t.invokeAsync=function(t,n,e){return G(t,(async(t,r)=>t[n](e,r)))},t.isAgent=mr,t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=y,t.isArrayBuffer=ae,t.isArrayBufferCall=ue,t.isArrayLike=function(t,n){if(Xn(t)||Lt(t))return!1;if(y(t)||re(t))return!0;const e=t.length;if(!Xn(e)||!yt(e)||e<0)return!1;if(n){const n=M(t);return!!n&&un(n,((t,n)=>n>=0&&yt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=$t,t.isBigInt=ie,t.isBigIntCall=oe,t.isBoolean=se,t.isBooleanCall=ce,t.isBuffer=H,t.isBufferCall=_,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return fe.test(n)}return!1},t.isConstructor=U,t.isConstructorFactory=P,t.isConstructorNameFactory=z,t.isDate=he,t.isDateCall=le,t.isDeno=Pe,t.isDocumentReady=Br,t.isDom=function(t){return t&&9!==t.nodeType},t.isEmpty=function(t){return mt(t)||y(t)?!r(t):D(t)?!jn(t):!i(t)},t.isEnter=function(t){return 13===t.keyCode},t.isEqual=V,t.isF32=de,t.isF32Call=pe,t.isF64=me,t.isF64Call=ye,t.isFalse=ge,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=It,t.isFileJSON=Ot,t.isFloat=Ae,t.isFunction=Lt,t.isGenerator=Bt,t.isGeneratorCall=Rt,t.isHTMLCollection=function(t){return!!i(t)&&"[object HTMLCollection]"===t.toString()},t.isI16=ve,t.isI16Call=we,t.isI32=Ie,t.isI32Call=Ce,t.isI8=Ee,t.isI8Call=Oe,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Se,t.isMap=te,t.isMapCall=Yn,t.isMatchArray=function(t,n){return t.length===n.length&&E(t,((t,e)=>V(n[e],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const e=M(t),r=M(n);return e.length===r.length&&E(e,(e=>t[e]===n[e]))},t.isNegative=h,t.isNodeList=function(t){return!!i(t)&&"[object NodeList]"===t.toString()},t.isNodejs=qe,t.isNotArray=function(t){return!y(t)},t.isNotNumber=function(t){return!yt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=yt,t.isNumberCall=dt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,e){return t>n&&te},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=D,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Fe,t.isRegex=On,t.isRegexCall=In,t.isRelated=function(t,n){return!Xn(t)&&!Xn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xe,t.isSame=dn,t.isSameType=function(t,n){const e=Xt(t),r=Xt(n);return e===r&&e.name===r.name},t.isSet=Mt,t.isSetCall=xt,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=ze,t.isTypeFactory=W,t.isTypedArray=re,t.isU16=Te,t.isU16Call=Me,t.isU32=Be,t.isU32Call=Re,t.isU8=Le,t.isU8C=ke,t.isU8CCall=$e,t.isU8Call=Ne,t.isUndefined=e,t.isWeakMap=Ue,t.isWeakMapCall=De,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return _e.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Tn," ").trim().toLowerCase().replace(Rn,"-")},t.keys=M,t.largest=function(t){return Z(...t)},t.last=function(t,n){const e=t.length;return n?t.slice(e-n,e):t[e-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=en,t.mapArray=K,t.mapAsyncArray=G,t.mapAsyncObject=Jt,t.mapObject=Qt,t.mapRightArray=function(t,n,e=[],r){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)e[o]=n(t[c],c,t,i,r),o++;return e},t.mapWhile=function(t,n,e=[],r){const o=t.length;for(let i=0;i{Ut(e,((e,r)=>{if(n[r]&&(D(e)||y(e)||e.forEach))return t(n[r],e);n[r]=e}))})),n},t.model=function(t,n){return i(n)?w(fr,[t,n]):L(t,fr.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Xn,t.nodeAttribute=Cr,t.noop=Wt,t.notEqual=We,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Et,t.objectEntries=bn,t.objectSize=jn,t.omit=function(t,n){if(t){if(y(n)){const e=Sn(n);return vn(t,((t,n)=>!e.test(n)))}if(On(n))return vn(t,((t,e)=>!n.test(e)));if(mt(n))return vn(t,((t,e)=>e!==n));if(yt(n)){const e=n.toString();return vn(t,((t,n)=>n!==e))}return Lt(n)?vn(t,((t,e)=>!n(t,e))):void 0}},t.once=t=>{let n;return(...e)=>(i(n)||(n=t(...e)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>en(t,(t=>t(...n)))},t.overEvery=function(t){return n=>un(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const e=[];return[u(t,((t,r)=>{if(n(t,r))return t;e.push(t)})),e]},t.pick=(t,n,e={})=>{if(t)return s(n,(n=>{e[n]=t[n]})),e},t.pluck=function(t,n){return K(t,(t=>bt(t,n)))},t.pluckObject=bt,t.promise=lr,t.propertyMatch=(t,n,e=M(t))=>E(e,(e=>V(t[e],n[e]))),t.querySelector=xr,t.querySelectorAll=Mr,t.randomFloat=function(t,n=0){return yn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,e=1,r=[]){return h(e)?r:tt(...n.map((t=>e[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let e=t.length;for(let r=0;re)return rt(t);if(1===n)return[t[tt(e-1,0)]];const r=[],o={};let i,c=0;for(;cht(t,r,n,e)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",e){return t.sort(((t,r)=>At(t,r,n,e)))},t.sortCollectionAscending=pt,t.sortCollectionAscendingFilter=gt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(J)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=At,t.sortUnique=ct,t.stringify=He,t.stubArray=()=>[],t.stubFalse=()=>zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=J,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const e=t.length;return t.slice(e-n,e)},t.themes=zr,t.throttle=function(t,n){function e(...t){e.id?e.shouldThrottle=qt:(e.callable(...t),e.id=Zt((()=>{e.shouldThrottle&&e.callable(...t),e.id=zt}),n))}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{Vt.remove(e.id),e.id=zt},e},t.timer=Zt,t.timers=Vt,t.times=_t,t.timesAsync=async function(t,n){for(let e=0;en?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=e-n;for(;c=0&&(i=r[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,e):t},t.truncateRight=function(t,n){const e=t.length;return e>n?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=n;for(;c0&&(i=r[c]," "!==i);c++);return t.substring(c,e).trim()})(t,n,e):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.unZipObject=t=>{const n=[],e=[];return jt(t,((t,r)=>{n.push(r),e.push(t)})),[n,e]},t.union=function(...t){return st(b(t))},t.uniqID=pr,t.unique=st,t.untilFalseArray=function(t,n){const e=t.length;for(let r=0;rGn(t)))},t.upperFirstLetter=Kn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(Zn,(t=>Jn(t)))},t.virtualStorage=yr,t.whileCompactMap=function(t,n,e=[],r){let o=0;for(;o!e.has(t)))},t.words=function(t){return t.match(Vn)||[]},t.wrap=function(t,n){return(...e)=>n(t,...e)},t.xor=function(...t){const n=w(Map),e=[];return 2===t.length?v(t[0],t[1]):(s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&e.push(t.child)})),e)},t.zip=function(...t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.zipObject=xn})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function e(t){return void 0===t}function r(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!e(t)&&!o(t)}function c(t){return t}function s(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const a=n.call(r,t,c,e,s,u,o);i(a)&&e.push(a)})):s(t,((t,c,s,u)=>{const a=n(t,c,e,s,u,r,o);i(a)&&e.push(a)})),e}async function a(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const c=await n(t,r,e,o);i(c)&&e.push(c)})),e}const{sign:l}=Math;function h(t){return-1===l(t)}function g(t,n,e,r){let o=t;for(;on;)r.push(o),o-=e;return r}function d(t,n){return t.forEach(n),t}const y=Array.isArray;function m(t){return y(t)&&t||i(t)&&[t]||[]}function b(t){return t.flat(1/0)}const A=Reflect.construct;function w(t,n=[],e){const r=y(n)?n:[n];return e?A(t,r,e):A(t,r)}function v(...t){const n=w(Map),e=[];return s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&0===t.parentIndex&&e.push(t.child)})),e}function C(t,n=1,e=t.length){return t.splice(n,e)}function I(t,n,e){if(!t)return;const r=t.length;for(let o=r-1;o>=0;o--)n(t[o],o,t,r,e);return t}async function O(t,n){if(!t)return;const e=t.length;for(let r=e-1;r>=0;r--)await n(t[r],r,t,e);return t}function E(t,n,e){if(!t)return;const r=t.length;for(let o=0;o{!0===n(t,o,e,i,c,r)&&e.push(t)})),e}async function j(t,n,e=[],r){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,e,i,c,r)&&e.push(t)})),e}const x=Object.keys;function M(t){if(t)return x(t)}const T=/\.|\[/,R=/]/g,B="";function N(t){return t.replace(R,B).split(T)}function L(t,n){if(!n)return!1;let e=n;return E(y(t)?t:N(t),(t=>(e=e[t],i(e)))),e}const $=Object.hasOwn;function k(t,...n){if(t)return E(n,(n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}}))}const D=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function U(t,n){return t?.constructor===n||!1}function P(t){return n=>U(n,t)}function q(t){return t?.constructor?.name}function z(t){return n=>q(n)===t||!1}function W(t){return function(n,...e){return e?t(n)&&E(e,t):t(n)}}const _=z("Buffer"),H=W(_),V=(t,n)=>{if(t===n)return!0;if(H(t))return t.equals(n);if(t.toString()===n.toString())if(D(t)){const e=M(t);if(k(n,e))return E(e,(e=>V(t[e],n[e])))}else if(y(t)&&t.length===n.length)return E(t,((t,e)=>V(t,n[e])));return!1};const Z=Math.max;function K(t,n,e=[],r,o){return i(r)?s(t,((t,i,c,s)=>{e[i]=n.call(r,t,i,e,c,s,o)})):s(t,((t,r,i,c)=>{e[r]=n(t,r,e,i,c,o)})),e}async function G(t,n){const e=[];return await a(t,(async(t,r,o)=>{e[r]=await n(t,r,o)})),e}function J(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function et(t,n,e){if(i(t))return nt(t,n,e)}function rt(t,n=t.length){if(t.length<=1)return et(t);const e=et(t);let r,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",e){return t.sort(((t,r)=>ft(t,r,n,e)))}function ht(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):o.localeCompare(i)}function gt(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i?o?oi?1:0:-1:1}function pt(t,n="id",e){return t.sort(((t,r)=>gt(t,r,n,e)))}const dt=z("Number"),yt=W(dt);const mt=P(String);function bt(t,n){if(t)return mt(n)?t[n]:K(n,(n=>t[n]))}function At(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),It=wt(/\.js$/),Ot=wt(/\.json$/);const Et=Object.assign;function Ft(t,...n){if(i(t))return Et(t,...n)}const St=async(t,n,e,r)=>{if(!t)return;const o=M(t);return i(e)?await a(o,((i,c,s,u)=>n.call(e,t[i],i,t,u,o,r))):await a(o,((e,i,c,s)=>n(t[e],e,t,s,o,r))),t};function jt(t,n,e,r){if(!t)return;const o=M(t);return i(e)?s(o,((o,i,c,s)=>{n.call(e,t[o],o,t,s,c,r)})):s(o,((e,o,i,c)=>{n(t[e],e,t,c,i,r)})),t}const xt=z("Set"),Mt=W(xt);function Tt(t,n){if(Mt(t)){for(const e of t)n(e,t);return t}for(const[e,r]of t)n(r,e,t);return t}const Rt=z("GeneratorFunction"),Bt=W(Rt);async function Nt(t,n,e){if(Mt(t)){for(const e of t)await n(e,t);return t}if(Bt(t))for await(const r of t(...e))await n(r,t);for(const[e,r]of t)await n(r,e,t);return t}const Lt=t=>!!i(t)&&t instanceof Function,$t=z("AsyncFunction"),kt=W($t);function Dt(t,n,e,r,o,c){return(s,u,a,f,l)=>{let h;const g=kt(u);if(i(s)&&u)return h=y(s)?g?n:t:D(s)||Lt(s)?g?r:e:o?g?c:o:Bt(s)?c:g?r:e,h(s,u,a,f,l)}}const Ut=Dt(s,a,jt,St,Tt,Nt);class Pt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Ut(t,((t,e)=>{n[e]=function(...e){return this.value=t.call(n,n.value,...e),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,zt=!1,Wt=()=>{};function _t(t,n){for(let e=0;e{t(),e.remove(r)}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Vt=w(Ht);function Zt(t,n){return Vt.set(t,n)}const Kt=Reflect.apply;function Gt(t,n,e){if(Lt(t))return Kt(t,n,e)}async function Jt(t,n,e={}){if(t)return await St(t,(async(t,r,o,i,c)=>{e[r]=await n(t,r,e,o,i,c)})),e}function Qt(t,n,e={},r,o){if(t)return i(r)?jt(t,((t,i,c,s,u)=>{e[i]=n.call(r,t,i,e,c,s,u,o)})):jt(t,((t,r,i,c,s)=>{e[r]=n(t,r,e,i,c,s,o)})),e}function Xt(t){return t?.constructor}function Yt(t,n=[]){const e=Xt(t);return e===Function&&"function"===e.name?function(){}:w(e,n)}function tn(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){o(n(e,r,t))}return r}const o=Lt(r.set);for(const[e,i]of t){const c=n(i,e,r,t);o?r.set(e,c):r[e]=c}return r}async function nn(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))e.push(await n(o,e,t));return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){r(await n(e,o,t))}return o}const i=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i?o.set(e,c):o[e]=c}return o}const en=Dt(K,G,Qt,Jt,tn,nn);async function rn(t,n){if(!t)return;return F(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function on(t,n){if(!t)return;return E(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function cn(t,n=c){if(y(t)||Mt(t))for(const e of t){if(!1===n(e,t))return!1}else for(const[e,r]of t){if(!1===n(r,e,t))return!1}return!0}async function sn(t,n=c,e){if(Bt(t))for await(const r of t(...e)){if(!1===await n(r,t))return!1}else if(y(t)||Mt(t))for(const e of t){if(!1===await n(e,t))return!1}else for(const[e,r]of t){if(!1===await n(r,e,t))return!1}return!0}const un=Dt(E,F,on,rn,cn,sn);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,gn=Object.defineProperty,pn=fn(Object.hasOwnProperty),dn=Object.is;const{random:yn}=Math;const{sign:mn}=Math;const bn=Object.entries;async function An(t,n=c,e={}){return await St(t,(async(t,r,o,c,s)=>{const u=await n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function wn(t,n=c,e={}){return jt(t,((t,r,o,c,s)=>{const u=n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function vn(t,n,e={}){return jt(t,((t,r,o,i,c)=>{!0===n(t,r,e,o,i,c)&&(e[r]=t)})),e}async function Cn(t,n,e={}){return await St(t,(async(t,r,o,i,c)=>{!0===await n(t,r,e,o,i,c)&&(e[r]=t)})),e}const In=z("RegExp"),On=W(In),En=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(En,"\\$&")}function Sn(t,n){return n?Sn(K(t,Fn)):RegExp(t.join("|"))}function jn(t){if(t)return M(t).length}const xn=(t,n)=>{const e={};return s(t,((t,r)=>{e[t]=n[r]})),e},Mn=/[ _-]+/g;const Tn=/[ _-]+/g,Rn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Ln=/[ _-]+/g;const $n=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Dn=/%(?![\da-f]{2})/gi,Un=/&/g,Pn=//g,zn=/"/g;function Wn(t){return decodeURIComponent(t.replace(Dn,(()=>"%25")))}function _n(t){return t.replace(Un,"&").replace(Pn,"<").replace(qn,">").replace(zn,""")}const Hn=/\S+/g,Vn=/\w+/g;const Zn=/\w+/g;function Kn(t){return t[0].toUpperCase()}function Gn(t){return Kn(t)+kn(t)}function Jn(t){return Kn(t)+kn(t).toLowerCase()}function Qn(t){return Xt(t)?.name}function Xn(t){return!i(t)}const Yn=z("Map"),te=W(Yn),ne=/Array/,ee="Array";function re(t){if(t){const n=Qn(t);if(ne.test(n)&&n!==ee)return!0}return!1}const oe=z("BigInt"),ie=W(oe),ce=z("Boolean"),se=W(ce),ue=z("ArrayBuffer"),ae=W(ue);const fe=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const le=z("Date"),he=W(le);function ge(t){return!1===t}const pe=z("Float32Array"),de=W(pe),ye=z("Float64Array"),me=W(ye),{isInteger:be}=Number,Ae=be,we=z("Int16Array"),ve=W(we),Ce=z("Int32Array"),Ie=W(Ce),Oe=z("Int8Array"),Ee=W(Oe);function Fe(t){return!!t&&t instanceof Promise}function Se(t){return!!t&&(Fe(t)||kt(t)||Bt(t))}const{isSafeInteger:je}=Number,xe=je;const Me=z("Uint16Array"),Te=W(Me),Re=z("Uint32Array"),Be=W(Re),Ne=z("Uint8Array"),Le=W(Ne),$e=z("Uint8ClampedArray"),ke=W($e),De=z("WeakMap"),Ue=W(De),Pe=void 0!==globalThis.Deno,qe=void 0!==globalThis.process&&process.versions&&process.versions.node;function ze(t,n=!0){return Boolean(t)&&n}function We(t,n){return ge(V(t,n))}const _e=JSON;const He=_e.stringify;function Ve(t,n,e){const r=globalThis.options||e;let o;return Lt(r)?o=`${r.name} : ${r.constructor.name}`:r&&(o=`${r.title||r.method.name} -> ${r.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${He(t)}\n\t\tExpected: ${He(n)}`,r)}async function Ze(t,n,e){const r=await t;return!(Lt(n)&&!1===await n(r,e))&&!We(r,n)||Ve(r,n,e)}const Ke=globalThis.structuredClone;async function Ge(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r)){const r=await n(o,e,t);i(r)&&e.push(r)}return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){const c=await n(e,o,t);i(c)&&r(c)}return o}const s=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i(c)&&(s?o.set(e,c):o[e]=c)}return o}function Je(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){const c=n(e,r,t);i(c)&&o(c)}return r}const o=Lt(r.set);for(const[e,c]of t){const s=n(c,e,r,t);i(s)&&(o?r.set(e,s):r[e]=s)}return r}const Qe=Dt(u,f,wn,An,Je,Ge);function Xe(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){!0===n(e,r,t)&&o(e)}}else{const e=Lt(r.set);for(const[o,i]of t){!0===n(i,o,r,t)&&(e?r.set(o,i):r[o]=i)}}return r}async function Ye(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))!0===await n(o,e,t)&&e.push(o);return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){!0===await n(e,o,t)&&r(e)}}else{const e=Lt(o.set);for await(const[r,i]of t){!0===await n(i,r,o,t)&&(e?o.set(r,i):o[r]=i)}}return o}const tr=Dt(S,j,vn,Cn,Xe,Ye);function nr(t){return(...n)=>e=>{let r=e;return t(n,(t=>{r=t(r)})),r}}const er=nr(s),rr=nr(I);function or(t){return(...n)=>async e=>{let r=e;return await t(n,(async t=>{r=await t(r)})),r}}const ir=or(a),cr=or(O);const sr=wt(/\./);class ur{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const e=setInterval((()=>{t()}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const ar=w(ur);class fr{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,fr.models.set(t,n)):Ft(this,t)}}function lr(t){return new Promise(t)}class hr{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;jt(t,(n=>{t[n]=new hr(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,e)=>(console.log(t,n,t[n]),t[n]=new hr(e),!0)})}}class gr{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,e=this.totalActive===this.totalFree;n&&e&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const pr=w(gr);class dr{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function yr(t){return new dr(t)}function mr(t){return t?mr[t]:M(mr)}const br=globalThis.navigator?.userAgentData;if(br)jt(br,((t,n)=>{se(t)&&t&&(mr[n]=t)})),s(br.brands,(t=>{mr[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{mr[t]=!0}))}function Ar(t,n,e,r){return t.addEventListener(n,e,r),t}const wr=document.createDocumentFragment.bind(document);function vr(t,n){return t.appendChild(n),n}function Cr(t,n){return y(n)?xn(n,K(n,(n=>t.getAttribute(n)))):(jt(n,((n,e)=>{t.setAttribute(e,n)})),t)}const Ir=/^.[\w_-]+$/,Or=/^[A-Za-z]+$/,Er=/\s/,Fr=document.getElementsByClassName.bind(document),Sr=document.getElementsByTagName.bind(document),jr=document.getElementById.bind(document),xr=document.querySelector.bind(document),Mr=document.querySelectorAll.bind(document);const Tr=document.createElement.bind(document);function Rr(t){const n=sr(t)&&t||`${t}.js`;return(t=>lr((n=>{Ar(t,"load",n,!0),Ar(t,"error",n,!0),vr(xr("head"),t)})))(Cr(Tr("script"),{async:"",src:n}))}function Br(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&Ar(document,"DOMContentLoaded",t),!1)}Br((()=>{const t=jr("AcidLib");Rr(t&&t.getAttribute("data-index")||"/index")}));const Nr=location.protocol,Lr="http:"===Nr?"ws":"wss",$r=location.hostname,kr={hardware:{cores:navigator.hardwareConcurrency},host:{name:$r,protocol:Nr,protocolSocket:Lr}};function Dr(){Ft(kr,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function Ur(){Dr()}Br(Ur),Ar(window,"load",Ur,!0),Ar(window,"resize",Ur,!0),t.hasLocal=void 0,function(n){try{n().removeItem("TESTING"),t.hasLocal=!0}catch(n){t.hasLocal=!1}}((()=>localStorage));class Pr{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=yr(t)}hasLocal=t.hasLocal;setItem(t,n){return this.hasLocal&&this.local.setItem(t,mt(n)?n:He(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return i(n)?n:!i(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}const qr=(t,n)=>`color:${t};background:${n};`,zr={alert:qr("#fff","#f44336"),important:qr("#fff","#E91E63"),notify:qr("#fff","#651FFF"),warning:qr("#000","#FFEA00")};t.Chain=Pt,t.Crate=Pr,t.Intervals=ur,t.Model=fr,t.Store=hr,t.Timers=Ht,t.UniqID=gr,t.VirtualStorage=dr,t.add=function(t,n){return t+n},t.after=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r<=0&&(e=n(...t),r=null),e)},t.append=vr,t.apply=Gt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const e={};return s(t,((t,r)=>{e[n[r]]=t})),e},t.ary=function(t,n){return(...e)=>t(...e.splice(0,n))},t.assert=function(t,n,e){return Se(t)||Se(n)?Ze(t,n,e):!(Lt(n)&&!1===n(t,e))&&!We(t,n)||Ve(t,n,e)},t.assertAsync=Ze,t.assign=Ft,t.before=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r>=1?e=n(...t):r=null,e)},t.bindAll=function(t,n,e){const r=en(t,(t=>Lt(t)?t.bind(n):t));return e?Ft(e,r):r},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Mn," ").trim().split(" ").forEach(((t,e)=>{n+=0===e?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Pt,[t])},t.chunk=function(t,n=1){const e=[];let r=0;return t.forEach(((t,o)=>{o%n||(e.push([]),o&&r++),e[r].push(t)})),e},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(H(t))return ut(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=ut,t.clearIntervals=function(){_t(setTimeout(Wt,0),(t=>{ar.remove(t)}))},t.clearTimers=function(){_t(setTimeout(Wt,0),(t=>{Vt.remove(t)}))},t.clone=function(t){return Ke(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.cnsl=(t,n)=>{const e=mt(t)?t:He(t);if("alert"===n||"warning"===n)return console.trace(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},t.cnslTheme=(t,n,e)=>{zr[t]=qr(n,e)},t.compact=function(t){if(D(t)){const n=M(t),e=n.length,r={};for(let o=0;oze(t)))},t.compactKeys=function(t){const n=[];return jt(t,((t,e)=>{i(t)&&n.push(e)})),n},t.compactMap=Qe,t.compactMapArray=u,t.compactMapAsyncArray=f,t.compactMapAsyncObject=An,t.compactMapObject=wn,t.concurrent=function(t,n,e){const r=t.length,o=[];for(let i=0;i{r=n(t),e[r]||(e[r]=0),e[r]++})),e},t.countKey=function(t,n){let e=0;return s(t,(t=>{t[n]&&e++})),e},t.countWithoutKey=function(t,n){let e=0;return s(t,(t=>{t[n]||e++})),e},t.crate=function(t){return new Pr(t)},t.createFragment=wr,t.curry=function(t,e=t.length){const r=[],o=(...i)=>{if(r.push(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.curryRight=function(t,e=t.length){const r=[],o=(...i)=>{if(r.unshift(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.debounce=function(t,n){function e(...t){e.id!==zt&&Vt.remove(e.id),e.id=Zt((()=>{e.callable(...t),e.id=zt}),n)}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{e.id!==zt&&(Vt.remove(e.id),e.id=zt)},e},t.deduct=function(t){return t-1},t.defProp=gn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,e=t.length)=>C(t,0,e-n),t.each=Ut,t.eachArray=s,t.eachAsyncArray=a,t.eachAsyncObject=St,t.eachObject=jt,t.eachRight=I,t.eachRightAsync=O,t.ensureArray=m,t.ensureBuffer=function(t){return H(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=En,t.eventAdd=Ar,t.eventRemove=function(t,n,e,r){return t.removeEventListener(n,e,r),t},t.every=un,t.everyArg=function(...t){return kt(t[0])?async function(...n){return un(t,(async t=>un(n,(async n=>t(n)))))}:function(...n){return un(t,(t=>un(n,(n=>t(n)))))}},t.everyArray=E,t.everyAsyncArray=F,t.everyAsyncObject=rn,t.everyObject=on,t.falsy=zt,t.filter=tr,t.filterArray=S,t.filterAsyncArray=j,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,e="id"){const r=t.findIndex(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.findIndexCache=at,t.findItem=function(t,n,e="id"){const r=t.find(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let e=t;for(let t=0;tt.concat(m(n))),[]);return e},t.flattenDeep=b,t.flow=er,t.flowAsync=ir,t.flowAsyncRight=cr,t.flowRight=rr,t.forEach=d,t.forEachAsync=async function(t,n){const e=[],r=[];let o=0;t.forEach(((t,n)=>{e[o]=t,r[o]=t,o++}));for(let t=0;t{const r=n(t,e);o(r)}))}else Lt(e.set)?t.forEach(((t,r)=>{const o=n(t,r,e);e.set(r,o)})):t.forEach(((t,r)=>{const o=n(t,r,e);e[r]=o}));return e},t.forOf=Tt,t.forOfAsync=Nt,t.forOfCompactMap=Je,t.forOfCompactMapAsync=Ge,t.forOfEvery=cn,t.forOfEveryAsync=sn,t.forOfFilter=Xe,t.forOfFilterAsync=Ye,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=Dt,t.get=L,t.getByClass=Fr,t.getById=jr,t.getByTag=Sr,t.getEntries=function(t){if(i(t))return bn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return pt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let e=0;return E(t,((t,r)=>(e=r,n>=t&&(e=r+1,!0)))),e},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Qn,t.groupBy=function(t,n){const e={};return s(t,(t=>{const r=n(t);e[r]||(e[r]=[]),e[r].push(t)})),e},t.has=function t(n,e,r){if(Xn(n)||Xn(e))return!1;if(mt(n))return mt(e)?n.includes(e,r):On(e)?e.test(n):Lt(e)?Boolean(e(n)):un(e,(e=>Boolean(t(n,e))));if(y(n)){if(mt(e))return n.includes(e,r);if(On(e))return un(n,(t=>t.test(e)));if(y(e))return un(e,(e=>Boolean(t(n,e))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}})))},t.hasDot=sr,t.hasKeys=k,t.hasLength=r,t.hasProp=pn,t.hasValue=i,t.htmlEntities=_n,t.ifInvoke=function(t,...n){if(Lt(t))return t(...n)},t.ifNotAssign=(t,n,e)=>(n&&!i(t[n])&&(t[n]=e),t),t.ifValue=function(t,n,e,r){if(i(t)){if(Lt(n))return e?Gt(n,e,r):n(...r);if(D(n))return n[e]=t,n}},t.importjs=Rr,t.inAsync=async function(t,n){const e=t.length;for(let r=0;rUt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const e={};return s(t,(t=>{e[t[n]]=t})),e},t.info=kr,t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,e){return t.slice(0,n)+e+t.slice(n,t.length)},t.intersection=function(t,...n){return u(t,(t=>{if(E(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return ar.set(t,n)},t.intervals=ar,t.invert=function(t,n={}){if(t)return jt(t,((t,e)=>{n[t]=e})),n},t.invokeArray=function(t,n,e){if(!t)return;const r=t.length;if(i(e))for(let o=0;ot[n].call(r,e):(t,r)=>t[n](e))},t.invokeCollectionAsync=function(t,n,e,r){return G(t,r?t=>t[n].call(r,e):async t=>t[n](e))},t.isAgent=mr,t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=y,t.isArrayBuffer=ae,t.isArrayBufferCall=ue,t.isArrayLike=function(t,n){if(Xn(t)||Lt(t))return!1;if(y(t)||re(t))return!0;const e=t.length;if(!Xn(e)||!yt(e)||e<0)return!1;if(n){const n=M(t);return!!n&&un(n,((t,n)=>n>=0&&yt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=$t,t.isBigInt=ie,t.isBigIntCall=oe,t.isBoolean=se,t.isBooleanCall=ce,t.isBuffer=H,t.isBufferCall=_,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return fe.test(n)}return!1},t.isConstructor=U,t.isConstructorFactory=P,t.isConstructorNameFactory=z,t.isDate=he,t.isDateCall=le,t.isDeno=Pe,t.isDocumentReady=Br,t.isDom=function(t){return t&&9!==t.nodeType},t.isEmpty=function(t){return mt(t)||y(t)?!r(t):D(t)?!jn(t):!i(t)},t.isEnter=function(t){return 13===t.keyCode},t.isEqual=V,t.isF32=de,t.isF32Call=pe,t.isF64=me,t.isF64Call=ye,t.isFalse=ge,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=It,t.isFileJSON=Ot,t.isFloat=Ae,t.isFunction=Lt,t.isGenerator=Bt,t.isGeneratorCall=Rt,t.isHTMLCollection=function(t){return!!i(t)&&"[object HTMLCollection]"===t.toString()},t.isI16=ve,t.isI16Call=we,t.isI32=Ie,t.isI32Call=Ce,t.isI8=Ee,t.isI8Call=Oe,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Se,t.isMap=te,t.isMapCall=Yn,t.isMatchArray=function(t,n){return t.length===n.length&&E(t,((t,e)=>V(n[e],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const e=M(t),r=M(n);return e.length===r.length&&E(e,(e=>t[e]===n[e]))},t.isNegative=h,t.isNodeList=function(t){return!!i(t)&&"[object NodeList]"===t.toString()},t.isNodejs=qe,t.isNotArray=function(t){return!y(t)},t.isNotNumber=function(t){return!yt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=yt,t.isNumberCall=dt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,e){return t>n&&te},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=D,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Fe,t.isRegex=On,t.isRegexCall=In,t.isRelated=function(t,n){return!Xn(t)&&!Xn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xe,t.isSame=dn,t.isSameType=function(t,n){const e=Xt(t),r=Xt(n);return e===r&&e.name===r.name},t.isSet=Mt,t.isSetCall=xt,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=ze,t.isTypeFactory=W,t.isTypedArray=re,t.isU16=Te,t.isU16Call=Me,t.isU32=Be,t.isU32Call=Re,t.isU8=Le,t.isU8C=ke,t.isU8CCall=$e,t.isU8Call=Ne,t.isUndefined=e,t.isWeakMap=Ue,t.isWeakMapCall=De,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return _e.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Tn," ").trim().toLowerCase().replace(Rn,"-")},t.keys=M,t.largest=function(t){return Z(...t)},t.last=function(t,n){const e=t.length;return n?t.slice(e-n,e):t[e-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=en,t.mapArray=K,t.mapAsyncArray=G,t.mapAsyncObject=Jt,t.mapObject=Qt,t.mapRightArray=function(t,n,e=[],r){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)e[o]=n(t[c],c,t,i,r),o++;return e},t.mapWhile=function(t,n,e=[],r){const o=t.length;for(let i=0;i{Ut(e,((e,r)=>{if(n[r]&&(D(e)||y(e)||e.forEach))return t(n[r],e);n[r]=e}))})),n},t.model=function(t,n){return i(n)?w(fr,[t,n]):L(t,fr.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Xn,t.nodeAttribute=Cr,t.noop=Wt,t.notEqual=We,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Et,t.objectEntries=bn,t.objectSize=jn,t.omit=function(t,n){if(t){if(y(n)){const e=Sn(n);return vn(t,((t,n)=>!e.test(n)))}if(On(n))return vn(t,((t,e)=>!n.test(e)));if(mt(n))return vn(t,((t,e)=>e!==n));if(yt(n)){const e=n.toString();return vn(t,((t,n)=>n!==e))}return Lt(n)?vn(t,((t,e)=>!n(t,e))):void 0}},t.once=t=>{let n;return(...e)=>(i(n)||(n=t(...e)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>en(t,(t=>t(...n)))},t.overEvery=function(t){return n=>un(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const e=[];return[u(t,((t,r)=>{if(n(t,r))return t;e.push(t)})),e]},t.pick=(t,n,e={})=>{if(t)return s(n,(n=>{e[n]=t[n]})),e},t.pluck=function(t,n){return K(t,(t=>bt(t,n)))},t.pluckObject=bt,t.promise=lr,t.propertyMatch=(t,n,e=M(t))=>E(e,(e=>V(t[e],n[e]))),t.querySelector=xr,t.querySelectorAll=Mr,t.randomFloat=function(t,n=0){return yn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,e=1,r=[]){return h(e)?r:tt(...n.map((t=>e[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let e=t.length;for(let r=0;re)return rt(t);if(1===n)return[t[tt(e-1,0)]];const r=[],o={};let i,c=0;for(;cht(t,r,n,e)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",e){return t.sort(((t,r)=>At(t,r,n,e)))},t.sortCollectionAscending=pt,t.sortCollectionAscendingFilter=gt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(J)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=At,t.sortUnique=ct,t.stringify=He,t.stubArray=()=>[],t.stubFalse=()=>zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=J,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const e=t.length;return t.slice(e-n,e)},t.themes=zr,t.throttle=function(t,n){function e(...t){e.id?e.shouldThrottle=qt:(e.callable(...t),e.id=Zt((()=>{e.shouldThrottle&&e.callable(...t),e.id=zt}),n))}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{Vt.remove(e.id),e.id=zt},e},t.timer=Zt,t.timers=Vt,t.times=_t,t.timesAsync=async function(t,n){for(let e=0;en?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=e-n;for(;c=0&&(i=r[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,e):t},t.truncateRight=function(t,n){const e=t.length;return e>n?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=n;for(;c0&&(i=r[c]," "!==i);c++);return t.substring(c,e).trim()})(t,n,e):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.unZipObject=t=>{const n=[],e=[];return jt(t,((t,r)=>{n.push(r),e.push(t)})),[n,e]},t.union=function(...t){return st(b(t))},t.uniqID=pr,t.unique=st,t.untilFalseArray=function(t,n){const e=t.length;for(let r=0;rGn(t)))},t.upperFirstLetter=Kn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(Zn,(t=>Jn(t)))},t.virtualStorage=yr,t.whileCompactMap=function(t,n,e=[],r){let o=0;for(;o!e.has(t)))},t.words=function(t){return t.match(Vn)||[]},t.wrap=function(t,n){return(...e)=>n(t,...e)},t.xor=function(...t){const n=w(Map),e=[];return 2===t.length?v(t[0],t[1]):(s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&e.push(t.child)})),e)},t.zip=function(...t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.zipObject=xn})); //# sourceMappingURL=browser.js.map diff --git a/build/browser.js.map b/build/browser.js.map index 3fee0720..7e977255 100644 --- a/build/browser.js.map +++ b/build/browser.js.map @@ -1 +1 @@ -{"version":3,"file":"browser.js","sources":["../source/arrays/clear.js","../source/types/isUndefined.js","../source/utilities/hasLength.js","../source/types/isNull.js","../source/types/hasValue.js","../source/utilities/returnValue.js","../source/arrays/each.js","../source/arrays/compactMap.js","../source/arrays/eachAsync.js","../source/arrays/compactMapAsync.js","../source/numbers/isNegative.js","../source/arrays/range.js","../source/utilities/forEach.js","../source/types/isArray.js","../source/arrays/ensure.js","../source/arrays/flattenDeep.js","../source/classes/construct.js","../source/arrays/difference.js","../source/arrays/drop.js","../source/arrays/eachRight.js","../source/arrays/eachRightAsync.js","../source/arrays/every.js","../source/arrays/everyAsync.js","../source/arrays/filter.js","../source/arrays/filterAsync.js","../source/objects/keys.js","../source/utilities/toPath.js","../source/utilities/get.js","../source/objects/hasKeys.js","../source/types/isPlainObject.js","../source/types/isConstructor.js","../source/types/isTypeFactory.js","../source/types/isBuffer.js","../source/utilities/isEqual.js","../source/arrays/largest.js","../source/arrays/map.js","../source/arrays/mapAsync.js","../source/math/subtract.js","../source/math/subtractReverse.js","../source/math/randomInt.js","../source/internal/array.js","../source/arrays/shuffle.js","../source/arrays/smallest.js","../source/arrays/unique.js","../source/buffers/clear.js","../source/collection/findIndexCache.js","../source/collection/sortCollectionDescending.js","../source/collection/sortCollectionAlphabetically.js","../source/collection/sortCollectionAscending.js","../source/types/isNumber.js","../source/types/isString.js","../source/objects/pluckObject.js","../source/collection/sortCollectionAlphabeticallyReverse.js","../source/internal/regexTestFactory.js","../source/files/isFileCSS.js","../source/files/isFileHTML.js","../source/files/isFileJS.js","../source/files/isFileJSON.js","../source/objects/assign.js","../source/objects/eachAsync.js","../source/objects/each.js","../source/types/isSet.js","../source/utilities/forOf.js","../source/types/isGenerator.js","../source/utilities/forOfAsync.js","../source/types/isFunction.js","../source/types/isAsync.js","../source/utilities/generateLoop.js","../source/utilities/each.js","../source/functions/chain.js","../source/utilities/stubTrue.js","../source/utilities/stubFalse.js","../source/utilities/noop.js","../source/utilities/times.js","../source/utilities/timer.js","../source/internal/apply.js","../source/objects/mapAsync.js","../source/objects/map.js","../source/types/getType.js","../source/types/cloneType.js","../source/utilities/forOfMap.js","../source/utilities/forOfMapAsync.js","../source/utilities/map.js","../source/objects/everyAsync.js","../source/objects/every.js","../source/utilities/forOfEvery.js","../source/utilities/forOfEveryAsync.js","../source/utilities/every.js","../source/utilities/cacheNativeMethod.js","../source/internal/object.js","../source/internal/isSame.js","../source/math/randomFloat.js","../source/numbers/isPositive.js","../source/objects/getEntries.js","../source/objects/compactMapAsync.js","../source/objects/compactMap.js","../source/objects/filter.js","../source/objects/filterAsync.js","../source/objects/isMatch.js","../source/types/isRegex.js","../source/regexps/escapeRegex.js","../source/regexps/arrayToRegex.js","../source/objects/size.js","../source/objects/zip.js","../source/strings/camelCase.js","../source/strings/kebabCase.js","../source/strings/snakeCase.js","../source/strings/upperCase.js","../source/strings/lowerCase.js","../source/strings/range.js","../source/strings/sanitize.js","../source/strings/tokenize.js","../source/strings/typography.js","../source/types/getTypeName.js","../source/types/noValue.js","../source/types/isMap.js","../source/types/isTypedArray.js","../source/types/isBigInt.js","../source/types/isBoolean.js","../source/types/isArrayBuffer.js","../source/types/isCloneable.js","../source/types/isDate.js","../source/types/isFalse.js","../source/types/isF32.js","../source/types/isF64.js","../source/types/isFloat.js","../source/types/isI16.js","../source/types/isI32.js","../source/types/isI8.js","../source/types/isPromise.js","../source/types/isKindAsync.js","../source/types/isSafeInt.js","../source/types/isU16.js","../source/types/isU32.js","../source/types/isU8.js","../source/types/isU8C.js","../source/types/isWeakMap.js","../source/types/isDeno.js","../source/types/isNode.js","../source/types/isTruthy.js","../source/utilities/notEqual.js","../source/utilities/json.js","../source/utilities/assert.js","../source/utilities/clone.js","../source/utilities/forOfCompactMapAsync.js","../source/utilities/forOfCompactMap.js","../source/utilities/compactMap.js","../source/utilities/forOfFilter.js","../source/utilities/forOfFilterAsync.js","../source/utilities/filter.js","../source/utilities/flow.js","../source/utilities/flowAsync.js","../source/utilities/hasDot.js","../source/utilities/interval.js","../source/utilities/model.js","../source/utilities/promise.js","../source/utilities/store.js","../source/utilities/uid.js","../source/utilities/virtualStorage.js","../source/browser/agent.js","../source/browser/event.js","../source/browser/frag.js","../source/browser/append.js","../source/browser/attribute.js","../source/browser/selector.js","../source/browser/importScript.js","../source/browser/ready.js","../source/browser/info.js","../source/browser/dimensions.js","../source/browser/storage.js","../source/browser/console.js","../source/math/add.js","../source/functions/after.js","../source/utilities/arraysToObject.js","../source/functions/ary.js","../source/functions/before.js","../source/utilities/bindAll.js","../source/math/progress.js","../source/arrays/chunk.js","../source/utilities/clear.js","../source/arrays/clone.js","../source/utilities/compact.js","../source/objects/compactKeys.js","../source/utilities/concurrent.js","../source/utilities/concurrentStatus.js","../source/collection/countBy.js","../source/collection/countKey.js","../source/collection/countWithoutKey.js","../source/functions/curry.js","../source/functions/curryRight.js","../source/functions/debounce.js","../source/math/deduct.js","../source/math/divide.js","../source/arrays/dropRight.js","../source/buffers/ensure.js","../source/utilities/everyArg.js","../source/collection/findIndex.js","../source/collection/findItem.js","../source/arrays/first.js","../source/arrays/flatten.js","../source/utilities/forEachAsync.js","../source/utilities/forMap.js","../source/files/getExtension.js","../source/files/getFilename.js","../source/collection/getHighest.js","../source/collection/getLowest.js","../source/arrays/getNumberInsertIndex.js","../source/collection/groupBy.js","../source/utilities/has.js","../source/functions/ifInvoke.js","../source/utilities/ifNotAssign.js","../source/utilities/ifValue.js","../source/functions/inAsync.js","../source/functions/inSync.js","../source/math/increment.js","../source/collection/indexBy.js","../source/arrays/initial.js","../source/arrays/intersect.js","../source/objects/invert.js","../source/collection/invoke.js","../source/collection/invokeAsync.js","../source/types/isArguments.js","../source/types/isArrayLike.js","../source/types/isChild.js","../source/browser/is.js","../source/types/isEmpty.js","../source/browser/isEnter.js","../source/types/isFalsy.js","../source/types/isIterable.js","../source/arrays/isMatch.js","../source/numbers/isNumberEqual.js","../source/numbers/isNumberInRange.js","../source/numbers/isNumberNotInRange.js","../source/types/isParent.js","../source/types/isPrimitive.js","../source/types/isRelated.js","../source/types/isSameType.js","../source/types/isTrue.js","../source/numbers/isZero.js","../source/arrays/last.js","../source/arrays/mapRight.js","../source/arrays/mapWhile.js","../source/utilities/merge.js","../source/math/multiple.js","../source/functions/negate.js","../source/functions/nthArg.js","../source/objects/omit.js","../source/functions/once.js","../source/functions/over.js","../source/functions/overEvery.js","../source/utilities/pair.js","../source/arrays/partition.js","../source/objects/pick.js","../source/collection/pluck.js","../source/utilities/propertyMatch.js","../source/functions/rearged.js","../source/math/remainder.js","../source/arrays/remove.js","../source/strings/replace.js","../source/arrays/rest.js","../source/arrays/right.js","../source/arrays/sample.js","../source/utilities/setKey.js","../source/utilities/setValue.js","../source/arrays/sortNumberAscending.js","../source/arrays/sortNumberDescening.js","../source/utilities/stubArray.js","../source/utilities/stubObject.js","../source/utilities/stubString.js","../source/math/subtractAll.js","../source/math/sumAll.js","../source/arrays/take.js","../source/arrays/takeRight.js","../source/functions/throttle.js","../source/utilities/timesAsync.js","../source/utilities/toggle.js","../source/strings/truncate.js","../source/arrays/zip.js","../source/arrays/union.js","../source/arrays/untilFalse.js","../source/arrays/untilTrue.js","../source/arrays/whileCompactMap.js","../source/arrays/whileEach.js","../source/arrays/whileMap.js","../source/arrays/without.js","../source/functions/wrap.js","../source/arrays/xor.js"],"sourcesContent":["/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from '../objects/each.js';\nimport { isBoolean } from '../types/isBoolean.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Checks to see of the browser agent has a string.\n *\n * @function isAgent\n * @category browser\n * @type {Function}\n * @param {String} source - The string to search for.\n * @returns {Boolean} - Returns true or false.\n * @example\n * isAgent('mobile');\n * // => false\n */\nexport function isAgent(source) {\n\treturn (source) ? isAgent[source] : keys(isAgent);\n}\nconst userAgent = globalThis.navigator?.userAgentData;\nif (userAgent) {\n\teachObject(userAgent, (value, key) => {\n\t\tif (isBoolean(value) && value) {\n\t\t\tisAgent[key] = value;\n\t\t}\n\t});\n\teachArray(userAgent.brands, (value) => {\n\t\tisAgent[value.brand] = value.version;\n\t});\n} else if (navigator.userAgent) {\n\tlet userAgentNormalized = navigator.userAgent.toLowerCase();\n\tuserAgentNormalized = userAgentNormalized.replace(/_/g, '.');\n\tuserAgentNormalized = userAgentNormalized.replace(/[#_,;()]/g, '');\n\tconst userAgentSplit = userAgentNormalized.split(/ |\\//);\n\teachArray(userAgentSplit, (item) => {\n\t\tisAgent[item] = true;\n\t});\n}\n\n","/**\n * Attaches an event listener to a node.\n *\n * @function eventAdd\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventAdd(document.body, 'click', () => {console.log('CLICKED');});\n * // = > document.body\n */\nexport function eventAdd(node, eventName, callback, useCapture) {\n\tnode.addEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n/**\n * Attaches an event listener to a node.\n *\n * @function eventRemove\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventRemove(document.body, () => {console.log('CLICKED');});\n * // = > Undefined\n */\nexport function eventRemove(node, eventName, callback, useCapture) {\n\tnode.removeEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n\n","/**\n * Create a document fragment.\n *\n * @function createFragment\n * @category browser\n * @type {Function}\n * @ignore\n * @returns {Fragment} - Returns a new document fragment.\n*/\nexport const createFragment = document.createDocumentFragment.bind(document);\n","/**\n * Append a DOM node.\n *\n * @function append\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @ignore\n * @param {Node} parentNode - The parent node.\n * @param {Node} child - The node to be appended.\n * @returns {undefined} - Returns the child.\n */\nexport function append(parentNode, child) {\n\tparentNode.appendChild(child);\n\treturn child;\n}\n","import { eachObject } from '../objects/each.js';\nimport { isArray } from '../types/isArray.js';\nimport { mapArray } from '../arrays/map.js';\nimport { zipObject } from '../objects/zip.js';\n/**\n * Assign attributes to a DOM node.\n *\n * @function nodeAttribute\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @async\n * @param {Node} node - The DOM node.\n * @param {Object|Array} object - Object with key being the attribute name and the value being the attribute value. If an array is given it will get the values corresponding to the array items.\n * @returns {Object|Node} - If using an array this returns an object of attribute names as keys and their values as the property value. If using an object this will return the provided node.\n *\n * @example\n * nodeAttribute(document.body, { 'data-example': 'test'});\n */\nexport function nodeAttribute(node, object) {\n\tif (isArray(object)) {\n\t\treturn zipObject(object, mapArray(object, (item) => {\n\t\t\treturn node.getAttribute(item);\n\t\t}));\n\t}\n\teachObject(object, (item, key) => {\n\t\tnode.setAttribute(key, item);\n\t});\n\treturn node;\n}\n\n","import { restString } from '../strings/range.js';\nconst dotString = '.';\nconst poundString = '#';\nconst classTest = /^.[\\w_-]+$/;\nconst tagTest = /^[A-Za-z]+$/;\nconst regexSpace = /\\s/;\n/**\n * Wrapper around getElementsByClassName.\n *\n * @function getByClass\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByClass = document.getElementsByClassName.bind(document);\n/**\n * Wrapper around getElementsByTagName.\n *\n * @function getByTag\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByTag = document.getElementsByTagName.bind(document);\n/**\n * Wrapper around getElementsByIdName.\n *\n * @function getById\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getById = document.getElementById.bind(document);\n/**\n * Wrapper around querySelector.\n *\n * @function querySelector\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelector = document.querySelector.bind(document);\n/**\n * Wrapper around querySelectorAll.\n *\n * @function querySelectorAll\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelectorAll = document.querySelectorAll.bind(document);\n/**\n * Returns relevant DOM node.\n *\n * @function selector\n * @category browser\n * @ignoreTest\n * @param {String} select - String to be evaluated.\n * @type {Function}\n * @returns {Node} - Returns a DOM node.\n *\n * @example\n * selector('#node');\n * // =>
\n */\nexport function selector(select) {\n\tconst firstLetter = select[0];\n\tswitch (firstLetter) {\n\tcase poundString:\n\t\tif (!regexSpace.test(select)) {\n\t\t\treturn getById(restString(select));\n\t\t}\n\t\tbreak;\n\tcase dotString:\n\t\tif (classTest.test(select)) {\n\t\t\treturn getByClass(restString(select));\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tif (tagTest.test(select)) {\n\t\t\treturn getByTag(select);\n\t\t}\n\t}\n\treturn querySelectorAll(select);\n}\n\n","import { append } from './append.js';\nimport { hasDot } from '../utilities/hasDot.js';\nimport { eventAdd } from './event.js';\nimport { nodeAttribute } from './attribute.js';\nimport { promise } from '../utilities/promise.js';\nimport { querySelector } from './selector.js';\nconst createElementCache = document.createElement.bind(document);\nconst nodeAttachLoadingEvents = (node) => {\n\treturn promise((accept) => {\n\t\teventAdd(node, 'load', accept, true);\n\t\teventAdd(node, 'error', accept, true);\n\t\tappend(querySelector('head'), node);\n\t});\n};\n/**\n * Asynchronously import a js file and append it to the head node.\n * If a script fails to load importjs won't reject the promise rather it'll return the error event to limit further complications & reduce code complexity.\n *\n * @function importjs\n * @category browser\n * @type {Function}\n * @async\n * @param {*} url - URL of the script to import. If not \".\" is found in the file name \".js\" will be appended.\n * @returns {Promise} - Returns a promise which returns a \"load\" or \"error\" event associated with the script.\n *\n * @example\n * importjs('core.js');\n * importjs('core');\n */\nexport function importjs(url) {\n\tconst src = hasDot(url) && url || `${url}.js`;\n\tconst node = nodeAttribute(createElementCache('script'), {\n\t\tasync: '',\n\t\tsrc\n\t});\n\treturn nodeAttachLoadingEvents(node);\n}\n\n","import { eventAdd } from './event.js';\nimport { importjs } from './importScript.js';\nimport { getById } from './selector.js';\n/**\n * Runs a function if the document has finished loading. If not, add an eventlistener.\n *\n * @function isDocumentReady\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Function} callable - Function to be run.\n * @returns {Boolean|Function} - If the document is ready, returns a function. If not, return false.\n *\n * @example\n * isDocumentReady(() => {return 1});\n * // => 1\n */\nexport function isDocumentReady(callable) {\n\tconst state = document.readyState;\n\tconst checkStatus = state === 'interactive' || state === 'completed' || state === 'complete';\n\tif (checkStatus) {\n\t\treturn (callable) ? callable() : true;\n\t}\n\tif (callable) {\n\t\teventAdd(document, 'DOMContentLoaded', callable);\n\t}\n\treturn false;\n}\nisDocumentReady(() => {\n\tconst scriptTag = getById('AcidLib');\n\tconst scriptName = (scriptTag && scriptTag.getAttribute('data-index')) || '/index';\n\timportjs(scriptName);\n});\n","const protocol = location.protocol;\nconst protocolSocket = (protocol === 'http:') ? 'ws' : 'wss';\nconst hostname = location.hostname;\n/**\n * Holds client hardware, browser, and host info.\n *\n * @memberof $\n * @category browser\n * @ignoreTest\n * @property {Object} info - Client hardware & host info.\n * @type {Object}\n */\nexport const info = {\n\thardware: {\n\t\tcores: navigator.hardwareConcurrency\n\t},\n\thost: {\n\t\tname: hostname,\n\t\tprotocol,\n\t\tprotocolSocket,\n\t}\n};\n\n","import { assign } from '../objects/assign.js';\nimport { eventAdd } from './event.js';\nimport { info } from './info.js';\nimport { isDocumentReady } from './ready.js';\nexport function saveDimensions() {\n\tassign(info, {\n\t\tbodyHeight: document.body.offsetHeight,\n\t\tbodyWidth: document.body.offsetWidth,\n\t\twindowHeight: window.innerHeight,\n\t\twindowWidth: window.innerWidth,\n\t});\n}\n/**\n * Save current document & window dimensions to the info property.\n *\n * @function updateDimensions\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * updateDimensions();\n */\nexport function updateDimensions() {\n\tsaveDimensions();\n}\nisDocumentReady(updateDimensions);\neventAdd(window, 'load', updateDimensions, true);\neventAdd(window, 'resize', updateDimensions, true);\n\n","/**\n * LocalStorage Module..\n *\n * @module browser/storage\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nimport { virtualStorage } from '../utilities/virtualStorage.js';\nexport let hasLocal;\nfunction hasStorage(storeCheck) {\n\ttry {\n\t\tstoreCheck().removeItem('TESTING');\n\t\thasLocal = true;\n\t} catch (e) {\n\t\thasLocal = false;\n\t}\n}\nhasStorage(() => {\n\treturn localStorage;\n});\n/**\n * Constructs a virtual storage container with localStorage support.\n * Crate will fallback to strictly virtual storage if localStorage isn't supported.\n * If localStorage is supported virtual storage will be used first & only fallback to localStorage when needed.\n * Crate is ideal as a seemless drop in replacement for localStorage when not supported or allowed.\n *\n * @class Crate\n * @category browser\n * @returns {Crate} - Returns a new instance of Crate.\n *\n * @example\n * import { Crate, construct, assert } from '@universalweb/acid';\n * const storageCrate = construct(Crate);\n * storageCrate.setItem('key', 'value');\n * assert(storageCrate.getItem('key'), 'value');\n */\nexport class Crate {\n\tconstructor(initialObject) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local = localStorage;\n\t\t}\n\t\tthis.storage = virtualStorage(initialObject);\n\t}\n\thasLocal = hasLocal;\n\t/**\n\t * Save an item to a crate.\n\t *\n\t * @function setItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.setItem(key, (isString(value)) ? value : stringify(value));\n\t\t}\n\t\treturn this.storage.setItem(key, value);\n\t}\n\t/**\n\t * Get an item from a crate.\n\t *\n\t * @function getItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tgetItem(key) {\n\t\tconst item = this.storage.getItem(key);\n\t\tif (hasValue(item)) {\n\t\t\treturn item;\n\t\t}\n\t\tif (!hasValue(item) && this.hasLocal) {\n\t\t\treturn this.local.getItem(key);\n\t\t}\n\t}\n\t/**\n\t * Clears all data for the crate including all of localStorage if supported.\n\t *\n\t * @function clear\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.clear();\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tclear() {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.clear();\n\t\t}\n\t\tthis.storage.clear();\n\t}\n\t/**\n\t * Remove an item from a crate.\n\t *\n\t * @class Crate\n\t * @category browser\n\t * @function removeItem\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.removeItem('key');\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tremoveItem(key) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.removeItem(key);\n\t\t}\n\t\tthis.storage.removeItem(key);\n\t}\n}\n/**\n * The crate function is a factory which wraps the Crate class constructor.\n *\n * @function crate\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new Crate Object.\n *\n * @example\n * const storageCrate = crate();\n * // => New Crate Object\n */\nexport function crate(virtualFlag) {\n\treturn new Crate(virtualFlag);\n}\n\n","import { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nconst generateTheme = (color, bg) => {\n\treturn `color:${color};background:${bg};`;\n};\nexport const themes = {\n\talert: generateTheme('#fff', '#f44336'),\n\timportant: generateTheme('#fff', '#E91E63'),\n\tnotify: generateTheme('#fff', '#651FFF'),\n\twarning: generateTheme('#000', '#FFEA00'),\n};\n/**\n * Console.trace wrapper with theme support.\n *\n * @function cnsl\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Object} value - The value to be logged.\n * @param {String} themeName - The name of the theme to be used.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnsl('Lucy', 'notify');\n * // 'Lucy'\n*/\nexport const cnsl = (value, themeName) => {\n\tconst data = isString(value) ? value : stringify(value);\n\tif (themeName === 'alert' || themeName === 'warning') {\n\t\treturn console.trace(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n\t}\n\tconsole.log(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n};\n/**\n * Create color themes for cnsl method.\n *\n * @function cnslTheme\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {String} themeName - The name of the theme.\n * @param {String} color - The text color.\n * @param {String} background - The background color of the block.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnslTheme('BlackNWhite', '#fff', '#000');\n*/\nexport const cnslTheme = (themeName, color, background) => {\n\tthemes[themeName] = generateTheme(color, background);\n};\n\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invoke\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invoke(collection, property, value) {\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * (async () => {\n * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]);\n * });\n *\n * @example\n * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invokeAsync(collection, property, value) {\n\treturn mapAsyncArray(collection, async (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { difference } from '../arrays/difference.js';\n/**\n * Checks if value is a plain DOM Node.\n *\n * @function isDom\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDom, assert } from '@universalweb/acid';\n * assert(isDom(document.querySelectorAll('head')), true);\n */\nexport function isDom(source) {\n\treturn source && source.nodeType !== 9;\n}\n/**\n * Checks if the value is a HTMLCollection.\n *\n * @function isHTMLCollection\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isHTMLCollection, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isHTMLCollection(document.getElementsByClassName('test')), true);\n */\nconst objectHTMLCollection = '[object HTMLCollection]';\nexport function isHTMLCollection(source) {\n\treturn (hasValue(source)) ? source.toString() === objectHTMLCollection : false;\n}\n/**\n * Checks if the value is a NodeList.\n *\n * @function isNodeList\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNodeList, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isNodeList(document.querySelectorAll('.test')), true);\n */\nconst objectNodeList = '[object NodeList]';\nexport function isNodeList(source) {\n\treturn (hasValue(source)) ? source.toString() === objectNodeList : false;\n}\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Checks if the keycode of the event is strictly equal to 13.\n *\n * @function isEnter\n * @category browser\n * @type {Function}\n * @param {Object} eventObject - Object to be checked.\n * @returns {Boolean} - Returns true if the keycode property of the object equals 13.\n *\n * @example\n * isEnter('click');\n * // => false\n */\nexport function isEnter(eventObject) {\n\treturn eventObject.keyCode === 13;\n}\n\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n"],"names":["clearArray","source","length","isUndefined","undefined","hasLength","Boolean","isNull","hasValue","returnValue","eachArray","iteratee","thisCall","additionalArg","arrayLength","index","call","compactMapArray","results","item","arrayOriginal","returned","push","async","eachAsyncArray","compactMapAsyncArray","result","sign","Math","isNegative","rangeUp","start","end","step","sourceArray","position","rangeDown","forEach","callback","isArray","Array","ensureArray","flattenDeep","flat","Infinity","reflectConstruct","Reflect","construct","target","argumentsList","newTarget","args","difference","sources","differencesMap","Map","differences","currentArray","parentIndex","child","childIndex","childRoot","get","count","set","drop","array","amount","upTo","splice","eachRight","thisBind","eachRightAsync","everyArray","sourceLength","everyAsyncArray","filterArray","filterAsyncArray","objectKeys","Object","keys","regexToPath","regexCloseBracket","emptyString","toPath","replace","split","propertyString","link","hasOwn","hasKeys","properties","pathArray","lastPath","pop","initialPathObject","isPlainObject","value","constructor","toString","trim","slice","isConstructor","isConstructorFactory","constructorName","name","isConstructorNameFactory","isTypeFactory","method","primarySource","otherSources","isBufferCall","isBuffer","isEqual","equals","sourceProperties","key","mathNativeMax","max","mapArray","mapAsyncArray","subtract","minuend","subtrahend","subtractReverse","floor","random","randomInt","min","arrayFrom","from","toArray","arrayLike","mapFn","thisArg","shuffle","shuffleArray","mathNativeMin","onlyUnique","indexOf","sortUnique","unique","isSorted","filter","clearBuffer","fill","findIndexCache","element","indexMatch","propertyName","sortCollectionDescendingFilter","previous","next","ifMatch","previousKey","nextKey","sortCollectionDescending","collection","sort","sortObjectsAlphabetically","localeCompare","sortCollectionAscendingFilter","sortCollectionAscending","isNumberCall","isNumber","isString","String","pluckObject","targets","sortObjectsAlphabeticallyReverse","regexTestFactory","regexType","test","isFileCSS","isFileHTML","isFileJS","isFileJSON","objectAssign","assign","eachAsyncObject","propertyCount","eachObject","objectKeysArray","isSetCall","isSet","forOf","isGeneratorCall","isGenerator","forOfAsync","generatorArgs","isFunction","Function","isAsyncCall","isAsync","generateLoop","arrayLoop","arrayLoopAsync","objectLoop","objectLoopAsync","forOfLoop","forOfLoopAsync","argument1","argument2","argument3","isIterateeAsync","each","Chain","methods","this","addChainMethod","thisChain","methodName","setValue","done","truth","falsy","noop","times","Timers","list","remove","id","clearTimeout","delete","has","callable","time","currentThis","setTimeout","clear","timers","timer","applyNative","apply","thisArgument","mapAsyncObject","thisObject","mapObject","original","getType","cloneType","sourceType","forOfMap","resultsObject","methodPush","add","methodPushBound","bind","methodSet","forOfMapAsync","resultsGenerator","map","everyAsyncObject","everyObject","forOfEvery","forOfEveryAsync","every","functionPrototype","prototype","cacheNativeMethod","getPropNames","getOwnPropertyNames","getPropDesc","getOwnPropertyDescriptor","defProp","defineProperty","hasProp","hasOwnProperty","isSame","is","objectEntries","entries","compactMapAsyncObject","compactMapObject","filterObject","filterAsyncObject","isRegexCall","isRegex","escapeRegexRegex","escapeRegex","arrayToRegex","makeSafe","RegExp","join","objectSize","zipObject","values","zipedObject","normalizeCase","space","restString","string","substring","rawURLDecodeRegex","andRegex","lessThanRegex","moreThanRegex","doubleQuoteRegex","rawURLDecode","decodeURIComponent","htmlEntities","tokenizeRegEx","wordsRegEx","getWords","upperFirstLetter","toUpperCase","upperFirst","upperFirstOnly","toLowerCase","getTypeName","noValue","isMapCall","isMap","typedArrayRegex","arrayConstructorName","isTypedArray","isBigIntCall","isBigInt","isBooleanCall","isBoolean","isArrayBufferCall","isArrayBuffer","constructorNames","isDateCall","isDate","isFalse","isF32Call","isF32","isF64Call","isF64","isInteger","Number","isFloat","isI16Call","isI16","isI32Call","isI32","isI8Call","isI8","isPromise","Promise","isKindAsync","isSafeInteger","isSafeInt","isU16Call","isU16","isU32Call","isU32","isU8Call","isU8","isU8CCall","isU8C","isWeakMapCall","isWeakMap","isDeno","globalThis","Deno","isNodejs","process","versions","node","isTruthy","returnIfTrue","notEqual","jsonNative","JSON","stringify","createAssertError","expected","localOptions","options","errorTitle","title","file","Error","assertAsync","sourceArg","structuredCloneSafe","structuredClone","forOfCompactMapAsync","forOfCompactMap","compactMap","forOfFilter","forOfFilterAsync","returnFlow","arg","flow","flowRight","flowAsync","flowAsyncRight","hasDot","Intervals","clearInterval","setInterval","intervals","Model","static","modelName","modelValue","models","promise","Store","property","data","Proxy","proxySource","console","log","UniqID","totalActive","freed","totalFree","shift","free","isActive","shouldReset","reset","uniqID","VirtualStorage","initialObject","items","getItem","setItem","removeItem","virtualStorage","isAgent","userAgent","navigator","userAgentData","brands","brand","version","userAgentNormalized","eventAdd","eventName","useCapture","addEventListener","createFragment","document","createDocumentFragment","append","parentNode","appendChild","nodeAttribute","object","getAttribute","setAttribute","classTest","tagTest","regexSpace","getByClass","getElementsByClassName","getByTag","getElementsByTagName","getById","getElementById","querySelector","querySelectorAll","createElementCache","createElement","importjs","url","src","accept","nodeAttachLoadingEvents","isDocumentReady","state","readyState","scriptTag","protocol","location","protocolSocket","hostname","info","hardware","cores","hardwareConcurrency","host","saveDimensions","bodyHeight","body","offsetHeight","bodyWidth","offsetWidth","windowHeight","window","innerHeight","windowWidth","innerWidth","updateDimensions","exports","hasLocal","storeCheck","e","hasStorage","localStorage","Crate","local","storage","generateTheme","color","bg","themes","alert","important","notify","warning","augend","addend","point","sortedObject","bindThis","targetAssign","total","currentAmount","config","size","chunked","match","themeName","trace","background","sourceKeys","sourceKeysLength","targetObject","i","keyName","compactedKeys","queue","all","allSettled","virtualFlag","arity","curries","curried","curryArgs","unshift","debounced","Buffer","alloc","removeEventListener","findIndex","find","level","reduce","previousValue","currentValue","concat","valuesLength","cloned","methodBound","lastIndexOf","insertIndex","search","includes","rootObject","equalThis","optional","firstArgument","text","arrays","otherItem","strictFlag","indexes","sourceChild","targetParent","nodeType","eventObject","keyCode","Symbol","iterator","compareArray","targetKeys","sourceParent","targetChild","type","targetOne","targetTwo","other","otherType","reviver","parse","indexFrom","trueIndex","merge","currentSource","sourceItem","sourceKey","blacklist","blacklistRegex","numberToString","iteratees","predicates","predicate","rejected","whitelist","compared","removeThese","words","sampleArray","used","select","numberList","a","b","endIndex","indexRight","throttled","shouldThrottle","on","off","maxLength","stringLength","breakAll","breakAllLength","truncateDown","truncateUp","arraySet","unZippedKeys","sourcesSet","Set","wrapper","xorMap","xored"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"browser.js","sources":["../source/arrays/clear.js","../source/types/isUndefined.js","../source/utilities/hasLength.js","../source/types/isNull.js","../source/types/hasValue.js","../source/utilities/returnValue.js","../source/arrays/each.js","../source/arrays/compactMap.js","../source/arrays/eachAsync.js","../source/arrays/compactMapAsync.js","../source/numbers/isNegative.js","../source/arrays/range.js","../source/utilities/forEach.js","../source/types/isArray.js","../source/arrays/ensure.js","../source/arrays/flattenDeep.js","../source/classes/construct.js","../source/arrays/difference.js","../source/arrays/drop.js","../source/arrays/eachRight.js","../source/arrays/eachRightAsync.js","../source/arrays/every.js","../source/arrays/everyAsync.js","../source/arrays/filter.js","../source/arrays/filterAsync.js","../source/objects/keys.js","../source/utilities/toPath.js","../source/utilities/get.js","../source/objects/hasKeys.js","../source/types/isPlainObject.js","../source/types/isConstructor.js","../source/types/isTypeFactory.js","../source/types/isBuffer.js","../source/utilities/isEqual.js","../source/arrays/largest.js","../source/arrays/map.js","../source/arrays/mapAsync.js","../source/math/subtract.js","../source/math/subtractReverse.js","../source/math/randomInt.js","../source/internal/array.js","../source/arrays/shuffle.js","../source/arrays/smallest.js","../source/arrays/unique.js","../source/buffers/clear.js","../source/collection/findIndexCache.js","../source/collection/sortCollectionDescending.js","../source/collection/sortCollectionAlphabetically.js","../source/collection/sortCollectionAscending.js","../source/types/isNumber.js","../source/types/isString.js","../source/objects/pluckObject.js","../source/collection/sortCollectionAlphabeticallyReverse.js","../source/internal/regexTestFactory.js","../source/files/isFileCSS.js","../source/files/isFileHTML.js","../source/files/isFileJS.js","../source/files/isFileJSON.js","../source/objects/assign.js","../source/objects/eachAsync.js","../source/objects/each.js","../source/types/isSet.js","../source/utilities/forOf.js","../source/types/isGenerator.js","../source/utilities/forOfAsync.js","../source/types/isFunction.js","../source/types/isAsync.js","../source/utilities/generateLoop.js","../source/utilities/each.js","../source/functions/chain.js","../source/utilities/stubTrue.js","../source/utilities/stubFalse.js","../source/utilities/noop.js","../source/utilities/times.js","../source/utilities/timer.js","../source/internal/apply.js","../source/objects/mapAsync.js","../source/objects/map.js","../source/types/getType.js","../source/types/cloneType.js","../source/utilities/forOfMap.js","../source/utilities/forOfMapAsync.js","../source/utilities/map.js","../source/objects/everyAsync.js","../source/objects/every.js","../source/utilities/forOfEvery.js","../source/utilities/forOfEveryAsync.js","../source/utilities/every.js","../source/utilities/cacheNativeMethod.js","../source/internal/object.js","../source/internal/isSame.js","../source/math/randomFloat.js","../source/numbers/isPositive.js","../source/objects/getEntries.js","../source/objects/compactMapAsync.js","../source/objects/compactMap.js","../source/objects/filter.js","../source/objects/filterAsync.js","../source/objects/isMatch.js","../source/types/isRegex.js","../source/regexps/escapeRegex.js","../source/regexps/arrayToRegex.js","../source/objects/size.js","../source/objects/zip.js","../source/strings/camelCase.js","../source/strings/kebabCase.js","../source/strings/snakeCase.js","../source/strings/upperCase.js","../source/strings/lowerCase.js","../source/strings/range.js","../source/strings/sanitize.js","../source/strings/tokenize.js","../source/strings/typography.js","../source/types/getTypeName.js","../source/types/noValue.js","../source/types/isMap.js","../source/types/isTypedArray.js","../source/types/isBigInt.js","../source/types/isBoolean.js","../source/types/isArrayBuffer.js","../source/types/isCloneable.js","../source/types/isDate.js","../source/types/isFalse.js","../source/types/isF32.js","../source/types/isF64.js","../source/types/isFloat.js","../source/types/isI16.js","../source/types/isI32.js","../source/types/isI8.js","../source/types/isPromise.js","../source/types/isKindAsync.js","../source/types/isSafeInt.js","../source/types/isU16.js","../source/types/isU32.js","../source/types/isU8.js","../source/types/isU8C.js","../source/types/isWeakMap.js","../source/types/isDeno.js","../source/types/isNode.js","../source/types/isTruthy.js","../source/utilities/notEqual.js","../source/utilities/json.js","../source/utilities/assert.js","../source/utilities/clone.js","../source/utilities/forOfCompactMapAsync.js","../source/utilities/forOfCompactMap.js","../source/utilities/compactMap.js","../source/utilities/forOfFilter.js","../source/utilities/forOfFilterAsync.js","../source/utilities/filter.js","../source/utilities/flow.js","../source/utilities/flowAsync.js","../source/utilities/hasDot.js","../source/utilities/interval.js","../source/utilities/model.js","../source/utilities/promise.js","../source/utilities/store.js","../source/utilities/uid.js","../source/utilities/virtualStorage.js","../source/browser/agent.js","../source/browser/event.js","../source/browser/frag.js","../source/browser/append.js","../source/browser/attribute.js","../source/browser/selector.js","../source/browser/importScript.js","../source/browser/ready.js","../source/browser/info.js","../source/browser/dimensions.js","../source/browser/storage.js","../source/browser/console.js","../source/math/add.js","../source/functions/after.js","../source/utilities/arraysToObject.js","../source/functions/ary.js","../source/functions/before.js","../source/utilities/bindAll.js","../source/math/progress.js","../source/arrays/chunk.js","../source/utilities/clear.js","../source/arrays/clone.js","../source/utilities/compact.js","../source/objects/compactKeys.js","../source/utilities/concurrent.js","../source/utilities/concurrentStatus.js","../source/collection/countBy.js","../source/collection/countKey.js","../source/collection/countWithoutKey.js","../source/functions/curry.js","../source/functions/curryRight.js","../source/functions/debounce.js","../source/math/deduct.js","../source/math/divide.js","../source/arrays/dropRight.js","../source/buffers/ensure.js","../source/utilities/everyArg.js","../source/collection/findIndex.js","../source/collection/findItem.js","../source/arrays/first.js","../source/arrays/flatten.js","../source/utilities/forEachAsync.js","../source/utilities/forMap.js","../source/files/getExtension.js","../source/files/getFilename.js","../source/collection/getHighest.js","../source/collection/getLowest.js","../source/arrays/getNumberInsertIndex.js","../source/collection/groupBy.js","../source/utilities/has.js","../source/functions/ifInvoke.js","../source/utilities/ifNotAssign.js","../source/utilities/ifValue.js","../source/functions/inAsync.js","../source/functions/inSync.js","../source/math/increment.js","../source/collection/indexBy.js","../source/arrays/initial.js","../source/arrays/intersect.js","../source/objects/invert.js","../source/arrays/invoke.js","../source/collection/invoke.js","../source/collection/invokeAsync.js","../source/types/isArguments.js","../source/types/isArrayLike.js","../source/types/isChild.js","../source/browser/is.js","../source/types/isEmpty.js","../source/browser/isEnter.js","../source/types/isFalsy.js","../source/types/isIterable.js","../source/arrays/isMatch.js","../source/numbers/isNumberEqual.js","../source/numbers/isNumberInRange.js","../source/numbers/isNumberNotInRange.js","../source/types/isParent.js","../source/types/isPrimitive.js","../source/types/isRelated.js","../source/types/isSameType.js","../source/types/isTrue.js","../source/numbers/isZero.js","../source/arrays/last.js","../source/arrays/mapRight.js","../source/arrays/mapWhile.js","../source/utilities/merge.js","../source/math/multiple.js","../source/functions/negate.js","../source/functions/nthArg.js","../source/objects/omit.js","../source/functions/once.js","../source/functions/over.js","../source/functions/overEvery.js","../source/utilities/pair.js","../source/arrays/partition.js","../source/objects/pick.js","../source/collection/pluck.js","../source/utilities/propertyMatch.js","../source/functions/rearged.js","../source/math/remainder.js","../source/arrays/remove.js","../source/strings/replace.js","../source/arrays/rest.js","../source/arrays/right.js","../source/arrays/sample.js","../source/utilities/setKey.js","../source/utilities/setValue.js","../source/arrays/sortNumberAscending.js","../source/arrays/sortNumberDescening.js","../source/utilities/stubArray.js","../source/utilities/stubObject.js","../source/utilities/stubString.js","../source/math/subtractAll.js","../source/math/sumAll.js","../source/arrays/take.js","../source/arrays/takeRight.js","../source/functions/throttle.js","../source/utilities/timesAsync.js","../source/utilities/toggle.js","../source/strings/truncate.js","../source/arrays/zip.js","../source/arrays/union.js","../source/arrays/untilFalse.js","../source/arrays/untilTrue.js","../source/arrays/whileCompactMap.js","../source/arrays/whileEach.js","../source/arrays/whileMap.js","../source/arrays/without.js","../source/functions/wrap.js","../source/arrays/xor.js"],"sourcesContent":["/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from '../objects/each.js';\nimport { isBoolean } from '../types/isBoolean.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Checks to see of the browser agent has a string.\n *\n * @function isAgent\n * @category browser\n * @type {Function}\n * @param {String} source - The string to search for.\n * @returns {Boolean} - Returns true or false.\n * @example\n * isAgent('mobile');\n * // => false\n */\nexport function isAgent(source) {\n\treturn (source) ? isAgent[source] : keys(isAgent);\n}\nconst userAgent = globalThis.navigator?.userAgentData;\nif (userAgent) {\n\teachObject(userAgent, (value, key) => {\n\t\tif (isBoolean(value) && value) {\n\t\t\tisAgent[key] = value;\n\t\t}\n\t});\n\teachArray(userAgent.brands, (value) => {\n\t\tisAgent[value.brand] = value.version;\n\t});\n} else if (navigator.userAgent) {\n\tlet userAgentNormalized = navigator.userAgent.toLowerCase();\n\tuserAgentNormalized = userAgentNormalized.replace(/_/g, '.');\n\tuserAgentNormalized = userAgentNormalized.replace(/[#_,;()]/g, '');\n\tconst userAgentSplit = userAgentNormalized.split(/ |\\//);\n\teachArray(userAgentSplit, (item) => {\n\t\tisAgent[item] = true;\n\t});\n}\n\n","/**\n * Attaches an event listener to a node.\n *\n * @function eventAdd\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventAdd(document.body, 'click', () => {console.log('CLICKED');});\n * // = > document.body\n */\nexport function eventAdd(node, eventName, callback, useCapture) {\n\tnode.addEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n/**\n * Attaches an event listener to a node.\n *\n * @function eventRemove\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventRemove(document.body, () => {console.log('CLICKED');});\n * // = > Undefined\n */\nexport function eventRemove(node, eventName, callback, useCapture) {\n\tnode.removeEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n\n","/**\n * Create a document fragment.\n *\n * @function createFragment\n * @category browser\n * @type {Function}\n * @ignore\n * @returns {Fragment} - Returns a new document fragment.\n*/\nexport const createFragment = document.createDocumentFragment.bind(document);\n","/**\n * Append a DOM node.\n *\n * @function append\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @ignore\n * @param {Node} parentNode - The parent node.\n * @param {Node} child - The node to be appended.\n * @returns {undefined} - Returns the child.\n */\nexport function append(parentNode, child) {\n\tparentNode.appendChild(child);\n\treturn child;\n}\n","import { eachObject } from '../objects/each.js';\nimport { isArray } from '../types/isArray.js';\nimport { mapArray } from '../arrays/map.js';\nimport { zipObject } from '../objects/zip.js';\n/**\n * Assign attributes to a DOM node.\n *\n * @function nodeAttribute\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @async\n * @param {Node} node - The DOM node.\n * @param {Object|Array} object - Object with key being the attribute name and the value being the attribute value. If an array is given it will get the values corresponding to the array items.\n * @returns {Object|Node} - If using an array this returns an object of attribute names as keys and their values as the property value. If using an object this will return the provided node.\n *\n * @example\n * nodeAttribute(document.body, { 'data-example': 'test'});\n */\nexport function nodeAttribute(node, object) {\n\tif (isArray(object)) {\n\t\treturn zipObject(object, mapArray(object, (item) => {\n\t\t\treturn node.getAttribute(item);\n\t\t}));\n\t}\n\teachObject(object, (item, key) => {\n\t\tnode.setAttribute(key, item);\n\t});\n\treturn node;\n}\n\n","import { restString } from '../strings/range.js';\nconst dotString = '.';\nconst poundString = '#';\nconst classTest = /^.[\\w_-]+$/;\nconst tagTest = /^[A-Za-z]+$/;\nconst regexSpace = /\\s/;\n/**\n * Wrapper around getElementsByClassName.\n *\n * @function getByClass\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByClass = document.getElementsByClassName.bind(document);\n/**\n * Wrapper around getElementsByTagName.\n *\n * @function getByTag\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByTag = document.getElementsByTagName.bind(document);\n/**\n * Wrapper around getElementsByIdName.\n *\n * @function getById\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getById = document.getElementById.bind(document);\n/**\n * Wrapper around querySelector.\n *\n * @function querySelector\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelector = document.querySelector.bind(document);\n/**\n * Wrapper around querySelectorAll.\n *\n * @function querySelectorAll\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelectorAll = document.querySelectorAll.bind(document);\n/**\n * Returns relevant DOM node.\n *\n * @function selector\n * @category browser\n * @ignoreTest\n * @param {String} select - String to be evaluated.\n * @type {Function}\n * @returns {Node} - Returns a DOM node.\n *\n * @example\n * selector('#node');\n * // =>
\n */\nexport function selector(select) {\n\tconst firstLetter = select[0];\n\tswitch (firstLetter) {\n\tcase poundString:\n\t\tif (!regexSpace.test(select)) {\n\t\t\treturn getById(restString(select));\n\t\t}\n\t\tbreak;\n\tcase dotString:\n\t\tif (classTest.test(select)) {\n\t\t\treturn getByClass(restString(select));\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tif (tagTest.test(select)) {\n\t\t\treturn getByTag(select);\n\t\t}\n\t}\n\treturn querySelectorAll(select);\n}\n\n","import { append } from './append.js';\nimport { hasDot } from '../utilities/hasDot.js';\nimport { eventAdd } from './event.js';\nimport { nodeAttribute } from './attribute.js';\nimport { promise } from '../utilities/promise.js';\nimport { querySelector } from './selector.js';\nconst createElementCache = document.createElement.bind(document);\nconst nodeAttachLoadingEvents = (node) => {\n\treturn promise((accept) => {\n\t\teventAdd(node, 'load', accept, true);\n\t\teventAdd(node, 'error', accept, true);\n\t\tappend(querySelector('head'), node);\n\t});\n};\n/**\n * Asynchronously import a js file and append it to the head node.\n * If a script fails to load importjs won't reject the promise rather it'll return the error event to limit further complications & reduce code complexity.\n *\n * @function importjs\n * @category browser\n * @type {Function}\n * @async\n * @param {*} url - URL of the script to import. If not \".\" is found in the file name \".js\" will be appended.\n * @returns {Promise} - Returns a promise which returns a \"load\" or \"error\" event associated with the script.\n *\n * @example\n * importjs('core.js');\n * importjs('core');\n */\nexport function importjs(url) {\n\tconst src = hasDot(url) && url || `${url}.js`;\n\tconst node = nodeAttribute(createElementCache('script'), {\n\t\tasync: '',\n\t\tsrc\n\t});\n\treturn nodeAttachLoadingEvents(node);\n}\n\n","import { eventAdd } from './event.js';\nimport { importjs } from './importScript.js';\nimport { getById } from './selector.js';\n/**\n * Runs a function if the document has finished loading. If not, add an eventlistener.\n *\n * @function isDocumentReady\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Function} callable - Function to be run.\n * @returns {Boolean|Function} - If the document is ready, returns a function. If not, return false.\n *\n * @example\n * isDocumentReady(() => {return 1});\n * // => 1\n */\nexport function isDocumentReady(callable) {\n\tconst state = document.readyState;\n\tconst checkStatus = state === 'interactive' || state === 'completed' || state === 'complete';\n\tif (checkStatus) {\n\t\treturn (callable) ? callable() : true;\n\t}\n\tif (callable) {\n\t\teventAdd(document, 'DOMContentLoaded', callable);\n\t}\n\treturn false;\n}\nisDocumentReady(() => {\n\tconst scriptTag = getById('AcidLib');\n\tconst scriptName = (scriptTag && scriptTag.getAttribute('data-index')) || '/index';\n\timportjs(scriptName);\n});\n","const protocol = location.protocol;\nconst protocolSocket = (protocol === 'http:') ? 'ws' : 'wss';\nconst hostname = location.hostname;\n/**\n * Holds client hardware, browser, and host info.\n *\n * @memberof $\n * @category browser\n * @ignoreTest\n * @property {Object} info - Client hardware & host info.\n * @type {Object}\n */\nexport const info = {\n\thardware: {\n\t\tcores: navigator.hardwareConcurrency\n\t},\n\thost: {\n\t\tname: hostname,\n\t\tprotocol,\n\t\tprotocolSocket,\n\t}\n};\n\n","import { assign } from '../objects/assign.js';\nimport { eventAdd } from './event.js';\nimport { info } from './info.js';\nimport { isDocumentReady } from './ready.js';\nexport function saveDimensions() {\n\tassign(info, {\n\t\tbodyHeight: document.body.offsetHeight,\n\t\tbodyWidth: document.body.offsetWidth,\n\t\twindowHeight: window.innerHeight,\n\t\twindowWidth: window.innerWidth,\n\t});\n}\n/**\n * Save current document & window dimensions to the info property.\n *\n * @function updateDimensions\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * updateDimensions();\n */\nexport function updateDimensions() {\n\tsaveDimensions();\n}\nisDocumentReady(updateDimensions);\neventAdd(window, 'load', updateDimensions, true);\neventAdd(window, 'resize', updateDimensions, true);\n\n","/**\n * LocalStorage Module..\n *\n * @module browser/storage\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nimport { virtualStorage } from '../utilities/virtualStorage.js';\nexport let hasLocal;\nfunction hasStorage(storeCheck) {\n\ttry {\n\t\tstoreCheck().removeItem('TESTING');\n\t\thasLocal = true;\n\t} catch (e) {\n\t\thasLocal = false;\n\t}\n}\nhasStorage(() => {\n\treturn localStorage;\n});\n/**\n * Constructs a virtual storage container with localStorage support.\n * Crate will fallback to strictly virtual storage if localStorage isn't supported.\n * If localStorage is supported virtual storage will be used first & only fallback to localStorage when needed.\n * Crate is ideal as a seemless drop in replacement for localStorage when not supported or allowed.\n *\n * @class Crate\n * @category browser\n * @returns {Crate} - Returns a new instance of Crate.\n *\n * @example\n * import { Crate, construct, assert } from '@universalweb/acid';\n * const storageCrate = construct(Crate);\n * storageCrate.setItem('key', 'value');\n * assert(storageCrate.getItem('key'), 'value');\n */\nexport class Crate {\n\tconstructor(initialObject) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local = localStorage;\n\t\t}\n\t\tthis.storage = virtualStorage(initialObject);\n\t}\n\thasLocal = hasLocal;\n\t/**\n\t * Save an item to a crate.\n\t *\n\t * @function setItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.setItem(key, (isString(value)) ? value : stringify(value));\n\t\t}\n\t\treturn this.storage.setItem(key, value);\n\t}\n\t/**\n\t * Get an item from a crate.\n\t *\n\t * @function getItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tgetItem(key) {\n\t\tconst item = this.storage.getItem(key);\n\t\tif (hasValue(item)) {\n\t\t\treturn item;\n\t\t}\n\t\tif (!hasValue(item) && this.hasLocal) {\n\t\t\treturn this.local.getItem(key);\n\t\t}\n\t}\n\t/**\n\t * Clears all data for the crate including all of localStorage if supported.\n\t *\n\t * @function clear\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.clear();\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tclear() {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.clear();\n\t\t}\n\t\tthis.storage.clear();\n\t}\n\t/**\n\t * Remove an item from a crate.\n\t *\n\t * @class Crate\n\t * @category browser\n\t * @function removeItem\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.removeItem('key');\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tremoveItem(key) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.removeItem(key);\n\t\t}\n\t\tthis.storage.removeItem(key);\n\t}\n}\n/**\n * The crate function is a factory which wraps the Crate class constructor.\n *\n * @function crate\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new Crate Object.\n *\n * @example\n * const storageCrate = crate();\n * // => New Crate Object\n */\nexport function crate(virtualFlag) {\n\treturn new Crate(virtualFlag);\n}\n\n","import { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nconst generateTheme = (color, bg) => {\n\treturn `color:${color};background:${bg};`;\n};\nexport const themes = {\n\talert: generateTheme('#fff', '#f44336'),\n\timportant: generateTheme('#fff', '#E91E63'),\n\tnotify: generateTheme('#fff', '#651FFF'),\n\twarning: generateTheme('#000', '#FFEA00'),\n};\n/**\n * Console.trace wrapper with theme support.\n *\n * @function cnsl\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Object} value - The value to be logged.\n * @param {String} themeName - The name of the theme to be used.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnsl('Lucy', 'notify');\n * // 'Lucy'\n*/\nexport const cnsl = (value, themeName) => {\n\tconst data = isString(value) ? value : stringify(value);\n\tif (themeName === 'alert' || themeName === 'warning') {\n\t\treturn console.trace(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n\t}\n\tconsole.log(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n};\n/**\n * Create color themes for cnsl method.\n *\n * @function cnslTheme\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {String} themeName - The name of the theme.\n * @param {String} color - The text color.\n * @param {String} background - The background color of the block.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnslTheme('BlackNWhite', '#fff', '#000');\n*/\nexport const cnslTheme = (themeName, color, background) => {\n\tthemes[themeName] = generateTheme(color, background);\n};\n\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Invoke each function in the given array.\n *\n * @function invokeArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { invokeArray, assert } from '@universalweb/acid';\n * function test(arg){\n * \treturn [this, arg];\n * }\n * const results = invokeArray([test], 1, test);\n * assert(results, [test, 1]);\n */\nexport function invokeArray(source, arg, thisCall) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index].call(thisCall, arg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index](arg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollection\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * import { invokeCollection, assert } from '@universalweb/acid';\n * const results = invokeCollection([{\n *\ttest(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollection(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapArray(collection, (item, index) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollectionAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * import { invokeCollectionAsync, assert } from '@universalweb/acid';\n * const results = await invokeCollectionAsync([{\n *\tasync test(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollectionAsync(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapAsyncArray(collection, (item) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapAsyncArray(collection, async (item) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { difference } from '../arrays/difference.js';\n/**\n * Checks if value is a plain DOM Node.\n *\n * @function isDom\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDom, assert } from '@universalweb/acid';\n * assert(isDom(document.querySelectorAll('head')), true);\n */\nexport function isDom(source) {\n\treturn source && source.nodeType !== 9;\n}\n/**\n * Checks if the value is a HTMLCollection.\n *\n * @function isHTMLCollection\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isHTMLCollection, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isHTMLCollection(document.getElementsByClassName('test')), true);\n */\nconst objectHTMLCollection = '[object HTMLCollection]';\nexport function isHTMLCollection(source) {\n\treturn (hasValue(source)) ? source.toString() === objectHTMLCollection : false;\n}\n/**\n * Checks if the value is a NodeList.\n *\n * @function isNodeList\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNodeList, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isNodeList(document.querySelectorAll('.test')), true);\n */\nconst objectNodeList = '[object NodeList]';\nexport function isNodeList(source) {\n\treturn (hasValue(source)) ? source.toString() === objectNodeList : false;\n}\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Checks if the keycode of the event is strictly equal to 13.\n *\n * @function isEnter\n * @category browser\n * @type {Function}\n * @param {Object} eventObject - Object to be checked.\n * @returns {Boolean} - Returns true if the keycode property of the object equals 13.\n *\n * @example\n * isEnter('click');\n * // => false\n */\nexport function isEnter(eventObject) {\n\treturn eventObject.keyCode === 13;\n}\n\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n"],"names":["clearArray","source","length","isUndefined","undefined","hasLength","Boolean","isNull","hasValue","returnValue","eachArray","iteratee","thisCall","additionalArg","arrayLength","index","call","compactMapArray","results","item","arrayOriginal","returned","push","async","eachAsyncArray","compactMapAsyncArray","result","sign","Math","isNegative","rangeUp","start","end","step","sourceArray","position","rangeDown","forEach","callback","isArray","Array","ensureArray","flattenDeep","flat","Infinity","reflectConstruct","Reflect","construct","target","argumentsList","newTarget","args","difference","sources","differencesMap","Map","differences","currentArray","parentIndex","child","childIndex","childRoot","get","count","set","drop","array","amount","upTo","splice","eachRight","thisBind","eachRightAsync","everyArray","sourceLength","everyAsyncArray","filterArray","filterAsyncArray","objectKeys","Object","keys","regexToPath","regexCloseBracket","emptyString","toPath","replace","split","propertyString","link","hasOwn","hasKeys","properties","pathArray","lastPath","pop","initialPathObject","isPlainObject","value","constructor","toString","trim","slice","isConstructor","isConstructorFactory","constructorName","name","isConstructorNameFactory","isTypeFactory","method","primarySource","otherSources","isBufferCall","isBuffer","isEqual","equals","sourceProperties","key","mathNativeMax","max","mapArray","mapAsyncArray","subtract","minuend","subtrahend","subtractReverse","floor","random","randomInt","min","arrayFrom","from","toArray","arrayLike","mapFn","thisArg","shuffle","shuffleArray","mathNativeMin","onlyUnique","indexOf","sortUnique","unique","isSorted","filter","clearBuffer","fill","findIndexCache","element","indexMatch","propertyName","sortCollectionDescendingFilter","previous","next","ifMatch","previousKey","nextKey","sortCollectionDescending","collection","sort","sortObjectsAlphabetically","localeCompare","sortCollectionAscendingFilter","sortCollectionAscending","isNumberCall","isNumber","isString","String","pluckObject","targets","sortObjectsAlphabeticallyReverse","regexTestFactory","regexType","test","isFileCSS","isFileHTML","isFileJS","isFileJSON","objectAssign","assign","eachAsyncObject","propertyCount","eachObject","objectKeysArray","isSetCall","isSet","forOf","isGeneratorCall","isGenerator","forOfAsync","generatorArgs","isFunction","Function","isAsyncCall","isAsync","generateLoop","arrayLoop","arrayLoopAsync","objectLoop","objectLoopAsync","forOfLoop","forOfLoopAsync","argument1","argument2","argument3","isIterateeAsync","each","Chain","methods","this","addChainMethod","thisChain","methodName","setValue","done","truth","falsy","noop","times","Timers","list","remove","id","clearTimeout","delete","has","callable","time","currentThis","setTimeout","clear","timers","timer","applyNative","apply","thisArgument","mapAsyncObject","thisObject","mapObject","original","getType","cloneType","sourceType","forOfMap","resultsObject","methodPush","add","methodPushBound","bind","methodSet","forOfMapAsync","resultsGenerator","map","everyAsyncObject","everyObject","forOfEvery","forOfEveryAsync","every","functionPrototype","prototype","cacheNativeMethod","getPropNames","getOwnPropertyNames","getPropDesc","getOwnPropertyDescriptor","defProp","defineProperty","hasProp","hasOwnProperty","isSame","is","objectEntries","entries","compactMapAsyncObject","compactMapObject","filterObject","filterAsyncObject","isRegexCall","isRegex","escapeRegexRegex","escapeRegex","arrayToRegex","makeSafe","RegExp","join","objectSize","zipObject","values","zipedObject","normalizeCase","space","restString","string","substring","rawURLDecodeRegex","andRegex","lessThanRegex","moreThanRegex","doubleQuoteRegex","rawURLDecode","decodeURIComponent","htmlEntities","tokenizeRegEx","wordsRegEx","getWords","upperFirstLetter","toUpperCase","upperFirst","upperFirstOnly","toLowerCase","getTypeName","noValue","isMapCall","isMap","typedArrayRegex","arrayConstructorName","isTypedArray","isBigIntCall","isBigInt","isBooleanCall","isBoolean","isArrayBufferCall","isArrayBuffer","constructorNames","isDateCall","isDate","isFalse","isF32Call","isF32","isF64Call","isF64","isInteger","Number","isFloat","isI16Call","isI16","isI32Call","isI32","isI8Call","isI8","isPromise","Promise","isKindAsync","isSafeInteger","isSafeInt","isU16Call","isU16","isU32Call","isU32","isU8Call","isU8","isU8CCall","isU8C","isWeakMapCall","isWeakMap","isDeno","globalThis","Deno","isNodejs","process","versions","node","isTruthy","returnIfTrue","notEqual","jsonNative","JSON","stringify","createAssertError","expected","localOptions","options","errorTitle","title","file","Error","assertAsync","sourceArg","structuredCloneSafe","structuredClone","forOfCompactMapAsync","forOfCompactMap","compactMap","forOfFilter","forOfFilterAsync","returnFlow","arg","flow","flowRight","flowAsync","flowAsyncRight","hasDot","Intervals","clearInterval","setInterval","intervals","Model","static","modelName","modelValue","models","promise","Store","property","data","Proxy","proxySource","console","log","UniqID","totalActive","freed","totalFree","shift","free","isActive","shouldReset","reset","uniqID","VirtualStorage","initialObject","items","getItem","setItem","removeItem","virtualStorage","isAgent","userAgent","navigator","userAgentData","brands","brand","version","userAgentNormalized","eventAdd","eventName","useCapture","addEventListener","createFragment","document","createDocumentFragment","append","parentNode","appendChild","nodeAttribute","object","getAttribute","setAttribute","classTest","tagTest","regexSpace","getByClass","getElementsByClassName","getByTag","getElementsByTagName","getById","getElementById","querySelector","querySelectorAll","createElementCache","createElement","importjs","url","src","accept","nodeAttachLoadingEvents","isDocumentReady","state","readyState","scriptTag","protocol","location","protocolSocket","hostname","info","hardware","cores","hardwareConcurrency","host","saveDimensions","bodyHeight","body","offsetHeight","bodyWidth","offsetWidth","windowHeight","window","innerHeight","windowWidth","innerWidth","updateDimensions","exports","hasLocal","storeCheck","e","hasStorage","localStorage","Crate","local","storage","generateTheme","color","bg","themes","alert","important","notify","warning","augend","addend","point","sortedObject","bindThis","targetAssign","total","currentAmount","config","size","chunked","match","themeName","trace","background","sourceKeys","sourceKeysLength","targetObject","i","keyName","compactedKeys","queue","all","allSettled","virtualFlag","arity","curries","curried","curryArgs","unshift","debounced","Buffer","alloc","removeEventListener","findIndex","find","level","reduce","previousValue","currentValue","concat","valuesLength","cloned","methodBound","lastIndexOf","insertIndex","search","includes","rootObject","equalThis","optional","firstArgument","text","arrays","otherItem","strictFlag","indexes","sourceChild","targetParent","nodeType","eventObject","keyCode","Symbol","iterator","compareArray","targetKeys","sourceParent","targetChild","type","targetOne","targetTwo","other","otherType","reviver","parse","indexFrom","trueIndex","merge","currentSource","sourceItem","sourceKey","blacklist","blacklistRegex","numberToString","iteratees","predicates","predicate","rejected","whitelist","compared","removeThese","words","sampleArray","used","select","numberList","a","b","endIndex","indexRight","throttled","shouldThrottle","on","off","maxLength","stringLength","breakAll","breakAllLength","truncateDown","truncateUp","arraySet","unZippedKeys","sourcesSet","Set","wrapper","xorMap","xored"],"mappings":"yOAaO,SAASA,EAAWC,GAE1B,OADAA,EAAOC,OAAS,EACTD,CACR,CCLO,SAASE,EAAYF,GAC3B,YAAkBG,IAAXH,CACR,CCAO,SAASI,EAAUJ,GACzB,OAAOK,QAAQL,EAAOC,OACvB,CCFO,SAASK,EAAON,GACtB,OAAkB,OAAXA,CACR,CCDO,SAASO,EAASP,GACxB,OAAQE,EAAYF,KAAYM,EAAON,EACxC,CCRO,SAASQ,EAAYR,GAC3B,OAAOA,CACR,CCYO,SAASS,EAAUT,EAAQU,EAAUC,EAAUC,GACrD,IAAKZ,EACJ,OAED,MAAMa,EAAcb,EAAOC,OAC3B,GAAIM,EAASI,GACZ,IAAK,IAAIG,EAAQ,EAAGA,EAAQD,EAAaC,IACxCJ,EAASK,KAAKJ,EAAUX,EAAOc,GAAQA,EAAOd,EAAQa,EAAaD,QAGpE,IAAK,IAAIE,EAAQ,EAAGA,EAAQD,EAAaC,IACxCJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAaD,GAGtD,OAAOZ,CACR,CCfO,SAASgB,EAAgBhB,EAAQU,EAAWF,EAAaS,EAAU,GAAIN,EAAUC,GAgBvF,OAfIL,EAASI,GACZF,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,KAC9C,MAAMO,EAAWV,EAASK,KAAKJ,EAAUO,EAAMJ,EAAOG,EAASE,EAAeN,EAAaD,GACvFL,EAASa,IACZH,EAAQI,KAAKD,EACb,IAGFX,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,KAC9C,MAAMO,EAAWV,EAASQ,EAAMJ,EAAOG,EAASE,EAAeN,EAAaF,EAAUC,GAClFL,EAASa,IACZH,EAAQI,KAAKD,EACb,IAGIH,CACR,CCjBOK,eAAeC,EAAevB,EAAQU,EAAUC,EAAUC,GAChE,IAAKZ,EACJ,OAED,MAAMa,EAAcb,EAAOC,OAC3B,GAAIM,EAASI,GACZ,IAAK,IAAIG,EAAQ,EAAGA,EAAQD,EAAaC,UAClCJ,EAASK,KAAKJ,EAAUX,EAAOc,GAAQA,EAAOd,EAAQa,EAAaD,QAG1E,IAAK,IAAIE,EAAQ,EAAGA,EAAQD,EAAaC,UAClCJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAaD,GAG5D,OAAOZ,CACR,CCjBOsB,eAAeE,EAAqBxB,EAAQU,EAAWF,GAC7D,MAAMS,EAAU,GAOhB,aANMM,EAAevB,GAAQsB,MAAOJ,EAAMJ,EAAOD,KAChD,MAAMY,QAAef,EAASQ,EAAMJ,EAAOG,EAASJ,GAChDN,EAASkB,IACZR,EAAQI,KAAKI,EACb,IAEKR,CACR,CChBA,MAAQS,KAAAA,GAASC,KACV,SAASC,EAAW5B,GAC1B,OAAyB,IAAlB0B,EAAK1B,EACb,CCfO,SAAS6B,EAAQC,EAAOC,EAAKC,EAAMC,GACzC,IAAIC,EAAWJ,EACf,KAAOI,EAAWH,GACjBE,EAAYZ,KAAKa,GACjBA,GAAYF,EAEb,OAAOC,CACR,CACO,SAASE,EAAUL,EAAOC,EAAKC,EAAMC,GAC3C,IAAIC,EAAWJ,EACf,KAAOI,EAAWH,GACjBE,EAAYZ,KAAKa,GACjBA,GAAYF,EAEb,OAAOC,CACR,CChBO,SAASG,EAAQpC,EAAQqC,GAE/B,OADArC,EAAOoC,QAAQC,GACRrC,CACR,CCUY,MAACsC,EAAUC,MAAMD,QCEtB,SAASE,EAAYxC,GAC3B,OAAQsC,EAAQtC,IAAWA,GAAYO,EAASP,IAAW,CAACA,IAAY,EACzE,CCHO,SAASyC,EAAYzC,GAC3B,OAAOA,EAAO0C,KAAKC,IACpB,CCKA,MAAMC,EAAmBC,QAAQC,UAE1B,SAASA,EAAUC,EAAQC,EAAgB,GAAIC,GACrD,MAAMC,EAAQZ,EAAQU,GAAkBA,EAAgB,CAACA,GACzD,OAAIC,EACIL,EAAiBG,EAAQG,EAAMD,GAEhCL,EAAiBG,EAAQG,EACjC,CCXO,SAASC,KAAcC,GAC7B,MAAMC,EAAiBP,EAAUQ,KAC3BC,EAAc,GAuBpB,OAtBA9C,EAAU2C,GAAS,CAACI,EAAcC,KACjChD,EAAU+C,GAAc,CAACE,EAAOC,KAC/B,IAAIC,EAAYP,EAAeQ,IAAIH,GACnC,GAAKE,EAOE,IAAIA,EAAUH,cAAgBA,EACpC,OAEAG,EAAUE,OACV,MAVAF,EAAY,CACXE,MAAO,EACPL,cACAC,SAEDL,EAAeU,IAAIL,EAAOE,EAK1B,GACA,IAEHxB,EAAQiB,GAAiBnC,IACL,IAAfA,EAAK4C,OAAoC,IAArB5C,EAAKuC,aAC5BF,EAAYlC,KAAKH,EAAKwC,MACtB,IAEKH,CACR,CC5BO,SAASS,EAAKC,EAAOC,EAAS,EAAGC,EAAOF,EAAMhE,QACpD,OAAOgE,EAAMG,OAAOF,EAAQC,EAC7B,CCGO,SAASE,EAAUrE,EAAQU,EAAU4D,GAC3C,IAAKtE,EACJ,OAED,MAAMa,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQD,EAAc,EAAEC,GAAS,EAAEA,IAC3CJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAayD,GAErD,OAAOtE,CACR,CCXOsB,eAAeiD,EAAevE,EAAQU,GAC5C,IAAKV,EACJ,OAED,MAAMa,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQD,EAAc,EAAGC,GAAS,EAAGA,UACvCJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,GAE9C,OAAOb,CACR,CCNO,SAASwE,EAAWxE,EAAQU,EAAU4D,GAC5C,IAAKtE,EACJ,OAED,MAAMyE,EAAezE,EAAOC,OAC5B,IAAK,IAAIa,EAAQ,EAAEA,EAAQ2D,EAAa3D,IACvC,IAAuE,IAAnEJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQyE,EAAcH,GACxD,OAAO,EAGT,OAAO,CACR,CCXOhD,eAAeoD,EAAgB1E,EAAQU,EAAU4D,GACvD,IAAKtE,EACJ,OAED,MAAMyE,EAAezE,EAAOC,OAC5B,IAAK,IAAIa,EAAQ,EAAEA,EAAQ2D,EAAa3D,IACvC,IAA6E,UAAnEJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQyE,EAAcH,GAC9D,OAAO,EAGT,OAAO,CACR,CCXO,SAASK,EAAY3E,EAAQU,EAAUO,EAAU,GAAIqD,GAM3D,OALA7D,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,MAC+B,IAAzEH,EAASQ,EAAMJ,EAAOG,EAASE,EAAeN,EAAayD,IAC9DrD,EAAQI,KAAKH,EACb,IAEKD,CACR,CCPOK,eAAesD,EAAiB5E,EAAQU,EAAUO,EAAU,GAAIqD,GAMtE,aALM/C,EAAevB,GAAQsB,MAAOJ,EAAMJ,EAAOK,EAAeN,MACoB,UAAzEH,EAASQ,EAAMJ,EAAOG,EAASE,EAAeN,EAAayD,IACpErD,EAAQI,KAAKH,EACb,IAEKD,CACR,CCjBA,MAAM4D,EAAaC,OAAOC,KACnB,SAASA,EAAK/E,GACpB,GAAIA,EACH,OAAO6E,EAAW7E,EAEpB,CCjBA,MAAMgF,EAAc,QACdC,EAAoB,KACpBC,EAAc,GAcb,SAASC,EAAOnF,GACtB,OAAOA,EAAOoF,QAAQH,EAAmBC,GAAaG,MAAML,EAC7D,CCKO,SAASnB,EAAIyB,EAAgBvC,GACnC,IAAKA,EACJ,OAAO,EAER,IAAIwC,EAAOxC,EAMX,OAJAyB,EADmBlC,EAAQgD,GAAmBA,EAAiBH,EAAOG,IAC/CpE,IACtBqE,EAAOA,EAAKrE,GACLX,EAASgF,MAEVA,CACR,CC9BA,MAAMC,EAASV,OAAOU,OAef,SAASC,EAAQzF,KAAW0F,GAClC,GAAK1F,EAGL,OAAOwE,EAAWkB,GAAaxE,IAC9B,MAAMyE,EAAYR,EAAOjE,GACzB,GAAyB,IAArByE,EAAU1F,OACb,OAAOuF,EAAOxF,EAAQkB,GAChB,CACN,MAAM0E,EAAWD,EAAUE,MACrBC,EAAoBjC,EAAI8B,EAAW3F,GACzC,QAAI8F,GACIN,EAAOM,EAAmBF,EAGlC,IAEH,CCtBY,MAACG,EAAiBC,KACzBzF,EAASyF,IAEO,YADZA,EAAMC,YAAYC,WAAWC,OAClCC,MAAM,EAAG,ICHN,SAASC,EAActD,EAAQ/C,GACrC,OAAO+C,GAAQkD,cAAgBjG,IAAU,CAC1C,CACO,SAASsG,EAAqBtG,GACpC,OAAQ+C,GACAsD,EAActD,EAAQ/C,EAE/B,CACO,SAASuG,EAAgBvG,GAC/B,OAAOA,GAAQiG,aAAaO,IAC7B,CACO,SAASC,EAAyBzG,GACxC,OAAQ+C,GACAwD,EAAgBxD,KAAY/C,IAAU,CAE/C,CC5BO,SAAS0G,EAAcC,GAC7B,OAAO,SAASC,KAAkBC,GACjC,OAAIA,EACIF,EAAOC,IAAkBpC,EAAWqC,EAAcF,GAEnDA,EAAOC,EAChB,CACA,CCMY,MAACE,EAAeL,EAAyB,UACxCM,EAAWL,EAAcI,GCMzBE,EAAU,CAAChH,EAAQ+C,KAC/B,GAAI/C,IAAW+C,EACd,OAAO,EACD,GAAIgE,EAAS/G,GACnB,OAAOA,EAAOiH,OAAOlE,GACf,GAAI/C,EAAOkG,aAAenD,EAAOmD,WACvC,GAAIH,EAAc/F,GAAS,CAC1B,MAAMkH,EAAmBnC,EAAK/E,GAC9B,GAAIyF,EAAQ1C,EAAQmE,GACnB,OAAO1C,EAAW0C,GAAmBC,GAC7BH,EAAQhH,EAAOmH,GAAMpE,EAAOoE,KAGxC,MAAS,GAAI7E,EAAQtC,IACdA,EAAOC,SAAW8C,EAAO9C,OAC5B,OAAOuE,EAAWxE,GAAQ,CAACkB,EAAMJ,IACzBkG,EAAQ9F,EAAM6B,EAAOjC,MAKhC,OAAO,CAAK,EC1Cb,MAAMsG,EAAgBzF,KAAK0F,ICsBpB,SAASC,EAAStH,EAAQU,EAAUO,EAAU,GAAIN,EAAUC,GAUlE,OATIL,EAASI,GACZF,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,KAC9CI,EAAQH,GAASJ,EAASK,KAAKJ,EAAUO,EAAMJ,EAAOG,EAASE,EAAeN,EAAaD,EAAc,IAG1GH,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,KAC9CI,EAAQH,GAASJ,EAASQ,EAAMJ,EAAOG,EAASE,EAAeN,EAAaD,EAAc,IAGrFK,CACR,CCfOK,eAAeiG,EAAcvH,EAAQU,GAC3C,MAAMO,EAAU,GAIhB,aAHMM,EAAevB,GAAQsB,MAAOJ,EAAMJ,EAAOD,KAChDI,EAAQH,SAAeJ,EAASQ,EAAMJ,EAAOD,EAAY,IAEnDI,CACR,CCVO,SAASuG,EAASC,EAASC,GACjC,OAAOD,EAAUC,CAClB,CCFO,SAASC,EAAgBD,EAAYD,GAC3C,OAAOA,EAAUC,CAClB,CChBA,MAAME,MACLA,EACDC,OAACA,GACGlG,KAeG,SAASmG,GAAUT,EAAKU,EAAM,GACpC,OAAOH,EAAMC,KAAYR,EAAMU,IAAQA,CACxC,CCnBA,MAAMC,GAAYzF,MAAM0F,KAejB,SAASC,GAAQC,EAAWC,EAAOC,GACzC,GAAI9H,EAAS4H,GACZ,OAAOH,GAAUG,EAAWC,EAAOC,EAErC,CCJO,SAASC,GAAQvF,EAAQmB,EAASnB,EAAO9C,QAC/C,GAAI8C,EAAO9C,QAAU,EACpB,OAAOiI,GAAQnF,GAEhB,MAAMwF,EAAeL,GAAQnF,GAC7B,IACIjC,EACAkF,EAFAlC,EAAQ,EAGZ,KAAOA,EAAQI,GACdpD,EAAQgH,GAAUS,EAAatI,OAAS,EAAG,GAC3C+F,EAAQuC,EAAazE,GACrByE,EAAazE,GAASyE,EAAazH,GACnCyH,EAAazH,GAASkF,EACtBlC,IAED,OAAOyE,CACR,CChCA,MAAMC,GAAgB7G,KAAKoG,ICApB,SAASU,GAAWzC,EAAOlF,EAAOmD,GACxC,OAAOA,EAAMyE,QAAQ1C,KAAWlF,CACjC,CACO,SAAS6H,GAAWzH,EAAMJ,EAAOmD,GACvC,OAAO/C,IAAS+C,EAAMnD,EAAQ,EAC/B,CAeO,SAAS8H,GAAO5I,EAAQ6I,GAC9B,OAAIA,EACI7I,EAAO8I,OAAOH,IAEf3I,EAAO8I,OAAOL,GACtB,CCZO,SAASM,GAAY/I,GAE3B,OADAA,EAAOgJ,KAAK,GACLhJ,CACR,CChBO,SAASiJ,GAAeC,EAASpI,EAAOmD,EAAOkF,EAAYC,GACjE,GAAIF,EAAQE,KAAkBD,EAC7B,OAAO,CAET,CCcO,SAASE,GAA+BC,EAAUC,EAAMH,EAAcI,GAC5E,MAAMC,EAAcH,EAASF,GACvBM,EAAUH,EAAKH,GACrB,OAAIK,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMH,GAE3BM,EAEOD,EAEDA,EAAcC,EACjB,EACGD,EAAcC,GAChB,EAEF,EANC,GAFC,CASV,CACO,SAASC,GAAyBC,EAAYR,EAAe,KAAMI,GACzE,OAAOI,EAAWC,MAAK,CAACP,EAAUC,IAC1BF,GAA+BC,EAAUC,EAAMH,EAAcI,IAEtE,CCbO,SAASM,GAA0BR,EAAUC,EAAMH,EAAcI,GACvE,MAAMC,EAAcH,EAASF,GACvBM,EAAUH,EAAKH,GACrB,OAAIK,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMH,GAEzBK,EAAYM,cAAcL,EAClC,CCfO,SAASM,GAA8BV,EAAUC,EAAMH,EAAcI,GAC3E,MAAMC,EAAcH,EAASF,GACvBM,EAAUH,EAAKH,GACrB,OAAIK,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMH,GAE3BM,EAEOD,EAEDA,EAAcC,GAChB,EACED,EAAcC,EACjB,EAED,GANE,EAFD,CAST,CACO,SAASO,GAAwBL,EAAYR,EAAe,KAAMI,GACxE,OAAOI,EAAWC,MAAK,CAACP,EAAUC,IAC1BS,GAA8BV,EAAUC,EAAMH,EAAcI,IAErE,CCzBY,MAACU,GAAezD,EAAyB,UACxC0D,GAAWzD,EAAcwD,ICA1B,MAACE,GAAW9D,EAAqB+D,QCCtC,SAASC,GAAYtK,EAAQuK,GACnC,GAAKvK,EAEE,OAAIoK,GAASG,GACZvK,EAAOuK,GAERjD,EAASiD,GAAUrJ,GAClBlB,EAAOkB,IAEhB,CCPO,SAASsJ,GAAiClB,EAAUC,EAAMH,EAAcI,GAC9E,MAAMC,EAAcH,EAASF,GACvBM,EAAUH,EAAKH,GACrB,OAAIK,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMH,GAEzBM,EAAQK,cAAcN,EAC9B,CCxBO,SAASgB,GAAiBC,GAChC,OAAQxJ,KACCX,EAASW,IAASwJ,EAAUC,KAAKzJ,EAE3C,CCQY,MAAC0J,GAAYH,GAAiB,UCA7BI,GAAaJ,GAAiB,WCA9BK,GAAWL,GAAiB,SCA5BM,GAAaN,GAAiB,WCZ/B,MAACO,GAAelG,OAAOmG,OAc5B,SAASA,GAAOlI,KAAWK,GACjC,GAAI7C,EAASwC,GACZ,OAAOiI,GAAajI,KAAWK,EAEjC,CCIa,MAAA8H,GAAkB5J,MAAOtB,EAAQU,EAAUC,EAAUC,KACjE,IAAKZ,EACJ,OAED,MAAM6E,EAAaE,EAAK/E,GAUxB,OATIO,EAASI,SACNY,EAAesD,GAAY,CAACsC,EAAKrG,EAAOmD,EAAOkH,IAC7CzK,EAASK,KAAKJ,EAAUX,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAetG,EAAYjE,WAG/EW,EAAesD,GAAY,CAACsC,EAAKrG,EAAOmD,EAAOkH,IAC7CzK,EAASV,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAetG,EAAYjE,KAGhEZ,CAAM,EChBP,SAASoL,GAAWpL,EAAQU,EAAUC,EAAUC,GACtD,IAAKZ,EACJ,OAED,MAAM6E,EAAaE,EAAK/E,GAUxB,OATIO,EAASI,GACZF,EAAUoE,GAAY,CAACsC,EAAKrG,EAAOuK,EAAiBF,KACnDzK,EAASK,KAAKJ,EAAUX,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAeE,EAAiBzK,EAAc,IAGjGH,EAAUoE,GAAY,CAACsC,EAAKrG,EAAOuK,EAAiBF,KACnDzK,EAASV,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAeE,EAAiBzK,EAAc,IAG5EZ,CACR,CCrBY,MAACsL,GAAY7E,EAAyB,OACrC8E,GAAQ7E,EAAc4E,ICf5B,SAASE,GAAMxL,EAAQU,GAC7B,GAAI6K,GAAMvL,GAAS,CAClB,IAAK,MAAMgG,KAAShG,EACnBU,EAASsF,EAAOhG,GAEjB,OAAOA,CACP,CACD,IAAK,MAAOmH,EAAKnB,KAAUhG,EAC1BU,EAASsF,EAAOmB,EAAKnH,GAEtB,OAAOA,CACR,CCGY,MAACyL,GAAkBhF,EAAyB,qBAC3CiF,GAAchF,EAAc+E,ICdlCnK,eAAeqK,GAAW3L,EAAQU,EAAUkL,GAClD,GAAIL,GAAMvL,GAAS,CAClB,IAAK,MAAMgG,KAAShG,QACbU,EAASsF,EAAOhG,GAEvB,OAAOA,CACP,CACD,GAAI0L,GAAY1L,GACf,UAAW,MAAMkB,KAAQlB,KAAU4L,SAC5BlL,EAASQ,EAAMlB,GAGvB,IAAK,MAAOmH,EAAKnB,KAAUhG,QACpBU,EAASsF,EAAOmB,EAAKnH,GAE5B,OAAOA,CACR,CCJY,MAAC6L,GAAc7L,KAClBO,EAASP,IAAWA,aAAkB8L,SCDlCC,GAActF,EAAyB,iBACvCuF,GAAUtF,EAAcqF,ICT9B,SAASE,GAAaC,EAAWC,EAAgBC,EAAYC,EAAiBC,EAAWC,GAC/F,MAAO,CAACvM,EAAQU,EAAU8L,EAAWC,EAAWC,KAC/C,IAAItL,EACJ,MAAMuL,EAAkBX,GAAQtL,GAChC,GAAKH,EAASP,IAAYU,EAa1B,OAVCU,EADUkB,EAAQtC,GACP,EAAoBmM,EAAiBD,EACtCnG,EAAc/F,IAAW6L,GAAW7L,GACnC,EAAoBqM,EAAkBD,EACvCE,EACC,EAAoBC,EAAiBD,EACtCZ,GAAY1L,GACXuM,EAEA,EAAoBF,EAAkBD,EAE3ChL,EAASpB,EAAQU,EAAU8L,EAAWC,EAAWC,EAAU,CAEpE,CCIY,MAACE,GAAOX,GAAaxL,EAAWc,EAAgB6J,GAAYF,GAAiBM,GAAOG,ICvBzF,MAAMkB,GACZ,WAAA5G,CAAY6G,GACXC,KAAKC,eAAeF,EACpB,CACD,cAAAE,CAAeF,GACd,MAAMG,EAAYF,KAClBH,GAAKE,GAAS,CAACnG,EAAQuG,KACtBD,EAAUC,GAAc,YAAYhK,GAEnC,OADA6J,KAAK/G,MAAQW,EAAO5F,KAAKkM,EAAWA,EAAUjH,SAAU9C,GACjD+J,CACX,CAAI,GAEF,CACD,QAAAE,CAASnH,GAER,OADA+G,KAAK/G,MAAQA,EACN+G,IACP,CACD,IAAAK,GACC,MAAMpH,EAAQ+G,KAAK/G,MAEnB,OADA+G,KAAK/G,MAAQ,KACNA,CACP,CACDA,MAAQ,KCfI,MAAAqH,IAAQ,ECARC,IAAQ,ECFRC,GAAO,KACZ,ECQD,SAASC,GAAMtJ,EAAQxD,GAC7B,IAAK,IAAII,EAAQ,EAAGA,EAAQoD,EAAQpD,IACnCJ,EAASI,EAEX,CCnBO,MAAM2M,GACZC,KAAO5K,EAAUQ,KACjB,SAAAR,GACC,CAYD,MAAA6K,CAAOC,GACNC,aAAaD,GACbb,KAAKW,KAAKI,OAAOF,EACjB,CACD,GAAAG,CAAIH,GACH,OAAOb,KAAKW,KAAKK,IAAIH,EACrB,CACD,GAAA/J,CAAI+J,GACH,OAAOb,KAAKW,KAAK7J,IAAI+J,EACrB,CAcD,GAAA7J,CAAIiK,EAAUC,GACb,MAAMC,EAAcnB,KACda,EAAKO,YAAW,KACrBH,IACAE,EAAYP,OAAOC,EAAG,GACpBK,GAEH,OADAlB,KAAKW,KAAK3J,IAAI6J,EAAIP,IACXO,CACP,CAWD,KAAAQ,GACC,MAAMF,EAAcnB,KACpBmB,EAAYR,KAAKtL,SAASwL,IACzBM,EAAYP,OAAOC,EAAG,GAEvB,EAEU,MAACS,GAASvL,EAAU2K,IAgBzB,SAASa,GAAMN,EAAUC,GAC/B,OAAOI,GAAOtK,IAAIiK,EAAUC,EAC7B,CCvFA,MAAMM,GAAc1L,QAAQ2L,MAiBrB,SAASA,GAAMzL,EAAQ0L,EAAczL,GAC3C,GAAI6I,GAAW9I,GACd,OAAOwL,GAAYxL,EAAQ0L,EAAczL,EAE3C,CCFO1B,eAAeoN,GAAe1O,EAAQU,EAAUO,EAAU,CAAA,GAChE,GAAKjB,EAML,aAHMkL,GAAgBlL,GAAQsB,MAAOJ,EAAMiG,EAAKwH,EAAYxD,EAAetG,KAC1E5D,EAAQkG,SAAazG,EAASQ,EAAMiG,EAAKlG,EAAS0N,EAAYxD,EAAetG,EAAW,IAElF5D,CACR,CCLO,SAAS2N,GAAU5O,EAAQU,EAAUO,EAAU,CAAE,EAAEN,EAAUC,GACnE,GAAKZ,EAYL,OATIO,EAASI,GACZyK,GAAWpL,GAAQ,CAACkB,EAAMiG,EAAK0H,EAAU1D,EAAetG,KACvD5D,EAAQkG,GAAOzG,EAASK,KAAKJ,EAAUO,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,EAAYjE,EAAc,IAG/GwK,GAAWpL,GAAQ,CAACkB,EAAMiG,EAAK0H,EAAU1D,EAAetG,KACvD5D,EAAQkG,GAAOzG,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,EAAYjE,EAAc,IAG1FK,CACR,CCxBO,SAAS6N,GAAQ9O,GACvB,OAAOA,GAAQiG,WAChB,CCAO,SAAS8I,GAAU/O,EAAQkD,EAAO,IACxC,MAAM8L,EAAaF,GAAQ9O,GAC3B,OAAIgP,IAAelD,UACM,aAApBkD,EAAWxI,KACP,WAAW,EAGb1D,EAAUkM,EAAY9L,EAC9B,CCEO,SAAS+L,GAASjP,EAAQU,EAAWF,EAAa0O,GACxD,MAAMjO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,CAE3BqP,EADe3O,EAASsF,EAAO/E,EAASjB,GAExC,CACD,OAAOiB,CACP,CACD,MAAMsO,EAAY1D,GAAW5K,EAAQ8C,KACrC,IAAK,MAAOoD,EAAKnB,KAAUhG,EAAQ,CAClC,MAAMyB,EAASf,EAASsF,EAAOmB,EAAKlG,EAASjB,GACzCuP,EACHtO,EAAQ8C,IAAIoD,EAAK1F,GAEjBR,EAAQkG,GAAO1F,CAEhB,CACD,OAAOR,CACR,CCrBOK,eAAekO,GAAcxP,EAAQU,EAAWF,EAAa0O,EAAetD,GAClF,GAAIF,GAAY1L,GAAS,CACxB,MAAMyP,EAAmB,GACzB,UAAW,MAAMvO,KAAQlB,KAAU4L,GAClC6D,EAAiBpO,WAAWX,EAASQ,EAAMuO,EAAkBzP,IAE9D,OAAOyP,CACP,CACD,MAAMxO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,CAE3BqP,QADqB3O,EAASsF,EAAO/E,EAASjB,GAE9C,CACD,OAAOiB,CACP,CACD,MAAMsO,EAAY1D,GAAW5K,EAAQ8C,KACrC,UAAW,MAAOoD,EAAKnB,KAAUhG,EAAQ,CACxC,MAAMyB,QAAef,EAASsF,EAAOmB,EAAKlG,EAASjB,GAC/CuP,EACHtO,EAAQ8C,IAAIoD,EAAK1F,GAEjBR,EAAQkG,GAAO1F,CAEhB,CACD,OAAOR,CACR,CC1BY,MAACyO,GAAMzD,GAAa3E,EAAUC,EAAeqH,GAAWF,GAAgBO,GAAUO,ICNvFlO,eAAeqO,GAAiB3P,EAAQU,GAC9C,IAAKV,EACJ,OAGD,OAAO0E,EADYK,EAAK/E,IACW,CAACmH,EAAKrG,EAAO+N,EAAU1D,IAClDzK,EAASV,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAe0D,IAE3D,CCTO,SAASe,GAAY5P,EAAQU,GACnC,IAAKV,EACJ,OAGD,OAAOwE,EADYO,EAAK/E,IACM,CAACmH,EAAKrG,EAAO+N,EAAU1D,IAC7CzK,EAASV,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAe0D,IAE3D,CCNO,SAASgB,GAAW7P,EAAQU,EAAWF,GAC7C,GAAI8B,EAAQtC,IAAWuL,GAAMvL,GAC5B,IAAK,MAAMgG,KAAShG,EAAQ,CAE3B,IAAe,IADAU,EAASsF,EAAOhG,GAE9B,OAAO,CAER,MAED,IAAK,MAAOmH,EAAKnB,KAAUhG,EAAQ,CAElC,IAAe,IADAU,EAASsF,EAAOmB,EAAKnH,GAEnC,OAAO,CAER,CAEF,OAAO,CACR,CChBOsB,eAAewO,GAAgB9P,EAAQU,EAAWF,EAAaoL,GACrE,GAAIF,GAAY1L,GACf,UAAW,MAAMkB,KAAQlB,KAAU4L,GAAgB,CAElD,IAAe,UADMlL,EAASQ,EAAMlB,GAEnC,OAAO,CAER,MACK,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GACnC,IAAK,MAAMgG,KAAShG,EAAQ,CAE3B,IAAe,UADMU,EAASsF,EAAOhG,GAEpC,OAAO,CAER,MAED,IAAK,MAAOmH,EAAKnB,KAAUhG,EAAQ,CAElC,IAAe,UADMU,EAASsF,EAAOmB,EAAKnH,GAEzC,OAAO,CAER,CAEF,OAAO,CACR,CCvBY,MAAC+P,GAAQ9D,GAAazH,EAAYE,EAAiBkL,GAAaD,GAAkBE,GAAYC,ICvB1G,MAAME,GAAoBlE,SAASmE,UAc5B,SAASC,GAAkBvJ,GACjC,OAAOqJ,GAAkBjP,KAAKuO,KAAK3I,EACpC,CCHY,MAACwJ,GAAerL,OAAOsL,oBActBC,GAAcvL,OAAOwL,yBAoBrBC,GAAUzL,OAAO0L,eACjBC,GAAUP,GAAkBpL,OAAO4L,gBClCnCC,GAAS7L,OAAO8L,GCd7B,MAAM/I,OAAEA,IAAWlG,KCanB,MAAMD,KAAEA,IAASC,KCZL,MAACkP,GAAgB/L,OAAOgM,QCoB7BxP,eAAeyP,GAAsB/Q,EAAQU,EAAWF,EAAaS,EAAU,CAAA,GAOrF,aANMiK,GAAgBlL,GAAQsB,MAAOJ,EAAMiG,EAAK0H,EAAU1D,EAAetG,KACxE,MAAMpD,QAAef,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,GACvEtE,EAASkB,KACZR,EAAQkG,GAAO1F,EACf,IAEKR,CACR,CCPO,SAAS+P,GAAiBhR,EAAQU,EAAWF,EAAaS,EAAU,CAAA,GAO1E,OANAmK,GAAWpL,GAAQ,CAACkB,EAAMiG,EAAK0H,EAAU1D,EAAetG,KACvD,MAAMpD,EAASf,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,GACjEtE,EAASkB,KACZR,EAAQkG,GAAO1F,EACf,IAEKR,CACR,CCZO,SAASgQ,GAAajR,EAAQU,EAAUO,EAAU,CAAA,GAMxD,OALAmK,GAAWpL,GAAQ,CAACkB,EAAMiG,EAAK0H,EAAU1D,EAAetG,MACmB,IAAtEnE,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,KACzD5D,EAAQkG,GAAOjG,EACf,IAEKD,CACR,CCPOK,eAAe4P,GAAkBlR,EAAQU,EAAUO,EAAU,CAAA,GAMnE,aALMiK,GAAgBlL,GAAQsB,MAAOJ,EAAMiG,EAAK0H,EAAU1D,EAAetG,MACQ,UAAtEnE,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,KAC/D5D,EAAQkG,GAAOjG,EACf,IAEKD,CACR,CCRY,MCHCkQ,GAAc1K,EAAyB,UACvC2K,GAAU1K,EAAcyK,ICFxBE,GAAmB,4BACzB,SAASC,GAAYtR,GAC3B,OAAOA,EAAOoF,QAAQiM,GAAkB,OACzC,CCDO,SAASE,GAAavR,EAAQwR,GACpC,OAAIA,EACID,GAAajK,EAAStH,EAAQsR,KAE/BG,OAAOzR,EAAO0R,KAAK,KAC3B,CCPO,SAASC,GAAW3R,GAC1B,GAAKA,EAGL,OAAO+E,EAAK/E,GAAQC,MACrB,CCFY,MAAC2R,GAAY,CAAClM,EAAYmM,KACrC,MAAMC,EAAc,CAAA,EAIpB,OAHArR,EAAUiF,GAAY,CAACxE,EAAMiG,KAC5B2K,EAAY5Q,GAAQ2Q,EAAO1K,EAAI,IAEzB2K,CAAW,ECrBbC,GAAgB,UCAtB,MAAMA,GAAgB,UAChBC,GAAQ,QCDd,MAAMD,GAAgB,UAChBC,GAAQ,QCDd,MAAMD,GAAgB,UCAtB,MAAMA,GAAgB,UCoFf,SAASE,GAAWC,EAAQpR,EAAQ,GAC1C,OAAOoR,EAAOC,UAAUrR,EACzB,CCrFA,MAAMsR,GAAoB,oBACpBC,GAAW,KACXC,GAAgB,KAChBC,GAAgB,KAChBC,GAAmB,KAclB,SAASC,GAAaP,GAC5B,OAAOQ,mBAAmBR,EAAO9M,QAAQgN,IAAmB,IACpD,QAET,CAcO,SAASO,GAAaT,GAC5B,OAAOA,EAAO9M,QAAQiN,GAAU,SAC9BjN,QAAQkN,GAAe,QACvBlN,QAAQmN,GAAe,QACvBnN,QAAQoN,GAAkB,SAC7B,CC1CA,MAAMI,GAAgB,OAChBC,GAAa,OCAnB,MAAMC,GAAW,OAcV,SAASC,GAAiBb,GAChC,OAAOA,EAAO,GAAGc,aAClB,CAgBO,SAASC,GAAWf,GAC1B,OAAOa,GAAiBb,GAAUD,GAAWC,EAC9C,CAcO,SAASgB,GAAehB,GAC9B,OAAOa,GAAiBb,GAAUD,GAAWC,GAAQiB,aACtD,CCtCO,SAASC,GAAYpT,GAC3B,OAAO8O,GAAQ9O,IAASwG,IACzB,CCCO,SAAS6M,GAAQrT,GACvB,OAAQO,EAASP,EAClB,CCFY,MAACsT,GAAY7M,EAAyB,OACrC8M,GAAQ7M,EAAc4M,ICH7BE,GAAkB,QAClBC,GAAuB,QACtB,SAASC,GAAa1T,GAC5B,GAAIA,EAAQ,CACX,MAAMuG,EAAkB6M,GAAYpT,GACpC,GAAIwT,GAAgB7I,KAAKpE,IAAoBA,IAAoBkN,GAChE,OAAO,CAER,CACD,OAAO,CACR,CCVY,MAACE,GAAelN,EAAyB,UACxCmN,GAAWlN,EAAciN,ICAzBE,GAAgBpN,EAAyB,WACzCqN,GAAYpN,EAAcmN,ICF1BE,GAAoBtN,EAAyB,eAC7CuN,GAAgBtN,EAAcqN,ICF3C,MAAME,GAAmBxC,OAAO,uKCCpB,MAACyC,GAAazN,EAAyB,QACtC0N,GAASzN,EAAcwN,ICA7B,SAASE,GAAQpU,GACvB,OAAkB,IAAXA,CACR,CCHY,MAACqU,GAAY5N,EAAyB,gBACrC6N,GAAQ5N,EAAc2N,ICAtBE,GAAY9N,EAAyB,gBACrC+N,GAAQ9N,EAAc6N,KChB7BE,UAAEA,IAAcC,OAcTC,GAAUF,GCCVG,GAAYnO,EAAyB,cACrCoO,GAAQnO,EAAckO,ICHtBE,GAAYrO,EAAyB,cACrCsO,GAAQrO,EAAcoO,ICCtBE,GAAWvO,EAAyB,aACpCwO,GAAOvO,EAAcsO,ICH3B,SAASE,GAAUlV,GACzB,QAAIA,GACIA,aAAkBmV,OAG3B,CCHO,SAASC,GAAYpV,GAC3B,QAAIA,IACIkV,GAAUlV,IAAWgM,GAAQhM,IAAW0L,GAAY1L,GAG7D,CCpBA,MAAMqV,cAAEA,IAAkBX,OAcbY,GAAYD,GCCb,MAACE,GAAY9O,EAAyB,eACrC+O,GAAQ9O,EAAc6O,ICDtBE,GAAYhP,EAAyB,eACrCiP,GAAQhP,EAAc+O,ICDtBE,GAAWlP,EAAyB,cACpCmP,GAAOlP,EAAciP,ICDrBE,GAAYpP,EAAyB,qBACrCqP,GAAQpP,EAAcmP,ICDtBE,GAAgBtP,EAAyB,WACzCuP,GAAYtP,EAAcqP,IChB1BE,QAAoC,IAApBC,WAAWC,KCA3BC,QAAyC,IAAvBF,WAAWG,SAA2BA,QAAQC,UAAYD,QAAQC,SAASC,KCenG,SAASC,GAASxW,EAAQyW,GAAe,GAC/C,OAAOpW,QAAQL,IAAWyW,CAC3B,CCDO,SAASC,GAAS1W,EAAQ+C,GAChC,OAAOqR,GAAQpN,EAAQhH,EAAQ+C,GAChC,CClBA,MAAM4T,GAAaC,KAiCN,MAAAC,GAAYF,GAAWE,UC7BpC,SAASC,GAAkB9W,EAAQ+W,EAAUC,GAC5C,MAAMC,EAAUf,WAAWe,SAAWD,EACtC,IAAIE,EAMJ,OALIrL,GAAWoL,GACdC,EAAa,GAAGD,EAAQzQ,UAAUyQ,EAAQhR,YAAYO,OAC5CyQ,IACVC,EAAa,GAAGD,EAAQE,OAASF,EAAQtQ,OAAOH,WAAWyQ,EAAQG,QAE7D,IAAIC,MAAM,gBAAgBH,kBACtBL,GAAU7W,qBACR6W,GAAUE,KAAaE,EACrC,CACO3V,eAAegW,GAAYC,EAAWR,EAAUE,GACtD,MAAMjX,QAAeuX,EAErB,QADyB1L,GAAWkL,KAAiD,UAA9BA,EAAS/W,EAAQiX,MAChDP,GAAS1W,EAAQ+W,IACjCD,GAAkB9W,EAAQ+W,EAAUE,EAG7C,CCVA,MAAMO,GAAsBtB,WAAWuB,gBCchCnW,eAAeoW,GAAqB1X,EAAQU,EAAWF,EAAa0O,EAAetD,GACzF,GAAIF,GAAY1L,GAAS,CACxB,MAAMyP,EAAmB,GACzB,UAAW,MAAMvO,KAAQlB,KAAU4L,GAAgB,CAClD,MAAMnK,QAAef,EAASQ,EAAMuO,EAAkBzP,GAClDO,EAASkB,IACZgO,EAAiBpO,KAAKI,EAEvB,CACD,OAAOgO,CACP,CACD,MAAMxO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,CAC3B,MAAMyB,QAAef,EAASsF,EAAO/E,EAASjB,GAC1CO,EAASkB,IACZ4N,EAAgB5N,EAEjB,CACD,OAAOR,CACP,CACD,MAAMsO,EAAY1D,GAAW5K,EAAQ8C,KACrC,UAAW,MAAOoD,EAAKnB,KAAUhG,EAAQ,CACxC,MAAMyB,QAAef,EAASsF,EAAOmB,EAAKlG,EAASjB,GAC/CO,EAASkB,KACR8N,EACHtO,EAAQ8C,IAAIoD,EAAK1F,GAEjBR,EAAQkG,GAAO1F,EAGjB,CACD,OAAOR,CACR,CCnCO,SAAS0W,GAAgB3X,EAAQU,EAAWF,EAAa0O,GAC/D,MAAMjO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,CAC3B,MAAMyB,EAASf,EAASsF,EAAO/E,EAASjB,GACpCO,EAASkB,IACZ4N,EAAgB5N,EAEjB,CACD,OAAOR,CACP,CACD,MAAMsO,EAAY1D,GAAW5K,EAAQ8C,KACrC,IAAK,MAAOoD,EAAKnB,KAAUhG,EAAQ,CAClC,MAAMyB,EAASf,EAASsF,EAAOmB,EAAKlG,EAASjB,GACzCO,EAASkB,KACR8N,EACHtO,EAAQ8C,IAAIoD,EAAK1F,GAEjBR,EAAQkG,GAAO1F,EAGjB,CACD,OAAOR,CACR,CC5BY,MAAC2W,GAAa3L,GAAajL,EAAiBQ,EACvDwP,GAAkBD,GAAuB4G,GAAiBD,ICCpD,SAASG,GAAY7X,EAAQU,EAAWF,EAAa0O,GAC3D,MAAMjO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,EAEZ,IADAU,EAASsF,EAAO/E,EAASjB,IAEvCqP,EAAgBrJ,EAEjB,CACH,KAAQ,CACN,MAAMuJ,EAAY1D,GAAW5K,EAAQ8C,KACrC,IAAK,MAAOoD,EAAKnB,KAAUhG,EAAQ,EAEnB,IADAU,EAASsF,EAAOmB,EAAKlG,EAASjB,KAExCuP,EACHtO,EAAQ8C,IAAIoD,EAAKnB,GAEjB/E,EAAQkG,GAAOnB,EAGjB,CACD,CACD,OAAO/E,CACR,CCxBOK,eAAewW,GAAiB9X,EAAQU,EAAWF,EAAa0O,EAAetD,GACrF,GAAIF,GAAY1L,GAAS,CACxB,MAAMyP,EAAmB,GACzB,UAAW,MAAMvO,KAAQlB,KAAU4L,IACqB,UAA7ClL,EAASQ,EAAMuO,EAAkBzP,IAC1CyP,EAAiBpO,KAAKH,GAGxB,OAAOuO,CACP,CACD,MAAMxO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,EAEZ,UADMU,EAASsF,EAAO/E,EAASjB,IAE7CqP,EAAgBrJ,EAEjB,CACH,KAAQ,CACN,MAAMuJ,EAAY1D,GAAW5K,EAAQ8C,KACrC,UAAW,MAAOoD,EAAKnB,KAAUhG,EAAQ,EAEzB,UADMU,EAASsF,EAAOmB,EAAKlG,EAASjB,KAE9CuP,EACHtO,EAAQ8C,IAAIoD,EAAKnB,GAEjB/E,EAAQkG,GAAOnB,EAGjB,CACD,CACD,OAAO/E,CACR,CCrCY,MAAC6H,GAASmD,GAAatH,EAAaC,EAAkBqM,GAAcC,GAAmB2G,GAAaC,ICtBhH,SAASC,GAAW/J,GACnB,MAAO,IAAIlB,IACFkL,IACP,IAAIhS,EAAQgS,EAIZ,OAHAhK,EAASlB,GAAU5L,IAClB8E,EAAQ9E,EAAK8E,EAAM,IAEbA,CAAK,CAGf,CAcY,MAACiS,GAAOF,GAAWtX,GAclByX,GAAYH,GAAW1T,GCtCpC,SAAS0T,GAAW/J,GACnB,MAAO,IAAIlB,IACHxL,MAAO0W,IACb,IAAIhS,EAAQgS,EAIZ,aAHMhK,EAASlB,GAASxL,MAAOJ,IAC9B8E,QAAc9E,EAAK8E,EAAM,IAEnBA,CAAK,CAGf,CAeY,MAACmS,GAAYJ,GAAWxW,GAevB6W,GAAiBL,GAAWxT,GC7B7B,MAAC8T,GAAS5N,GAAiB,MCRhC,MAAM6N,GACZ5K,KAAO5K,EAAUQ,KACjB,SAAAR,GACC,CAWD,MAAA6K,CAAOC,GACN2K,cAAc3K,GACdb,KAAKW,KAAKI,OAAOF,EACjB,CACD,GAAAG,CAAIH,GACH,OAAOb,KAAKW,KAAKK,IAAIH,EACrB,CACD,GAAA/J,CAAI+J,GACH,OAAOb,KAAKW,KAAK7J,IAAI+J,EACrB,CAaD,GAAA7J,CAAIiK,EAAUC,GAEb,MAAML,EAAK4K,aAAY,KACtBxK,GAAU,GACRC,GAEH,OADAlB,KAAKW,KAAK3J,IAAI6J,EAAIP,IACXO,CACP,CAUD,KAAAQ,GACC,MAAMF,EAAcnB,KACpBmB,EAAYR,KAAKtL,SAASwL,IACzBM,EAAYP,OAAOC,EAAG,GAEvB,EAEU,MAAC6K,GAAY3V,EAAUwV,IChD5B,MAAMI,GACZC,cAAgB,CAAA,EAChB,WAAA1S,CAAY2S,EAAWC,GAClBtY,EAASsY,IACZ5N,GAAO8B,KAAM8L,GACb9L,KAAK6L,UAAYA,EACjBF,GAAMI,OAAO/U,IAAI6U,EAAWC,IAE5B5N,GAAO8B,KAAM6L,EAEd,ECRK,SAASG,GAAQ1W,GACvB,OAAO,IAAI8S,QAAQ9S,EACpB,CCpBO,MAAM2W,GACZhZ,OACA,WAAAiG,CAAYjG,EAAS,IAEpB,GADA+M,KAAK/M,OAASA,EACC,OAAXA,GAAqC,iBAAXA,EAC7B,OAAOA,EAERoL,GAAWpL,GAASiZ,IACnBjZ,EAAOiZ,GAAY,IAAID,GAAMhZ,EAAOiZ,GAAU,IAE/ClM,KAAKmM,KAAO,IAAIC,MAAMnZ,EAAQ,CAC7B6D,IAAG,CAACuV,EAAaH,KAChBI,QAAQC,IAAIF,EAAaH,EAAUG,EAAYH,IACxCG,EAAYH,IAEpBlV,IAAG,CAACqV,EAAaH,EAAUjT,KAC1BqT,QAAQC,IAAIF,EAAaH,EAAUG,EAAYH,IAC/CG,EAAYH,GAAY,IAAID,GAAMhT,IAC3B,IAGT,ECCK,MAAMuT,GACZC,YAAc,EACdC,MAAQ,GACRC,UAAY,EAeZ,GAAA7V,GACC,IAAIpC,EAASsL,KAAK0M,MAAME,QAOxB,OANIpZ,EAASkB,GACZsL,KAAK2M,aAELjY,EAASsL,KAAKyM,YACdzM,KAAKyM,eAEC/X,CACP,CAkBD,IAAAmY,CAAKhM,GACJb,KAAK0M,MAAMpY,KAAKuM,GAChBb,KAAK2M,YACL,MAAMG,EAAW9M,KAAKyM,YAAc,EAC9BM,EAAc/M,KAAKyM,cAAgBzM,KAAK2M,UAC1CG,GAAYC,GACf/M,KAAKgN,OAEN,CACD,KAAAA,GACChN,KAAKyM,YAAc,EACnBzM,KAAK0M,MAAMxZ,OAAS,EACpB8M,KAAK2M,UAAY,CACjB,EAeU,MAACM,GAASlX,EAAUyW,ICnFzB,MAAMU,GACZ,WAAAhU,CAAYiU,EAAgB,IAC3BnN,KAAKoN,MAAQD,CACb,CAcD,OAAAE,CAAQjT,GACP,OAAO4F,KAAKoN,MAAMhT,EAClB,CAcD,OAAAkT,CAAQlT,EAAKnB,GACZ+G,KAAKoN,MAAMhT,GAAOnB,CAClB,CAeD,KAAAoI,GACCrB,KAAKoN,MAAQ,EACb,CAeD,UAAAG,CAAWnT,GACV4F,KAAKoN,MAAMhT,GAAO,IAClB,EAgBK,SAASoT,GAAeL,GAC9B,OAAO,IAAID,GAAeC,EAC3B,CCpFO,SAASM,GAAQxa,GACvB,OAAO,EAAWwa,GAAQxa,GAAU+E,EAAKyV,GAC1C,CACA,MAAMC,GAAYvE,WAAWwE,WAAWC,cACxC,GAAIF,GACHrP,GAAWqP,IAAW,CAACzU,EAAOmB,KACzB2M,GAAU9N,IAAUA,IACvBwU,GAAQrT,GAAOnB,EACf,IAEFvF,EAAUga,GAAUG,QAAS5U,IAC5BwU,GAAQxU,EAAM6U,OAAS7U,EAAM8U,OAAO,SAE/B,GAAIJ,UAAUD,UAAW,CAC/B,IAAIM,EAAsBL,UAAUD,UAAUtH,cAC9C4H,EAAsBA,EAAoB3V,QAAQ,KAAM,KACxD2V,EAAsBA,EAAoB3V,QAAQ,YAAa,IAE/D3E,EADuBsa,EAAoB1V,MAAM,SACtBnE,IAC1BsZ,GAAQtZ,IAAQ,CAAI,GAEtB,CCrBO,SAAS8Z,GAASzE,EAAM0E,EAAW5Y,EAAU6Y,GAEnD,OADA3E,EAAK4E,iBAAiBF,EAAW5Y,EAAU6Y,GACpC3E,CACR,CCVa,MAAA6E,GAAiBC,SAASC,uBAAuBhM,KAAK+L,UCG5D,SAASE,GAAOC,EAAY9X,GAElC,OADA8X,EAAWC,YAAY/X,GAChBA,CACR,CCIO,SAASgY,GAAcnF,EAAMoF,GACnC,OAAIrZ,EAAQqZ,GACJ/J,GAAU+J,EAAQrU,EAASqU,GAASza,GACnCqV,EAAKqF,aAAa1a,OAG3BkK,GAAWuQ,GAAQ,CAACza,EAAMiG,KACzBoP,EAAKsF,aAAa1U,EAAKjG,EAAK,IAEtBqV,EACR,CC5BA,MAEMuF,GAAY,aACZC,GAAU,cACVC,GAAa,KASNC,GAAaZ,SAASa,uBAAuB5M,KAAK+L,UASlDc,GAAWd,SAASe,qBAAqB9M,KAAK+L,UAS9CgB,GAAUhB,SAASiB,eAAehN,KAAK+L,UASvCkB,GAAgBlB,SAASkB,cAAcjN,KAAK+L,UAS5CmB,GAAmBnB,SAASmB,iBAAiBlN,KAAK+L,UC5C/D,MAAMoB,GAAqBpB,SAASqB,cAAcpN,KAAK+L,UAuBhD,SAASsB,GAASC,GACxB,MAAMC,EAAMxE,GAAOuE,IAAQA,GAAO,GAAGA,OAKrC,MA5B+B,CAACrG,GACzBwC,IAAS+D,IACf9B,GAASzE,EAAM,OAAQuG,GAAQ,GAC/B9B,GAASzE,EAAM,QAASuG,GAAQ,GAChCvB,GAAOgB,GAAc,QAAShG,EAAK,IAwB7BwG,CAJMrB,GAAce,GAAmB,UAAW,CACxDnb,MAAO,GACPub,QAGF,CCnBO,SAASG,GAAgBhP,GAC/B,MAAMiP,EAAQ5B,SAAS6B,WAEvB,MAD8B,gBAAVD,GAAqC,cAAVA,GAAmC,aAAVA,GAEhE,GAAajP,KAEjBA,GACHgN,GAASK,SAAU,mBAAoBrN,IAEjC,EACR,CACAgP,IAAgB,KACf,MAAMG,EAAYd,GAAQ,WAE1BM,GADoBQ,GAAaA,EAAUvB,aAAa,eAAkB,SACtD,IC/BrB,MAAMwB,GAAWC,SAASD,SACpBE,GAA+B,UAAbF,GAAwB,KAAO,MACjDG,GAAWF,SAASE,SAUbC,GAAO,CACnBC,SAAU,CACTC,MAAOhD,UAAUiD,qBAElBC,KAAM,CACLpX,KAAM+W,GACNH,YACAE,oBCfK,SAASO,KACf5S,GAAOuS,GAAM,CACZM,WAAYzC,SAAS0C,KAAKC,aAC1BC,UAAW5C,SAAS0C,KAAKG,YACzBC,aAAcC,OAAOC,YACrBC,YAAaF,OAAOG,YAEtB,CAaO,SAASC,KACfX,IACD,CACAb,GAAgBwB,IAChBxD,GAASoD,OAAQ,OAAQI,IAAkB,GAC3CxD,GAASoD,OAAQ,SAAUI,IAAkB,GCpBzBC,EAAAC,cAAA,EACpB,SAAoBC,GACnB,IACCA,IAAarE,WAAW,WACxBoE,EAAAA,UAAW,CACX,CAAC,MAAOE,GACRF,EAAAA,UAAW,CACX,CACF,CACAG,EAAW,IACHC,eAkBD,MAAMC,GACZ,WAAA9Y,CAAYiU,GACPnN,KAAK2R,WACR3R,KAAKiS,MAAQF,cAEd/R,KAAKkS,QAAU1E,GAAeL,EAC9B,CACDwE,SAAWA,EAAAA,SAiBX,OAAArE,CAAQlT,EAAKnB,GAIZ,OAHI+G,KAAK2R,UACR3R,KAAKiS,MAAM3E,QAAQlT,EAAMiD,GAASpE,GAAUA,EAAQ6Q,GAAU7Q,IAExD+G,KAAKkS,QAAQ5E,QAAQlT,EAAKnB,EACjC,CAgBD,OAAAoU,CAAQjT,GACP,MAAMjG,EAAO6L,KAAKkS,QAAQ7E,QAAQjT,GAClC,OAAI5G,EAASW,GACLA,GAEHX,EAASW,IAAS6L,KAAK2R,SACpB3R,KAAKiS,MAAM5E,QAAQjT,QAD3B,CAGA,CAkBD,KAAAiH,GACKrB,KAAK2R,UACR3R,KAAKiS,MAAM5Q,QAEZrB,KAAKkS,QAAQ7Q,OACb,CAkBD,UAAAkM,CAAWnT,GACN4F,KAAK2R,UACR3R,KAAKiS,MAAM1E,WAAWnT,GAEvB4F,KAAKkS,QAAQ3E,WAAWnT,EACxB,ECtIF,MAAM+X,GAAgB,CAACC,EAAOC,IACtB,SAASD,gBAAoBC,KAExBC,GAAS,CACrBC,MAAOJ,GAAc,OAAQ,WAC7BK,UAAWL,GAAc,OAAQ,WACjCM,OAAQN,GAAc,OAAQ,WAC9BO,QAASP,GAAc,OAAQ,yHCKzB,SAAaQ,EAAQC,GAC3B,OAAOD,EAASC,CACjB,UCMO,SAAezb,EAAQ8J,GAC7B,IACIhI,EADA4Z,EAAQ1b,EAYZ,MAVkB,IAAIhB,KACP,OAAV0c,GACHA,IAEGA,GAAS,IACZ5Z,EAAQgI,KAAY9K,GACpB0c,EAAQ,MAEF5Z,EAGT,4DCrBO,SAAwBhG,EAAQ0F,GACtC,MAAMma,EAAe,CAAA,EAIrB,OAHApf,EAAUT,GAAQ,CAACkB,EAAMiG,KACxB0Y,EAAana,EAAWyB,IAAQjG,CAAI,IAE9B2e,CACR,QCPO,SAAa7R,EAAU9J,GAC7B,MAAO,IAAIhB,IACH8K,KAAY9K,EAAKkB,OAAO,EAAGF,GAEpC,WhCuBO,SAAgBlE,EAAQ+W,EAAUE,GACxC,OAAI7B,GAAYpV,IAAWoV,GAAY2B,GAC/BO,GAAYtX,EAAQ+W,EAAUE,KAEbpL,GAAWkL,KAA2C,IAA9BA,EAAS/W,EAAQiX,MAC1CP,GAAS1W,EAAQ+W,IACjCD,GAAkB9W,EAAQ+W,EAAUE,EAG7C,wCiCnCO,SAAgB/S,EAAQ8J,GAC9B,IACIhI,EADA4Z,EAAQ1b,EAaZ,MAXmB,IAAIhB,KACR,OAAV0c,GACHA,IAEGA,GAAS,EACZ5Z,EAAQgI,KAAY9K,GAEpB0c,EAAQ,KAEF5Z,EAGT,YCVO,SAAiB4D,EAAYkW,EAAUC,GAC7C,MAAM9e,EAAUyO,GAAI9F,GAAa1I,GACzB2K,GAAW3K,GAAQA,EAAKoO,KAAKwQ,GAAY5e,IAEjD,OAAO,EAAiB+J,GAAO8U,EAAc9e,GAAWA,CACzD,wCCXO,SAAsB+e,EAAOC,GACnC,OAAc,IAAVD,IAGkB,IAAlBC,EACI,EAEAA,EAAgBD,EAAS,IAClC,czERO,SAAmBhgB,GACzB,IAAIyB,EAAS,GAUb,OATAzB,EAAOoF,QAAQ2M,GAAe,KAAK5L,OACjCd,MAAM,KACNjD,SAAQ,CAAClB,EAAMJ,KAEdW,GADa,IAAVX,EACOI,EAAKiS,cAELjS,EAAK,GAAG8R,cAAgB9R,EAAKkF,MAAM,GAAG+M,aAChD,IAEI1R,CACR,UnCsBO,SAAeye,GACrB,OAAOpd,EAAU+J,GAAO,CAACqT,GAC1B,U6GpCO,SAAejc,EAAOkc,EAAO,GACnC,MAAMC,EAAU,GAChB,IAAItf,EAAQ,EAUZ,OATAmD,EAAM7B,SAAQ,CAAClB,EAAMiG,KACdA,EAAMgZ,IACXC,EAAQ/e,KAAK,IACT8F,GACHrG,KAGFsf,EAAQtf,GAAOO,KAAKH,EAAK,IAEnBkf,CACR,gBrEuBO,SAAqBlO,EAAQiO,GACnC,OAAOjO,EAAOmO,MAAM,IAAI5O,OAAO,gBAAgB0O,KAAS,KACzD,UsEnCO,SAAengB,GACrB,GAAIA,EAAQ,CACX,GAAI+G,EAAS/G,GACZ,OAAO+I,GAAY/I,GACb,GAAIsC,EAAQtC,GAClB,OAAOD,EAAWC,GACRA,EAAOoO,MACjBpO,EAAOoO,QACGpO,EAAOC,SACjBD,EAAOC,OAAS,EAEjB,CACD,OAAOD,CACR,mD1BgEO,WAENwN,GADWW,WAAWZ,GAAM,IACjBzM,IACV2X,GAAU9K,OAAO7M,EAAM,GAEzB,gB/ECO,WAEN0M,GADWW,WAAWZ,GAAM,IACjBzM,IACVuN,GAAOV,OAAO7M,EAAM,GAEtB,UqE3FO,SAAed,GACrB,OAAOwX,GAAoBxX,EAC5B,eqCHO,SAAoBA,GAC1B,OAAOA,EAAOoG,OACf,wBVWoB,CAACJ,EAAOsa,KAC3B,MAAMpH,EAAO9O,GAASpE,GAASA,EAAQ6Q,GAAU7Q,GACjD,GAAkB,UAAdsa,GAAuC,YAAdA,EAC5B,OAAOjH,QAAQkH,MAAM,KAAKrH,IAAQ,GAAGmG,GAAOiB,uDAE7CjH,QAAQC,IAAI,KAAKJ,IAAQ,GAAGmG,GAAOiB,sDAA8D,cAiBzE,CAACA,EAAWnB,EAAOqB,KAC3CnB,GAAOiB,GAAapB,GAAcC,EAAOqB,EAAW,YWjC9C,SAAiBxgB,GACvB,GAAI+F,EAAc/F,GAAS,CAC1B,MAAMygB,EAAa1b,EAAK/E,GAClB0gB,EAAmBD,EAAWxgB,OAC9B0gB,EAAe,CAAA,EACrB,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAkBE,IAAK,CAC1C,MAAMC,EAAUJ,EAAWG,GACrB1f,EAAOlB,EAAO6gB,GACDrK,GAAStV,KAE3Byf,EAAaE,GAAW3f,EAEzB,CACD,OAAOyf,CACP,CACD,OAAO3gB,EAAO8I,QAAQ5H,GACdsV,GAAStV,IAElB,gBClBO,SAAqBya,GAC3B,MAAMmF,EAAgB,GAMtB,OALA1V,GAAWuQ,GAAQ,CAACza,EAAMiG,KACrB5G,EAASW,IACZ4f,EAAczf,KAAK8F,EACnB,IAEK2Z,CACR,6HCHO,SAAoB9gB,EAAQU,EAAU4D,GAC5C,MAAMzD,EAAcb,EAAOC,OACrB8gB,EAAQ,GACd,IAAK,IAAIjgB,EAAQ,EAAEA,EAAQD,EAAaC,IACvCigB,EAAMjgB,GAASJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAayD,GAEpE,OAAO6Q,QAAQ6L,IAAID,EACpB,qBCPO,SAA0B/gB,EAAQU,EAAU4D,GAClD,MAAMzD,EAAcb,EAAOC,OACrB8gB,EAAQ,GACd,IAAK,IAAIjgB,EAAQ,EAAEA,EAAQD,EAAaC,IACvCigB,EAAMjgB,GAASJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAayD,GAEpE,OAAO6Q,QAAQ8L,WAAWF,EAC3B,8CCZO,SAAiBnX,EAAYlJ,GACnC,MAAMib,EAAS,CAAA,EACf,IAAIla,EAQJ,OAPAhB,EAAUmJ,GAAa1I,IACtBO,EAASf,EAASQ,GACbya,EAAOla,KACXka,EAAOla,GAAU,GAElBka,EAAOla,IAAS,IAEVka,CACR,aCZO,SAAkB/R,EAAYR,GACpC,IAAItF,EAAQ,EAMZ,OALArD,EAAUmJ,GAAa1I,IAClBA,EAAKkI,IACRtF,GACA,IAEKA,CACR,oBCRO,SAAyB8F,EAAYR,GAC3C,IAAItF,EAAQ,EAMZ,OALArD,EAAUmJ,GAAa1I,IACjBA,EAAKkI,IACTtF,GACA,IAEKA,CACR,UlB+HO,SAAeod,GACrB,OAAO,IAAInC,GAAMmC,EAClB,8BmBtIO,SAAelT,EAAUmT,EAAQnT,EAAS/N,QAChD,MAAMmhB,EAAU,GACVC,EAAU,IAAIC,KAEnB,GADAF,EAAQ/f,QAAQigB,GACZF,EAAQnhB,SAAWkhB,EAAO,CAC7B,MAAM1f,EAASuM,KAAYoT,GAE3B,OADArhB,EAAWqhB,GACJ3f,CACP,CACD,OAAO4f,CAAO,EAEf,OAAOA,CACR,eCbO,SAAoBrT,EAAUmT,EAAQnT,EAAS/N,QACrD,MAAMmhB,EAAU,GACVC,EAAU,IAAIC,KAEnB,GADAF,EAAQG,WAAWD,GACfF,EAAQnhB,SAAWkhB,EAAO,CAC7B,MAAM1f,EAASuM,KAAYoT,GAE3B,OADArhB,EAAWqhB,GACJ3f,CACP,CACD,OAAO4f,CAAO,EAEf,OAAOA,CACR,aCRO,SAAkBrT,EAAUC,GAClC,SAASuT,KAAate,GACjBse,EAAU5T,KAAON,IACpBe,GAAOV,OAAO6T,EAAU5T,IAEzB4T,EAAU5T,GAAKU,IAAM,KACpBkT,EAAUxT,YAAY9K,GACtBse,EAAU5T,GAAKN,EAAK,GAClBW,EACH,CASD,OARAuT,EAAU5T,GAAKN,GACfkU,EAAUxT,SAAWA,EAASsB,KAAKkS,GACnCA,EAAUpT,MAAQ,KACboT,EAAU5T,KAAON,KACpBe,GAAOV,OAAO6T,EAAU5T,IACxB4T,EAAU5T,GAAKN,GACf,EAEKkU,CACR,WCzBO,SAAgBxhB,GACtB,OAAOA,EAAS,CACjB,uCCHO,SAAgBA,EAAQgG,GAC9B,OAAOhG,EAASgG,CACjB,uBCCyB,CAAC/B,EAAOC,EAAS,EAAGC,EAAOF,EAAMhE,SAClD+D,EAAKC,EAAO,EAAGE,EAAOD,mJCHvB,SAAsBlE,GAC5B,OAAQ+G,EAAS/G,IAAWA,GAAYO,EAASP,IAAWyhB,OAAOxZ,KAAKjI,IAAYyhB,OAAOC,MAAM,EAClG,qElCmBO,SAAqBnL,EAAM0E,EAAW5Y,EAAU6Y,GAEtD,OADA3E,EAAKoL,oBAAoB1G,EAAW5Y,EAAU6Y,GACvC3E,CACR,wBmCrCO,YAAqBzJ,GAC3B,OAAId,GAAQc,EAAQ,IACZxL,kBAAkB4B,GACxB,OAAO6M,GAAMjD,GAASxL,MAAOqF,GACrBoJ,GAAM7M,GAAM5B,MAAOJ,GAClByF,EAAOzF,MAGnB,EAEQ,YAAYgC,GAClB,OAAO6M,GAAMjD,GAAUnG,GACfoJ,GAAM7M,GAAOhC,GACZyF,EAAOzF,MAGlB,CACA,6LCHO,SAAmB0I,EAAYgE,EAAIxE,EAAe,MACxD,MAAM3H,EAASmI,EAAWgY,WAAU,CAAC1Y,EAASpI,IACtCmI,GAAeC,EAASpI,EAAO8I,EAAYgE,EAAIxE,KAEvD,OAAoB,IAAZ3H,GAAyBA,CAClC,iCCLO,SAAkBmI,EAAYgE,EAAIxE,EAAe,MACvD,MAAM3H,EAASmI,EAAWiY,MAAK,CAAC3Y,EAASpI,IACjCmI,GAAeC,EAASpI,EAAO8I,EAAYgE,EAAIxE,KAEvD,OAAoB,IAAZ3H,GAAyBA,CAClC,UCPO,SAAewC,EAAOE,GAC5B,OAAO,EAASF,EAAMmC,MAAM,EAAGjC,GAAQF,EAAM,EAC9C,YCDO,SAAiBjE,EAAQ8hB,EAAQ,GACvC,IAAK9hB,EACJ,OAED,IAAIiC,EAAcjC,EAClB,IAAK,IAAI4gB,EAAI,EAAGA,EAAIkB,EAAOlB,IAC1B3e,EAAcA,EAAY8f,QAAO,CAACC,EAAeC,IACzCD,EAAcE,OAAO1f,EAAYyf,KACtC,IAEJ,OAAOhgB,CACR,yGC1BOX,eAA4BtB,EAAQqC,GAC1C,MAAMwP,EAAS,GACTnM,EAAa,GACnB,IAAIyc,EAAe,EACnBniB,EAAOoC,SAAQ,CAAClB,EAAMiG,KACrB0K,EAAOsQ,GAAgBjhB,EACvBwE,EAAWyc,GAAgBjhB,EAC3BihB,GAAc,IAEf,IAAK,IAAIrhB,EAAQ,EAAGA,EAAQqhB,EAAcrhB,UACnCuB,EAASwP,EAAO/Q,GAAQ4E,EAAW5E,IAE1C,OAAOd,CACR,WCVO,SAAgBA,EAAQqC,GAC9B,MAAM+f,EAASrT,GAAU/O,GACnB2G,EAASyb,EAAO/gB,MAAQ+gB,EAAOhT,IACrC,GAAIzI,GAAUkF,GAAWlF,GAAS,CACjC,MAAM0b,EAAc1b,EAAO2I,KAAK8S,GAChCpiB,EAAOoC,SAASlB,IACf,MAAMO,EAASY,EAASnB,EAAMkhB,GAC9BC,EAAY5gB,EAAO,GAEpB,MAAUoK,GAAWuW,EAAOre,KAC5B/D,EAAOoC,SAAQ,CAAClB,EAAMiG,KACrB,MAAM1F,EAASY,EAASnB,EAAMiG,EAAKib,GACnCA,EAAOre,IAAIoD,EAAK1F,EAAO,IAGxBzB,EAAOoC,SAAQ,CAAClB,EAAMiG,KACrB,MAAM1F,EAASY,EAASnB,EAAMiG,EAAKib,GACnCA,EAAOjb,GAAO1F,CAAM,IAGtB,OAAO2gB,CACR,2Q5GVO,SAAoBpiB,GAC1B,GAAIO,EAASP,GACZ,OAAO6Q,GAAc7Q,EAEvB,qB6GNO,SAA0BA,GAChC,GAAIA,EACH,OAAOA,EAAOmS,UAAUnS,EAAOsiB,YAAY,KAAO,EAEpD,gBCJO,SAAqBtiB,GAC3B,GAAIA,EACH,OAAOA,EAAOmS,UAAUnS,EAAOsiB,YAAY,KAAO,EAEpD,eCAO,SAAoB1Y,EAAYR,EAAe,MACrD,OAAOa,GAAwBL,EAAYR,GAAc,EAC1D,cCDO,SAAmBQ,EAAYR,GACrC,OAAOO,GAAyBC,EAAYR,GAAc,GAAO,EAClE,yBCJO,SAA8BpJ,EAAQ+C,GAC5C,IAAIwf,EAAc,EAUlB,OATA/d,EAAWxE,GAAQ,CAACkB,EAAMJ,KACzByhB,EAAczhB,EACViC,GAAU7B,IACbqhB,EAAczhB,EAAQ,GACf,MAKFyhB,CACR,6ECVO,SAAiB3Y,EAAYlJ,GACnC,MAAMmf,EAAe,CAAA,EAQrB,OAPApf,EAAUmJ,GAAa1I,IACtB,MAAMD,EAAUP,EAASQ,GACpB2e,EAAa5e,KACjB4e,EAAa5e,GAAW,IAEzB4e,EAAa5e,GAASI,KAAKH,EAAK,IAE1B2e,CACR,QCNO,SAAS9R,EAAI/N,EAAQwiB,EAAQtgB,GACnC,GAAImR,GAAQrT,IAAWqT,GAAQmP,GAC9B,OAAO,EAER,GAAIpY,GAASpK,GACZ,OAAIoK,GAASoY,GACLxiB,EAAOyiB,SAASD,EAAQtgB,GAE5BkP,GAAQoR,GACJA,EAAO7X,KAAK3K,GAEhB6L,GAAW2W,GACPniB,QAAQmiB,EAAOxiB,IAEhB+P,GAAMyS,GAASthB,GACdb,QAAQ0N,EAAI/N,EAAQkB,MAG7B,GAAIoB,EAAQtC,GAAS,CACpB,GAAIoK,GAASoY,GACZ,OAAOxiB,EAAOyiB,SAASD,EAAQtgB,GAEhC,GAAIkP,GAAQoR,GACX,OAAOzS,GAAM/P,GAASkB,GACdA,EAAKyJ,KAAK6X,KAGnB,GAAIlgB,EAAQkgB,GACX,OAAOzS,GAAMyS,GAASthB,GACdb,QAAQ0N,EAAI/N,EAAQkB,KAG7B,CACD,OAAO,CACR,epLHO,SAAoBlB,KAAW0F,GACrC,GAAK1F,EAGL,OAAOK,QAAQqF,EAAWmc,MAAM3gB,IAC/B,MAAMyE,EAAYR,EAAOjE,GACzB,GAAyB,IAArByE,EAAU1F,OACb,OAAOuF,EAAOxF,EAAQkB,GAChB,CACN,MAAM0E,EAAWD,EAAUE,MACrBC,EAAoBjC,EAAI8B,EAAW3F,GACzC,QAAI8F,GACIN,EAAOM,EAAmBF,EAGlC,KAEH,+FqLtDO,SAAkBoI,KAAa9K,GACrC,GAAI2I,GAAWmC,GACd,OAAOA,KAAY9K,EAErB,gBCH2B,CAACwf,EAAYzJ,EAAU0J,KAC7C1J,IAAa1Y,EAASmiB,EAAWzJ,MACpCyJ,EAAWzJ,GAAY0J,GAEjBD,aCDD,SAAiB1iB,EAAQ+C,EAAQ6f,EAAU1f,GACjD,GAAI3C,EAASP,GAAS,CACrB,GAAI6L,GAAW9I,GACd,OAAI6f,EACIpU,GAAMzL,EAAQ6f,EAAU1f,GAEzBH,KAAUG,GACX,GAAI6C,EAAchD,GAExB,OADAA,EAAO6f,GAAY5iB,EACZ+C,CAER,CACF,0BCTOzB,eAAuBtB,EAAQ6iB,GACrC,MAAMhiB,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQ,EAAGA,EAAQD,EAAaC,IAAS,CACjD,MAAM6F,EAAS3G,EAAOc,SAChB6F,EAAOkc,EAAe/hB,EAAOd,EAAQa,EAC3C,CACD,OAAOb,CACR,WCLsB,CAAC4J,EAAY5D,IAC3B4G,GAAKhD,GAAa1I,IACxBA,EAAK8E,EAAM,gBCXN,SAAmBhG,GACzB,OAAOA,EAAS,CACjB,YCAO,SAAiB4J,EAAYR,EAAe,MAClD,MAAMyW,EAAe,CAAA,EAIrB,OAHApf,EAAUmJ,GAAa1I,IACtB2e,EAAa3e,EAAKkI,IAAiBlI,CAAI,IAEjC2e,CACR,sBCVO,SAAiB5b,GACvB,OAAOA,EAAMmC,MAAM,EAAGnC,EAAMhE,OAAS,EACtC,kB3GoDO,SAAuBiS,EAAQpR,EAAQ,GAC7C,OAAOoR,EAAO9L,MAAM,GAAY,EAATtF,EACxB,kBAtDO,SAAuBoR,EAAQpR,EAAOgiB,GAC5C,OAAO5Q,EAAO9L,MAAM,EAAGtF,GAASgiB,EAAO5Q,EAAO9L,MAAMtF,EAAOoR,EAAOjS,OACnE,iB4GAO,SAAsBgE,KAAU8e,GACtC,OAAO/hB,EAAgBiD,GAAQ/C,IAI9B,GAHqBsD,EAAWue,GAASC,GACjCA,EAAUP,SAASvhB,KAG1B,OAAOA,CACP,GAEH,ahEsDO,SAAkB8M,EAAUC,GAClC,OAAOwK,GAAU1U,IAAIiK,EAAUC,EAChC,0BiElEO,SAAgBjO,EAAQ+C,EAAS,IACvC,GAAK/C,EAML,OAHAoL,GAAWpL,GAAQ,CAACkB,EAAMiG,KACzBpE,EAAO7B,GAAQiG,CAAG,IAEZpE,CACR,gBCHO,SAAqB/C,EAAQgY,EAAKrX,GACxC,IAAKX,EACJ,OAED,MAAMa,EAAcb,EAAOC,OAC3B,GAAIM,EAASI,GACZ,IAAK,IAAIG,EAAQ,EAAGA,EAAQD,EAAaC,IACxCd,EAAOc,GAAOC,KAAKJ,EAAUqX,QAG9B,IAAK,IAAIlX,EAAQ,EAAGA,EAAQD,EAAaC,IACxCd,EAAOc,GAAOkX,GAGhB,OAAOhY,CACR,qBCjBO,SAA0B4J,EAAYqP,EAAUjT,EAAO1B,GAC7D,OACQgD,EAASsC,EADbtF,EACyB,CAACpD,EAAMJ,IAC3BI,EAAK+X,GAAUlY,KAAKuD,EAAU0B,GAGX,CAAC9E,EAAMJ,IAC3BI,EAAK+X,GAAUjT,GAExB,0BCRO,SAA+B4D,EAAYqP,EAAUjT,EAAO1B,GAClE,OACQiD,EAAcqC,EADlBtF,EAC+BpD,GAC1BA,EAAK+X,GAAUlY,KAAKuD,EAAU0B,GAGN1E,MAAOJ,GAChCA,EAAK+X,GAAUjT,GAExB,6BCdO,SAAqBhG,GAC3B,QAAQO,EAASP,IAFM,uBAEKA,EAAOkG,UACpC,sECMO,SAAqBlG,EAAQijB,GACnC,GAAI5P,GAAQrT,IAAW6L,GAAW7L,GACjC,OAAO,EAER,GAAIsC,EAAQtC,IAAW0T,GAAa1T,GACnC,OAAO,EAER,MAAMyE,EAAezE,EAAOC,OAC5B,IAAKoT,GAAQ5O,KAAkB0F,GAAS1F,IAAiBA,EAAe,EACvE,OAAO,EAER,GAAIwe,EAAY,CACf,MAAMC,EAAUne,EAAK/E,GACrB,QAAIkjB,GACInT,GAAMmT,GAAS,CAACld,EAAOlF,IACtBA,GAAS,GAAKqJ,GAASrJ,IAIhC,CACD,OAAO,CACR,0ICxBO,SAAiBqiB,EAAaC,GACpC,SAAKD,IAAgBC,IAGdD,aAAuBC,CAC/B,gBxGXO,SAAqBpjB,GAC3B,GAAIO,EAASP,GAAS,CACrB,MAAMuG,EAAkBvG,GAAQiG,aAAaO,KAC7C,OAAOyN,GAAiBtJ,KAAKpE,EAC7B,CACD,OAAO,CACR,+IyGLO,SAAevG,GACrB,OAAOA,GAA8B,IAApBA,EAAOqjB,QACzB,YCCO,SAAiBrjB,GACvB,OAAIoK,GAASpK,IAAWsC,EAAQtC,IACvBI,EAAUJ,GACR+F,EAAc/F,IAChB2R,GAAW3R,IAEZO,EAASP,EAClB,YCZO,SAAiBsjB,GACvB,OAA+B,KAAxBA,EAAYC,OACpB,yFCAO,SAAiBvjB,EAAQyW,GAAe,GAC9C,OAA2B,IAApBpW,QAAQL,IAAqByW,CACrC,qJHgBO,SAA0BzW,GAChC,QAAQO,EAASP,IAFW,4BAEAA,EAAOkG,UACpC,2FIpBO,SAAoBlG,GAC1B,OAAOO,EAASP,IAA8C,mBAA5BA,EAAOwjB,OAAOC,SACjD,4DCDO,SAAsBzjB,EAAQ0jB,GACpC,OAAI1jB,EAAOC,SAAWyjB,EAAazjB,QAC3BuE,EAAWxE,GAAQ,CAACkB,EAAMJ,IACzBkG,EAAQ0c,EAAa5iB,GAAQI,IAIvC,kBpIN6B,CAAClB,EAAQ+C,KACrC,GAAI/C,IAAW+C,EACd,OAAO,EAER,MAAM0d,EAAa1b,EAAK/E,GAClB2jB,EAAa5e,EAAKhC,GACxB,OAAI0d,EAAWxgB,SAAW0jB,EAAW1jB,QAC7BuE,EAAWic,GAAatZ,GACvBnH,EAAOmH,KAASpE,EAAOoE,IAGpB,8B+HuBN,SAAoBnH,GAC1B,QAAQO,EAASP,IAFK,sBAEMA,EAAOkG,UACpC,6BpN1BO,SAAoBlG,GAC1B,OAAQsC,EAAQtC,EACjB,gBoCDO,SAAqBA,GAC3B,OAAQmK,GAASnK,EAClB,gBCDO,SAAqBA,GAC3B,OAAQoK,GAASpK,EAClB,6DqLjBO,SAAuBA,EAAQ+C,GACrC,OAAO/C,IAAW+C,CACnB,oBCAO,SAAyB/C,EAAQ8B,EAAOC,GAC9C,OAAO/B,EAAS8B,GAAS9B,EAAS+B,CACnC,uBCFO,SAA4B/B,EAAQ8B,EAAOC,GACjD,OAAO/B,EAAS8B,GAAS9B,EAAS+B,CACnC,aCEO,SAAkB6hB,EAAcC,GACtC,SAAKD,GAAiBC,GAAgBA,EAAY9iB,OAG3C6iB,aAAwBC,CAChC,iC9IXO,SAAoB7jB,GAC1B,OAAwB,IAAjB0B,GAAK1B,EACb,gB+IHO,SAAqBA,GAC3B,MAAM8jB,SAAc9d,MACpB,OAAOhG,SAAqD,WAAT8jB,GAA8B,aAATA,CACzE,2DCMO,SAAmBC,EAAWC,GACpC,OAAI3Q,GAAQ0Q,KAAc1Q,GAAQ2Q,KAG9BD,EAAUhjB,KACNijB,aAAqBD,EAEzBC,EAAUjjB,KACNgjB,aAAqBC,EAEtBA,EAAU/d,cAAgB8d,EAAU9d,YAC5C,0CChCO,SAAoBjG,EAAQikB,GAClC,MAAMjV,EAAaF,GAAQ9O,GACrBkkB,EAAYpV,GAAQmV,GAC1B,OAAIjV,IAAekV,GACdlV,EAAWxI,OAAS0d,EAAU1d,IAKpC,mDCKO,SAAgBxG,GACtB,OAAkB,IAAXA,CACR,qNCJO,SAAgBA,GACtB,OAAkB,IAAXA,CACR,clGAO,SAAmBA,EAAQmkB,GACjC,GAAInkB,EACH,OAAO2W,GAAWyN,MAAMpkB,EAAQmkB,EAElC,cpCJO,SAAmBnkB,GACzB,OAAOA,EAAOoF,QAAQ,YAAa,OACjCA,QAAQ2M,GAAe,KACvB5L,OACAgN,cACA/N,QAAQ4M,GAAO,IAClB,qBvEPO,SAAiB/N,GACvB,OAAOmD,KAAiBnD,EACzB,S8MFO,SAAcA,EAAOogB,GAC3B,MAAMxjB,EAAcoD,EAAMhE,OAC1B,OAAO,EAAcgE,EAAMmC,MAAMvF,EAAcwjB,EAAWxjB,GAAeoD,EAAMpD,EAAc,EAC9F,cpIHO,SAAmBb,GACzB,OAAOA,EACLoF,QAAQ,YAAa,OACrBA,QAAQ2M,GAAe,KACvB5L,OACAgN,aACH,6FqICO,SAAuBnT,EAAQU,EAAUO,EAAU,GAAIqD,GAC7D,IAAIggB,EAAY,EAChB,MAAMzjB,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQD,EAAc,EAAEC,GAAS,EAAEA,IAC3CG,EAAQqjB,GAAa5jB,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAayD,GACzEggB,IAED,OAAOrjB,CACR,aCRO,SAAkBjB,EAAQU,EAAUO,EAAU,GAAIqD,GACxD,MAAMzD,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQ,EAAEA,EAAQD,EAAYC,IAAS,CAC/C,MAAMI,EAAOlB,EAAOc,GAEpB,IAAiB,IADAJ,EAASQ,EAAMJ,EAAOG,EAASjB,EAAQa,EAAayD,GAEpE,MAEDrD,EAAQH,GAASI,CACjB,CACD,OAAOD,CACR,UCdO,SAASsjB,EAAMxhB,KAAWK,GAWhC,OAVAwJ,GAAKxJ,GAAUohB,IACd5X,GAAK4X,GAAe,CAACC,EAAYC,KAChC,GAAI3hB,EAAO2hB,KACN3e,EAAc0e,IAAeniB,EAAQmiB,IAAeA,EAAWriB,SAClE,OAAOmiB,EAAMxhB,EAAO2hB,GAAYD,GAGlC1hB,EAAO2hB,GAAaD,CAAU,GAC7B,IAEI1hB,CACR,UzFMO,SAAe6V,EAAWC,GAChC,OAAItY,EAASsY,GACL/V,EAAU4V,GAAO,CAACE,EAAWC,IAE9BhV,EAAI+U,EAAWF,GAAMI,OAC7B,a0F3BO,SAAkB9Y,EAAQgG,GAChC,OAAOhG,EAASgG,CACjB,WCHO,SAAgBgI,GACtB,MAAO,IAAI9K,KACF8K,KAAY9K,EAEtB,mECJO,SAAgBpC,EAAQ,GAC9B,MAAO,IAAIoC,IACHA,EAAKpC,EAEd,8DCMO,SAAcd,EAAQ2kB,GAC5B,GAAK3kB,EAAL,CAGA,GAAIsC,EAAQqiB,GAAY,CACvB,MAAMC,EAAiBrT,GAAaoT,GACpC,OAAO1T,GAAajR,GAAQ,CAACkB,EAAMiG,KAC1Byd,EAAeja,KAAKxD,IAE7B,CACD,GAAIiK,GAAQuT,GACX,OAAO1T,GAAajR,GAAQ,CAACkB,EAAMiG,KAC1Bwd,EAAUha,KAAKxD,KAGzB,GAAIiD,GAASua,GACZ,OAAO1T,GAAajR,GAAQ,CAACkB,EAAMiG,IAC3BA,IAAQwd,IAGjB,GAAIxa,GAASwa,GAAY,CACxB,MAAME,EAAiBF,EAAUze,WACjC,OAAO+K,GAAajR,GAAQ,CAACkB,EAAMiG,IAC3BA,IAAQ0d,GAEhB,CACD,OAAIhZ,GAAW8Y,GACP1T,GAAajR,GAAQ,CAACkB,EAAMiG,KAC1Bwd,EAAUzjB,EAAMiG,UAF1B,CAvBC,CA4BF,SChCqB6G,IACpB,IAAIhI,EAOJ,MANiB,IAAI9C,KACf3C,EAASyF,KACbA,EAAQgI,KAAY9K,IAEd8C,EAEO,yBChBT,SAAc8e,GACpB,MAAO,IAAI5hB,IACHwM,GAAIoV,GAAY5jB,GACfA,KAAQgC,IAGlB,cCNO,SAAmB6hB,GACzB,OAAQ/M,GACAjI,GAAMgV,GAAaC,GAClBA,EAAUhN,IAGpB,SCNO,SAAcxL,EAAWC,GAC/B,MAAO,CAACD,EAAWC,EACpB,cCMO,SAAmBxI,EAAO+gB,GAChC,MAAMC,EAAW,GACjB,MAAO,CACNjkB,EAAgBiD,GAAO,CAAC/C,EAAMJ,KAC7B,GAAIkkB,EAAU9jB,EAAMJ,GACnB,OAAOI,EAER+jB,EAAS5jB,KAAKH,EAAK,IAEpB+jB,EAEF,SCjBoB,CAACjlB,EAAQklB,EAAWniB,EAAS,CAAA,KAChD,GAAK/C,EAML,OAHAS,EAAUykB,GAAYhkB,IACrB6B,EAAO7B,GAAQlB,EAAOkB,EAAK,IAErB6B,CAAM,UCNP,SAAe6G,EAAYW,GACjC,OAAOjD,EAASsC,GAAa1I,GACrBoJ,GAAYpJ,EAAMqJ,IAE3B,gDCG6B,CAACvK,EAAQmlB,EAAUzf,EAAaX,EAAK/E,KAC1DwE,EAAWkB,GAAauT,GACvBjS,EAAQhH,EAAOiZ,GAAWkM,EAASlM,6DpKVrC,SAAqB5R,EAAKU,EAAM,GACtC,OAAOF,MAAYR,EAAMU,GAAOA,CACjC,yBhFcO,SAAejG,EAAOC,EAAKC,EAAO,EAAGC,EAAc,IACzD,OAAIL,EAAWI,GACPC,EAEJH,EAAQC,EACJF,EAAQC,EAAOC,EAAKC,EAAMC,GAE1BE,EAAUL,EAAOC,EAAKC,EAAMC,EAErC,sDqPzBO,SAAe+L,EAAUkV,GAC/B,MAAO,IAAIhgB,IACH8K,KAAYkV,EAAQxT,KAAKxO,GACxBgC,EAAKhC,KAGf,oCCNO,SAAmBlB,EAAQgG,GACjC,OAAOhG,EAASgG,CACjB,WCFO,SAAgB/B,EAAOmhB,GAC7B,IAAIvkB,EAAcoD,EAAMhE,OACxB,IAAK,IAAIa,EAAQ,EAAGA,EAAQD,EAAaC,IAAS,CACjD,MAAMI,EAAO+C,EAAMnD,GACfskB,EAAY3C,SAASvhB,KACxB+C,EAAMG,OAAOtD,EAAO,GACpBA,IACAD,IAED,CACD,OAAOoD,CACR,aAcO,SAAkBjE,EAAQU,GAChC,IAAIG,EAAcb,EAAOC,OACzB,IAAK,IAAIa,EAAQ,EAAGA,EAAQD,EAAaC,IAAS,CAE7CJ,EADSV,EAAOc,GACDA,KAClBd,EAAOoE,OAAOtD,EAAO,GACrBA,IACAD,IAED,CACD,OAAOb,CACR,gBCrCO,SAAqBkS,EAAQmT,EAAOrf,GAC1C,OAAOkM,EAAO9M,QAAQ,IAAIqM,OAAO,MAAM4T,EAAM3T,KAAK,UAAW,MAAO1L,EACrE,SCJO,SAAc/B,GACpB,OAAOA,EAAMmC,MAAM,EAAGnC,EAAMhE,OAC7B,0CCDO,SAAeD,EAAQkE,GAC7B,OAAOlE,EAAOA,EAAOC,OAAS,EAAIiE,EACnC,gBxJiBO,SAAqBgO,EAAQpR,EAAQ,GAC3C,OAAOoR,EAAOA,EAAOjS,OAASa,EAC/B,WyJdO,SAAgBd,EAAQkE,GAC9B,IAAKlE,EACJ,OAAO,EAER,MAAMa,EAAcb,EAAOC,OAC3B,GAAIY,IAAgBqD,GAAUA,EAASrD,EACtC,OAAOyH,GAAQtI,GAEhB,GAAe,IAAXkE,EACH,MAAO,CAAClE,EAAO8H,GAAUjH,EAAc,EAAG,KAE3C,MAAMykB,EAAc,GACdC,EAAO,CAAA,EACb,IACIzkB,EADAgD,EAAQ,EAEZ,KAAOA,EAAQI,GACdpD,EAAQgH,GAAU9H,EAAOC,OAAS,EAAG,GAChCslB,EAAKzkB,KACTwkB,EAAYjkB,KAAKrB,EAAOc,IACxBykB,EAAKzkB,IAAS,EACdgD,KAGF,OAAOwhB,CACR,axJWO,SAAkBpT,GACxB,OAAOS,GAAaF,GAAaP,GAClC,iCsDOO,SAAkBsT,GAExB,OADoBA,EAAO,IAE3B,IAlEmB,IAmElB,IAAKxJ,GAAWrR,KAAK6a,GACpB,OAAOnJ,GAAQpK,GAAWuT,IAE3B,MACD,IAxEiB,IAyEhB,GAAI1J,GAAUnR,KAAK6a,GAClB,OAAOvJ,GAAWhK,GAAWuT,IAE9B,MACD,QACC,GAAIzJ,GAAQpR,KAAK6a,GAChB,OAAOrJ,GAASqJ,GAGlB,OAAOhJ,GAAiBgJ,EACzB,WmGhFO,SAAgBxlB,EAAQmH,EAAKnB,GAcnC,OAbImB,GAAOpB,EAAc/F,IAEdmK,GAAShD,IAAQ7E,EAAQtC,GADnCA,EAAOmH,GAAOnB,EAGJhG,EAAO+D,IACjB/D,EAAO+D,IAAIoD,EAAKnB,GACNhG,EAAOqB,KACjBrB,EAAOqB,KAAK2E,GACFhG,EAAOoP,IACjBpP,EAAOoP,IAAIpJ,GAEXhG,EAAOmH,GAAOnB,EAERhG,CACR,aCfO,SAAkBA,EAAQgG,EAAOmB,GAUvC,OATIgD,GAAShD,IAAQ7E,EAAQtC,GAC5BA,EAAOmH,GAAOnB,EACJhG,EAAOqB,KACjBrB,EAAOqB,KAAK2E,GACFhG,EAAOoP,IACjBpP,EAAOoP,IAAIpJ,GAEXhG,EAAOmH,GAAOnB,EAERhG,CACR,0B9NDO,SAAkBiE,GACxB,OAAOuE,MAAiBvE,EACzB,cgEDO,SAAmBjE,GACzB,OAAOA,EAAOoF,QAAQ,YAAa,OACjCA,QAAQ2M,GAAe,KACvB5L,OACAgN,cACA/N,QAAQ4M,GAAO,IAClB,iC3DaO,SAAsCpI,EAAYR,EAAe,KAAMI,GAC7E,OAAOI,EAAWC,MAAK,CAACP,EAAUC,IAC1BO,GAA0BR,EAAUC,EAAMH,EAAcI,IAEjE,wCKZO,SAA6CI,EAAYR,EAAe,KAAMI,GACpF,OAAOI,EAAWC,MAAK,CAACP,EAAUC,IAC1BiB,GAAiClB,EAAUC,EAAMH,EAAcI,IAExE,0JqNjBO,SAA6Bic,GACnC,OAAOA,EAAW5b,KAAKrC,EACxB,wBCFO,SAA6Bie,GACnC,OAAOA,EAAW5b,KAAKlC,EACxB,kHCHyB,IACjB,epMCiB,IACjB2F,gBqMFkB,KAClB,iBCDkB,IAClB,cvMAgB,IAChBD,8BwMFD,SAAqBrN,GAC3B,OAAOA,EAAO+hB,QAAO,CAAC2D,EAAGC,IACjBD,EAAIC,GACT,EACJ,+BCJO,SAAgB3lB,GACtB,OAAOA,EAAO+hB,QAAO,CAAC2D,EAAGC,IACjBD,EAAIC,GACT,EACJ,SCHO,SAAc3lB,EAAQ4lB,EAAW,GACvC,OAAO5lB,EAAOoG,MAAM,EAAGwf,EACxB,cCFO,SAAmB5lB,EAAQ6lB,EAAa,GAC9C,MAAMhlB,EAAcb,EAAOC,OAC3B,OAAOD,EAAOoG,MAAMvF,EAAcglB,EAAYhlB,EAC/C,yBCCO,SAAkBmN,EAAUC,GAClC,SAAS6X,KAAa5iB,GACjB4iB,EAAUlY,GACbkY,EAAUC,eAAiB1Y,IAG5ByY,EAAU9X,YAAY9K,GACtB4iB,EAAUlY,GAAKU,IAAM,KAChBwX,EAAUC,gBACbD,EAAU9X,YAAY9K,GAEvB4iB,EAAUlY,GAAKN,EAAK,GAClBW,GACH,CAOD,OANA6X,EAAUlY,GAAKN,GACfwY,EAAU9X,SAAWA,EAASsB,KAAKwW,GACnCA,EAAU1X,MAAQ,KACjBC,GAAOV,OAAOmY,EAAUlY,IACxBkY,EAAUlY,GAAKN,EAAK,EAEdwY,CACR,iDClBOxkB,eAA0B4C,EAAQxD,GACxC,IAAK,IAAII,EAAQ,EAAGA,EAAQoD,EAAQpD,UAC7BJ,EAASwD,EAEjB,a1MkBO,SAAkBA,EAAQxD,EAAUO,EAAU,IACpD,IAAK,IAAIH,EAAQ,EAAGA,EAAQoD,EAAQpD,IACnCG,EAAQH,GAASJ,EAASwD,GAE3B,OAAOjD,CACR,kB0MHOK,eAA6B4C,EAAQxD,EAAUO,EAAU,IAC/D,IAAK,IAAIH,EAAQ,EAAGA,EAAQoD,EAAQpD,IACnCG,EAAQH,SAAeJ,EAASwD,GAEjC,OAAOjD,CACR,mCChCO,SAAgB+E,EAAOggB,GAAK,EAAMC,GAAM,GAC9C,OAAQjf,EAAQgf,EAAIhgB,GAAUigB,EAAMD,CACrC,arKLO,SAAkB9T,GACxB,OAAOA,EAAOmO,MAAMzN,KAAkB,EACvC,asKuBO,SAAkBV,EAAQgU,GAChC,MAAMC,EAAejU,EAAOjS,OAC5B,OAAQkmB,EAAeD,EA1CH,EAAChU,EAAQgU,EAAWC,KACxC,MAAMC,EAAWlU,EAAO7M,MAAM,IACxBghB,EAAiBD,EAASnmB,OAChC,IAAIiB,EACAJ,EAAQqlB,EAAeD,EAC3B,KAAOplB,EAAQulB,GAAkBvlB,GAAS,IACzCI,EAAOklB,EAAStlB,GACH,MAATI,GAFwCJ,KAM7C,OAAOoR,EAAO9L,MAAM,EAAGtF,GAAOqF,MAAM,EA+BAmgB,CAAapU,EAAQgU,EAAWC,GAAgBjU,CACrF,kBAeO,SAAuBA,EAAQgU,GACrC,MAAMC,EAAejU,EAAOjS,OAC5B,OAAQkmB,EAAeD,EA/CL,EAAChU,EAAQgU,EAAWC,KACtC,MAAMC,EAAWlU,EAAO7M,MAAM,IACxBghB,EAAiBD,EAASnmB,OAChC,IAAIiB,EACAJ,EAAQolB,EACZ,KAAOplB,EAAQulB,GAAkBvlB,EAAQ,IACxCI,EAAOklB,EAAStlB,GACH,MAATI,GAFuCJ,KAM5C,OAAOoR,EAAOC,UAAUrR,EAAOqlB,GAAchgB,MAAM,EAoCfogB,CAAWrU,EAAQgU,EAAWC,GAAgBjU,CACnF,qBC5BO,SAAelS,GACrB,OAAOA,EAAO,GAAG0P,KAAI,CAACxO,EAAMJ,IACpBd,EAAO0P,KAAK8W,GACXA,EAAS1lB,MAGnB,gB/KH4B6a,IAC3B,MAAM8K,EAAe,GACf5U,EAAS,GAKf,OAJAzG,GAAWuQ,GAAQ,CAACza,EAAMiG,KACzBsf,EAAaplB,KAAK8F,GAClB0K,EAAOxQ,KAAKH,EAAK,IAEX,CAACulB,EAAc5U,EAAO,UgL5BvB,YAAkBkR,GACxB,OAAOna,GAAOnG,EAAYsgB,GAC3B,4CCKO,SAAyB/iB,EAAQU,GACvC,MAAM+D,EAAezE,EAAOC,OAC5B,IAAK,IAAIa,EAAQ,EAAEA,EAAQ2D,EAAa3D,IACvC,IAAuC,IAAnCJ,EAASV,EAAOc,GAAQA,GAC3B,OAAO,EAGT,OAAO,CACR,mBCRO,SAAwBd,EAAQU,GACtC,MAAM+D,EAAezE,EAAOC,OAC5B,IAAK,IAAIa,EAAQ,EAAEA,EAAQ2D,EAAa3D,IACvC,IAAuC,IAAnCJ,EAASV,EAAOc,GAAQA,GAC3B,OAAO,EAGT,OAAO,CACR,oC9KfO,SAAmBd,GACzB,OAAOA,EACLoF,QAAQ,YAAa,OACrBA,QAAQ2M,GAAe,KACvB5L,OACA6M,aACH,kCK4CO,SAAuBd,GAC7B,OAAOA,EAAO9M,QAAQ0N,IAAWuN,GACzBpN,GAAWoN,IAEpB,gEAcO,SAA2BnO,GACjC,OAAOA,EAAO9M,QAAQ0N,IAAWuN,GACzBnN,GAAemN,IAExB,wC0KjEO,SAAyBrgB,EAAQU,EAAUO,EAAU,GAAIqD,GAC/D,IAAIxD,EAAQ,EACZ,KAAOA,EAAQd,EAAOC,QAAQ,CAC7B,MAAMwB,EAASR,EAAQI,KAAKX,EAASV,EAAOc,GAAQA,EAAOd,EAAQA,EAAOC,OAAQqE,IAClFxD,IACIP,EAASkB,IACZR,EAAQI,KAAKI,EAEd,CACD,OAAOzB,CACR,mBCXO,SAAwBA,EAAQU,EAAU4D,GAChD,IAAIxD,EAAQ,EACZ,KAAOA,EAAQd,EAAOC,QACrBS,EAASV,EAAOc,GAAQA,EAAOd,EAAQA,EAAOC,OAAQqE,GACtDxD,IAED,OAAOd,CACR,kBCJO,SAAuBA,EAAQU,EAAUO,EAAU,GAAIqD,GAC7D,IAAIxD,EAAQ,EACZ,KAAOA,EAAQd,EAAOC,QACrBgB,EAAQI,KAAKX,EAASV,EAAOc,GAAQA,EAAOd,EAAQA,EAAOC,OAAQqE,IACnExD,IAED,OAAOd,CACR,YChBO,SAAiB+C,EAAQK,GAC/B,IAAKA,EACJ,OAAOL,EAER,MAAM2jB,EAAa5jB,EAAU6jB,IAAKvjB,GAClC,OAAOL,EAAO+F,QAAQ5H,IACbwlB,EAAW3Y,IAAI7M,IAEzB,U9KOO,SAAegR,GACrB,OAAOA,EAAOmO,MAAMxN,KAAe,EACpC,S+KhBO,SAAc7M,EAAO4gB,GAC3B,MAAO,IAAI5O,IACH4O,EAAQ5gB,KAAUgS,EAE3B,QCHO,YAAgB5U,GACtB,MAAMyjB,EAAS/jB,EAAUQ,KACnBwjB,EAAQ,GAEd,OAAsB,IADA1jB,EAAQnD,OAEtBkD,EAAWC,EAAQ,GAAIA,EAAQ,KAEvC3C,EAAU2C,GAAS,CAACI,EAAcC,KACjChD,EAAU+C,GAAc,CAACE,EAAOC,KAC/B,IAAIC,EAAYijB,EAAOhjB,IAAIH,GAC3B,GAAKE,EAOE,IAAIA,EAAUH,cAAgBA,EACpC,OAEAG,EAAUE,OACV,MAVAF,EAAY,CACXE,MAAO,EACPL,cACAC,SAEDmjB,EAAO9iB,IAAIL,EAAOE,EAKlB,GACA,IAEHxB,EAAQykB,GAAS3lB,IACG,IAAfA,EAAK4C,OACRgjB,EAAMzlB,KAAKH,EAAKwC,MAChB,IAEKojB,EACR,QTlCO,YAAgB/D,GACtB,OAAOA,EAAO,GAAGrT,KAAI,CAACxO,EAAMJ,IACpBiiB,EAAOrT,KAAKzL,GACXA,EAAMnD,MAGhB"} \ No newline at end of file diff --git a/build/index.bundle.js b/build/index.bundle.js index 7fdb1393..b54bef2b 100644 --- a/build/index.bundle.js +++ b/build/index.bundle.js @@ -1,12 +1,13 @@ -(function(global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? - factory(exports, require('fs/promises'), require('path'), require('url')) : - typeof define === 'function' && define.amd ? - define(['exports', 'fs/promises', 'path', 'url'], factory) : - ((global = typeof globalThis !== 'undefined' ? globalThis : global || self), +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + ? factory(exports, require('fs/promises'), require('path'), require('url')) + : typeof define === 'function' && define.amd + ? define(['exports', 'fs/promises', 'path', 'url'], factory) + : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self), factory((global.$ = {}), global.promises, global.path, global.url)); -})(this, (exports, promises, path, url) => { +})(this, function (exports, promises, path, url) { 'use strict'; + /** * Chunks an array according to a user defined number. * @@ -35,6 +36,7 @@ }); return chunked; } + /** * Clears the values out of an array. * @@ -52,6 +54,7 @@ source.length = 0; return source; } + /** * Clone an array (uses .slice()) and assign the source arrays values to the new array. * @@ -68,6 +71,7 @@ function cloneArray(source) { return source.slice(); } + /** Checks if the value is undefined. * * @function isUndefined @@ -82,6 +86,7 @@ function isUndefined(source) { return source === undefined; } + /** * Checks if the value has length greater than 0. * @@ -97,6 +102,7 @@ function hasLength(source) { return Boolean(source.length); } + /** * Checks if the value is null. * @@ -112,6 +118,7 @@ function isNull(source) { return source === null; } + /** * Checks if the value is not null or undefined. * @@ -127,6 +134,7 @@ function hasValue(source) { return !isUndefined(source) && !isNull(source); } + /** * A simple function which returns the value it's given. * @@ -138,6 +146,7 @@ function returnValue(source) { return source; } + /** * Iterates through the given array. * @@ -174,6 +183,7 @@ } return source; } + /** * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array. * @@ -211,6 +221,7 @@ } return results; } + /** * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order. * @@ -248,6 +259,7 @@ } return source; } + /** * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array. * @@ -275,6 +287,7 @@ }); return results; } + /** * Checks if a number is negative & returns true or false. * @@ -292,6 +305,7 @@ function isNegative(source) { return sign$1(source) === -1; } + function rangeUp(start, end, step, sourceArray) { let position = start; while (position < end) { @@ -333,10 +347,12 @@ return rangeDown(start, end, step, sourceArray); } } + function forEach(source, callback) { source.forEach(callback); return source; } + /** * Checks if the value is an array. This references Array.isArray. * @@ -367,6 +383,7 @@ function isNotArray(source) { return !isArray(source); } + /** * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned. * @@ -383,6 +400,7 @@ function ensureArray(source) { return (isArray(source) && source) || (hasValue(source) && [source]) || []; } + /** * Flattens an array to a single level. * @@ -399,6 +417,7 @@ function flattenDeep(source) { return source.flat(Infinity); } + /** * A function which acts like the "new" operator and can pass arguments. This is a safe version of the original which will error if given undefined * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects. @@ -428,6 +447,7 @@ } return reflectConstruct(target, args); } + /** * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences. * @@ -469,6 +489,7 @@ }); return differences; } + /** * Removes all items from an array after a specified index. * @@ -488,6 +509,7 @@ function drop(array, amount = 1, upTo = array.length) { return array.splice(amount, upTo); } + /** * Removes all items from an array before a specified index. * @@ -507,6 +529,7 @@ const dropRight = (array, amount = 1, upTo = array.length) => { return drop(array, 0, upTo - amount); }; + /** * Iterates through the given array in reverse. * @@ -536,6 +559,7 @@ } return source; } + /** * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order. * @@ -565,6 +589,7 @@ } return source; } + /** * Iterates through the given array while the iteratee returns true else the loop exits & returns false. * @@ -597,6 +622,7 @@ } return true; } + /** * Iterates through the given array while the iteratee returns true else the loop exits & returns false. * @@ -629,6 +655,7 @@ } return true; } + /** * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee. * @@ -656,6 +683,7 @@ }); return results; } + /** * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee. * @@ -683,6 +711,7 @@ }); return results; } + /** * Takes the first or multiple items from an array. * @@ -700,6 +729,7 @@ function first(array, upTo) { return upTo ? array.slice(0, upTo) : array[0]; } + /** * Flattens an array up to the provided level. * @@ -726,6 +756,7 @@ } return sourceArray; } + /** * Takes all but the last item in the array. * @@ -742,6 +773,7 @@ function initial(array) { return array.slice(0, array.length - 1); } + // Add intersectionBy & intersectionWith /** * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory)) @@ -767,6 +799,44 @@ } }); } + + /** + * Invoke each function in the given array. + * + * @function invokeArray + * @category array + * @type {Function} + * @param {Array} source - Array that will be looped through. + * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg. + * @param {*} thisCall - Iteratee called with thisCall as this. + * @param {*} additionalArg - An object to be given each time to the iteratee. + * @returns {Array} - The originally given array. + * + * @example + * import { invokeArray, assert } from '@universalweb/acid'; + * function test(arg){ + * return [this, arg]; + * } + * const results = invokeArray([test], 1, test); + * assert(results, [test, 1]); + */ + function invokeArray(source, arg, thisCall) { + if (!source) { + return; + } + const arrayLength = source.length; + if (hasValue(thisCall)) { + for (let index = 0; index < arrayLength; index++) { + source[index].call(thisCall, arg); + } + } else { + for (let index = 0; index < arrayLength; index++) { + source[index](arg); + } + } + return source; + } + /** * Get object's keys. * @@ -785,6 +855,7 @@ return objectKeys(source); } } + const regexToPath = /\.|\[/; const regexCloseBracket = /]/g; const emptyString = ''; @@ -804,6 +875,7 @@ function toPath(source) { return source.replace(regexCloseBracket, emptyString).split(regexToPath); } + /** * Returns property on an object. * @@ -835,6 +907,7 @@ }); return link; } + const hasOwn = Object.hasOwn; /** * Checks to see if an object has all of the given property names. @@ -903,6 +976,7 @@ }) ); } + /** * Checks if the value is a plain object. * @@ -918,11 +992,11 @@ */ const isPlainObject = (value) => { if (hasValue(value)) { - return value.constructor.toString().trim() - .slice(9, 16) === 'Object('; + return value.constructor.toString().trim().slice(9, 16) === 'Object('; } return false; }; + /** * Checks to see if the constructor is that of a native object. * @@ -952,14 +1026,16 @@ return constructorName(target) === source || false; }; } + function isTypeFactory(method) { - return function(primarySource, ...otherSources) { + return function (primarySource, ...otherSources) { if (otherSources) { return method(primarySource) && everyArray(otherSources, method); } return method(primarySource); }; } + /** * Checks if an object or objects are a Buffer. * @@ -974,6 +1050,7 @@ */ const isBufferCall = isConstructorNameFactory('Buffer'); const isBuffer = isTypeFactory(isBufferCall); + /** * Performs a deep comparison between two objects & determines if the value is the same using strict comparison. * @@ -1012,6 +1089,7 @@ } return false; }; + /** * Performs a shallow strict comparison between two objects. * @@ -1034,6 +1112,7 @@ } return false; } + const mathNativeMax = Math.max; /** * Plucks the largest value from an array. @@ -1051,6 +1130,7 @@ function largest(array) { return mathNativeMax(...array); } + /** * Extracts item(s) from an array starting from the last item in the array. * @@ -1069,6 +1149,7 @@ const arrayLength = array.length; return indexFrom ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1]; } + /** * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array. * @@ -1100,6 +1181,7 @@ } return results; } + /** * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array. * @@ -1124,6 +1206,7 @@ }); return results; } + /** * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse. * @@ -1151,6 +1234,7 @@ } return results; } + /** * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee. * @@ -1181,6 +1265,7 @@ } return results; } + /** * Subtracts the subtrahend (second argument) from the minuend (first argument). * @@ -1198,6 +1283,7 @@ function subtract(minuend, subtrahend) { return minuend - subtrahend; } + /** * Sorts an array of numbers in ascending order. Smallest to largest. * @@ -1213,6 +1299,7 @@ function sortNumberAscending(numberList) { return numberList.sort(subtract); } + /** * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate. * @@ -1246,6 +1333,7 @@ rejected ]; } + /** * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function. * @@ -1263,6 +1351,7 @@ function subtractReverse(subtrahend, minuend) { return minuend - subtrahend; } + /** * Sorts an array of numbers in descending order. Largest to smallest. * @@ -1278,6 +1367,7 @@ function sortNumberDescening(numberList) { return numberList.sort(subtractReverse); } + /** * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation. * @@ -1331,6 +1421,7 @@ } return source; } + /** * Extracts all items in array except the first and last item. * @@ -1347,6 +1438,7 @@ function rest(array) { return array.slice(1, array.length); } + /** * Get the item at the supplied index starting at the end of the array. * @@ -1364,9 +1456,8 @@ function right(source, amount) { return source[source.length - 1 - amount]; } - const { - floor, random: random$1 - } = Math; + + const { floor, random: random$1 } = Math; /** * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption. * @@ -1384,6 +1475,7 @@ function randomInt(max, min = 0) { return floor(random$1() * (max - min)) + min; } + const arrayFrom = Array.from; /** * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check. @@ -1404,6 +1496,7 @@ return arrayFrom(arrayLike, mapFn, thisArg); } } + /** * Checks if two numbers are the same. * @@ -1421,6 +1514,7 @@ function isNumberEqual(source, target) { return source === target; } + /** * Shuffle an array and return a new array. * @@ -1451,6 +1545,7 @@ } return shuffleArray; } + /** * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned. * @@ -1495,6 +1590,7 @@ } return sampleArray; } + const mathNativeMin = Math.min; /** * Plucks the smallest value from an array. @@ -1512,6 +1608,7 @@ function smallest(array) { return mathNativeMin(...array); } + /** * What index should the number be inserted at to keep a sorted array still sorted. * @@ -1539,6 +1636,7 @@ }); return insertIndex; } + /** * Returns a shallow copy of the array up to an amount. * @@ -1556,6 +1654,7 @@ function take(source, endIndex = 1) { return source.slice(0, endIndex); } + /** * Returns a shallow copy of the array up to an amount starting from the right. * @@ -1574,6 +1673,7 @@ const arrayLength = source.length; return source.slice(arrayLength - indexRight, arrayLength); } + function onlyUnique(value, index, array) { return array.indexOf(value) === index; } @@ -1600,6 +1700,7 @@ } return source.filter(onlyUnique); } + /** * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays. * @@ -1616,6 +1717,7 @@ function union(...arrays) { return unique(flattenDeep(arrays)); } + /** * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned. * If and when the iteratee yields false the loop stops & false is returned. @@ -1645,6 +1747,7 @@ } return true; } + /** * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned. * If and when the iteratee yields true the loop stops & false is returned. @@ -1674,6 +1777,7 @@ } return true; } + /** * Iterates through the calling object and creates a new object based on the calling object's type with the results, * (excludes results which are null or undefined), of the iteratee on every element in the calling object. @@ -1705,6 +1809,7 @@ } return source; } + /** * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over. * @@ -1732,6 +1837,7 @@ } return source; } + /** * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array. * Re-checks the length each loop. @@ -1762,6 +1868,7 @@ } return source; } + /** * Returns a copy of the array with all instances of the values removed. * @@ -1785,6 +1892,7 @@ return !sourcesSet.has(item); }); } + /** * Creates an array that is the symmetric difference of the provided arrays. * @@ -1829,6 +1937,7 @@ }); return xored; } + /** * Merges together the values of each of the arrays with the values at the corresponding position. * @@ -1869,6 +1978,7 @@ }); }); } + /** * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer. * @@ -1885,6 +1995,7 @@ function ensureBuffer(source) { return (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0); } + /** * Clears the values out of a buffer. * @@ -1902,6 +2013,7 @@ source.fill(0); return source; } + /** * Creates an object composed of keys generated from the results of running each element of collection through iteratee. * @@ -1928,6 +2040,7 @@ }); return object; } + /** * Count the amount of times a key is present in a collection. * @@ -1951,6 +2064,7 @@ }); return count; } + /** * Count the amount of times a key is not present in a collection. * @@ -1974,11 +2088,13 @@ }); return count; } + function findIndexCache(element, index, array, indexMatch, propertyName) { if (element[propertyName] === indexMatch) { return true; } } + /** * Finds an object in a collection by the given id and property name and returns the array index of the object. * @@ -2000,6 +2116,7 @@ }); return result === -1 ? false : result; } + /** * Finds an object in a collection by the given id and property name. * @@ -2021,6 +2138,7 @@ }); return result === -1 ? false : result; } + /** * Sorts an array in place using a key in descending order. * @@ -2061,6 +2179,7 @@ return sortCollectionDescendingFilter(previous, next, propertyName, ifMatch); }); } + /** * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array. * @@ -2100,6 +2219,7 @@ return sortObjectsAlphabetically(previous, next, propertyName, ifMatch); }); } + /** * Sorts an array in place using a key in ascending order. * @@ -2140,6 +2260,7 @@ return sortCollectionAscendingFilter(previous, next, propertyName, ifMatch); }); } + /** * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array. * @@ -2157,6 +2278,7 @@ function getHighest(collection, propertyName = 'id') { return sortCollectionAscending(collection, propertyName)[0]; } + /** * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array. * @@ -2174,6 +2296,7 @@ function getLowest(collection, propertyName) { return sortCollectionDescending(collection, propertyName, false)[0]; } + /** * Creates an object composed of keys generated from the results of running each element of collection thru iteratee. * The order of grouped values is determined by the order they occur in collection. @@ -2201,6 +2324,7 @@ }); return sortedObject; } + /** * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique. * @@ -2224,10 +2348,11 @@ }); return sortedObject; } + /** * Invokes a function on the provided property name in each object in the collection. * - * @function invoke + * @function invokeCollection * @category collection * @type {Function} * @param {Array} collection - Collection from which method will be taken. @@ -2236,18 +2361,27 @@ * @returns {Array} - Returns the results of the invoked method. * * @example - * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] + * import { invokeCollection, assert } from '@universalweb/acid'; + * const results = invokeCollection([{ + * test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); */ - function invoke(collection, property, value) { + function invokeCollection(collection, property, value, thisBind) { + if (thisBind) { + return mapArray(collection, (item, index) => { + return item[property].call(thisBind, value); + }); + } return mapArray(collection, (item, index) => { - return item[property](value, index); + return item[property](value); }); } + /** * Asynchronously awaits & invokes a function on the provided property name in each object in the collection. * - * @function invokeAsync + * @function invokeCollectionAsync * @category collection * @type {Function} * @async @@ -2257,20 +2391,23 @@ * @returns {Array} - Returns the results of the invoked method. * * @test - * (async () => { - * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]); - * }); - * - * @example - * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] - */ - function invokeAsync(collection, property, value) { - return mapAsyncArray(collection, async (item, index) => { - return item[property](value, index); + * import { invokeCollectionAsync, assert } from '@universalweb/acid'; + * const results = await invokeCollectionAsync([{ + * async test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); + */ + function invokeCollectionAsync(collection, property, value, thisBind) { + if (thisBind) { + return mapAsyncArray(collection, (item) => { + return item[property].call(thisBind, value); + }); + } + return mapAsyncArray(collection, async (item) => { + return item[property](value); }); } + /** * Checks if the value is a number. * @@ -2300,6 +2437,7 @@ function isNotNumber(source) { return !isNumber(source); } + /** * Checks if the value is a string. * @@ -2330,6 +2468,7 @@ function isNotString(source) { return !isString(source); } + /** * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array. * @@ -2354,6 +2493,7 @@ return source[item]; }); } + /** * Returns an array of the plucked values from the collection. * @@ -2374,6 +2514,7 @@ return pluckObject(item, targets); }); } + /** * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array. * @@ -2405,6 +2546,7 @@ return sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch); }); } + /** * Return the file extension. * @@ -2422,6 +2564,7 @@ return source.substring(source.lastIndexOf('.') + 1); } } + /** * Return the file extension. * @@ -2439,11 +2582,13 @@ return source.substring(source.lastIndexOf('/') + 1); } } + function regexTestFactory(regexType) { return (item) => { return hasValue(item) ? regexType.test(item) : false; }; } + /** * Checks if the string has a .css extension. * @@ -2457,6 +2602,7 @@ * assert(isFileCSS('test.css'), true); */ const isFileCSS = regexTestFactory(/\.css$/); + /** * Checks if the string has a .html extension. * @@ -2470,6 +2616,7 @@ * assert(isFileHTML('test.html'), true); */ const isFileHTML = regexTestFactory(/\.html$/); + /** * Checks if the string has a .js extension. * @@ -2483,6 +2630,7 @@ * assert(isFileJS('test.js'), true); */ const isFileJS = regexTestFactory(/\.js$/); + /** * Checks if the string has a .json extension. * @@ -2496,6 +2644,7 @@ * assert(isFileJSON('test.json'), true); */ const isFileJSON = regexTestFactory(/\.json$/); + /** * Creates a function that executes callable, only after being called n times. * @@ -2533,6 +2682,7 @@ }; return onlyAfter; } + /** * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments. * @@ -2552,6 +2702,7 @@ return callable(...args.splice(0, amount)); }; } + /** * Creates a function that executes callable, only before n times. * @@ -2583,6 +2734,7 @@ }; return onlyBefore; } + const objectAssign = Object.assign; /** * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object. @@ -2602,6 +2754,7 @@ return objectAssign(target, ...sources); } } + /** * Asynchronously iterates through the given object. * @@ -2638,6 +2791,7 @@ } return source; }; + /** * Iterates through the given object. * @@ -2672,6 +2826,7 @@ } return source; } + async function forEachAsync(source, callback) { const values = []; const properties = []; @@ -2686,6 +2841,7 @@ } return source; } + /** * Checks if an object(s) is a Set. * @@ -2700,6 +2856,7 @@ */ const isSetCall = isConstructorNameFactory('Set'); const isSet = isTypeFactory(isSetCall); + function forOf(source, iteratee) { if (isSet(source)) { for (const value of source) { @@ -2712,6 +2869,7 @@ } return source; } + /** * Checks if an object or objects are a Int16Array. * @@ -2727,6 +2885,7 @@ */ const isGeneratorCall = isConstructorNameFactory('GeneratorFunction'); const isGenerator = isTypeFactory(isGeneratorCall); + async function forOfAsync(source, iteratee, generatorArgs) { if (isSet(source)) { for (const value of source) { @@ -2744,6 +2903,7 @@ } return source; } + /** * Checks if an object or objects are a plain object. * @@ -2760,6 +2920,7 @@ const isFunction = (source) => { return hasValue(source) ? source instanceof Function : false; }; + /** * Checks if an object is an async function. * @@ -2774,6 +2935,7 @@ */ const isAsyncCall = isConstructorNameFactory('AsyncFunction'); const isAsync = isTypeFactory(isAsyncCall); + function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) { return (source, iteratee, argument1, argument2, argument3) => { let returned; @@ -2794,6 +2956,7 @@ return returned(source, iteratee, argument1, argument2, argument3); }; } + /** * Iterates through the given object. * @@ -2815,6 +2978,7 @@ * assert(list, {a: 1, b: 2, c: 3}); */ const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync); + class Chain { constructor(methods) { this.addChainMethod(methods); @@ -2822,7 +2986,7 @@ addChainMethod(methods) { const thisChain = this; each(methods, (method, methodName) => { - thisChain[methodName] = function(...args) { + thisChain[methodName] = function (...args) { this.value = method.call(thisChain, thisChain.value, ...args); return thisChain; }; @@ -2860,6 +3024,7 @@ function chain(config) { return construct(Chain, [config]); } + /** * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient. * @@ -2890,6 +3055,7 @@ }; return curried; } + /** * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order. * @@ -2919,6 +3085,7 @@ }; return curried; } + /** * This method returns true. * @@ -2936,6 +3103,7 @@ const stubTrue = () => { return truth; }; + /** * This method returns false. * @@ -2953,6 +3121,7 @@ const stubFalse = () => { return falsy; }; + /** * This method returns undefined. * @@ -2967,6 +3136,7 @@ const noop = () => { return; }; + /** * Iterates based on the amount given invoking the iteratee with the current index as an argument. * @@ -3016,6 +3186,7 @@ } return results; } + class Timers { list = construct(Map); construct() {} @@ -3116,6 +3287,7 @@ timers.remove(index); }); } + const applyNative = Reflect.apply; /** * Calls a target function with an optional "this" and optional arguments as specified. Same as Reflect.apply but with a function check. @@ -3136,6 +3308,7 @@ return applyNative(target, thisArgument, argumentsList); } } + /** * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer. * @@ -3173,6 +3346,7 @@ }; return debounced; } + /** * Checks if the given method is a function. If it is then it invokes it with the given arguments. * @@ -3192,6 +3366,7 @@ return callable(...args); } } + /** * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object. * @@ -3222,6 +3397,7 @@ } return source; } + /** * Invoke an array of functions. * @@ -3250,6 +3426,7 @@ item(value); }); }; + /** * Creates a function that negates the result of the predicate callable. * @@ -3268,6 +3445,7 @@ return !callable(...args); }; } + /** * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned. * @@ -3286,6 +3464,7 @@ return args[index]; }; } + /** * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function. * @@ -3317,6 +3496,7 @@ }; return onlyOnce; }; + /** * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object. * @@ -3343,6 +3523,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object. * @@ -3377,6 +3558,7 @@ } return results; } + /** * Returns the constructor of an object. * @@ -3392,6 +3574,7 @@ function getType(source) { return source?.constructor; } + /** * Returns a new empty object of the same type. * @@ -3408,11 +3591,12 @@ const sourceType = getType(source); if (sourceType === Function) { if (sourceType.name === 'function') { - return function() {}; + return function () {}; } } return construct(sourceType, args); } + /** * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object. * @@ -3452,6 +3636,7 @@ } return results; } + /** * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -3498,6 +3683,7 @@ } return results; } + /** * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object. * @@ -3518,6 +3704,7 @@ * }), {a: 2, b: 4, c: 6}); */ const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync); + /** * Creates a function that invokes iteratee with the arguments it receives and returns their results. * @@ -3538,6 +3725,7 @@ }); }; } + /** * Iterates through the given object while the iteratee returns true. * @@ -3564,6 +3752,7 @@ return iteratee(source[key], key, source, propertyCount, original); }); } + /** * Iterates through the given object while the iteratee returns true. * @@ -3590,6 +3779,7 @@ return iteratee(source[key], key, source, propertyCount, original); }); } + /** * Iterates (for of) through the given object while the iteratee returns true using a for of loop. * @@ -3624,6 +3814,7 @@ } return true; } + /** * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop. * @@ -3665,6 +3856,7 @@ } return true; } + /** * Iterates through the given object while the iteratee returns true. * @@ -3682,6 +3874,7 @@ * }), false); */ const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync); + /** * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives. * @@ -3702,6 +3895,7 @@ }); }; } + /** * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on. * @@ -3727,6 +3921,7 @@ ); }; } + /** * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer. * @@ -3764,6 +3959,7 @@ }; return throttled; } + /** * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function. * @@ -3785,6 +3981,7 @@ return wrapper(value, ...arg); }; } + const functionPrototype = Function.prototype; /** * Caches a prototype method. @@ -3802,6 +3999,7 @@ function cacheNativeMethod(method) { return functionPrototype.call.bind(method); } + /** * Returns an array of all properties (enumerable or not) found directly upon a given object. * @@ -3850,6 +4048,7 @@ */ const defProp = Object.defineProperty; const hasProp = cacheNativeMethod(Object.hasOwnProperty); + /** * Determines whether two values are the same value. * @@ -3864,6 +4063,7 @@ * assert(isSame('foo', 'foo'), true); */ const isSame = Object.is; + /** * Adds two numbers. * @@ -3881,6 +4081,7 @@ function add(augend, addend) { return augend + addend; } + /** * Decrements a number. * @@ -3899,6 +4100,7 @@ function deduct(source) { return source - 1; } + /** * Divides two numbers. * @@ -3916,6 +4118,7 @@ function divide(source, value) { return source / value; } + /** * Increments a number. * @@ -3934,6 +4137,7 @@ function increment(source) { return source + 1; } + /** * Multiplies two numbers. * @@ -3951,6 +4155,7 @@ function multiply(source, value) { return source * value; } + /** * Calculate the progress from a given total and current amount. * @@ -3974,6 +4179,7 @@ } return (currentAmount / total) * 100; } + const { random } = Math; /** * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption. @@ -3993,6 +4199,7 @@ function randomFloat(max, min = 0) { return random() * (max - min) + min; } + /** * Extracts the remainder between two numbers. * @@ -4012,6 +4219,7 @@ function remainder(source, value) { return source % value; } + /** * Subtract all numbers in the array starting from left to right & return the difference. * @@ -4030,6 +4238,7 @@ return a - b; }, 0); } + /** * Sum all numbers in a given array. * @@ -4048,6 +4257,7 @@ return a + b; }, 0); } + /** * Checks if a number is within a range. * @@ -4067,6 +4277,7 @@ function isNumberInRange(source, start, end) { return source > start && source < end; } + /** * Checks if a number is within a range. * @@ -4086,6 +4297,7 @@ function isNumberNotInRange(source, start, end) { return source < start || source > end; } + /** * Checks if a number is negative & returns true or false. * @@ -4103,6 +4315,7 @@ function isPositive(source) { return sign(source) === 1; } + /** * Strictly checks if a number is zero. * @@ -4119,6 +4332,7 @@ function isZero(source) { return source === 0; } + const objectEntries = Object.entries; /** * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error. @@ -4137,6 +4351,7 @@ return objectEntries(source); } } + /** * Extracts all keys from an object whose values are not null or undefined. * @@ -4159,6 +4374,7 @@ }); return compactedKeys; } + /** * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -4185,6 +4401,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -4211,6 +4428,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee. * @@ -4236,6 +4454,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee. * @@ -4261,6 +4480,7 @@ }); return results; } + /** * Creates an inverted version of a given object by switching it's keys and values. * @@ -4284,6 +4504,7 @@ }); return target; } + /** * Performs a shallow strict comparison between two objects. * @@ -4311,6 +4532,7 @@ } return false; }; + /** * Checks if the value is a RegExp. * @@ -4325,6 +4547,7 @@ */ const isRegexCall = isConstructorNameFactory('RegExp'); const isRegex = isTypeFactory(isRegexCall); + /** * Returns a regex safe special characters escaped version of a string. * @@ -4342,6 +4565,7 @@ function escapeRegex(source) { return source.replace(escapeRegexRegex, '\\$&'); } + /** * Convert array of strings to regex. * @@ -4361,6 +4585,7 @@ } return RegExp(source.join('|')); } + /** * Returns a clone of the given object without the given properties. * @@ -4409,6 +4634,7 @@ }); } } + /** * Returns a clone of the source object with the plucked properties. * @@ -4433,6 +4659,7 @@ }); return target; }; + /** * Returns the amount of keys on the object. * @@ -4451,6 +4678,7 @@ } return keys(source).length; } + /** * Creates an object from two arrays, one of property identifiers and one of corresponding values. * @@ -4494,6 +4722,7 @@ }); return [unZippedKeys, values]; }; + const normalizeCase$4 = /[ _-]+/g; /** * Converts a string into Camel case format. @@ -4523,6 +4752,7 @@ }); return result; } + const normalizeCase$3 = /[ _-]+/g; const space$1 = /[ ]+/g; /** @@ -4546,6 +4776,7 @@ .toLowerCase() .replace(space$1, '-'); } + const normalizeCase$2 = /[ _-]+/g; const space = /[ ]+/g; /** @@ -4569,6 +4800,7 @@ .toLowerCase() .replace(space, '_'); } + const normalizeCase$1 = /[ _-]+/g; /** * Converts a string into single space sepperated words in uppercase. @@ -4591,6 +4823,7 @@ .trim() .toUpperCase(); } + const normalizeCase = /[ _-]+/g; /** * Converts a string into single space sepperated words in lowerCase. @@ -4612,6 +4845,7 @@ .trim() .toLowerCase(); } + /** * Inserts text into a string at a given position. * @@ -4699,6 +4933,7 @@ function restString(string, index = 1) { return string.substring(index); } + /** * Replaces all occurrences of strings in an array with a value. * @@ -4717,6 +4952,7 @@ function replaceList(string, words, value) { return string.replace(new RegExp(`\\b${words.join('|')}\\b`, 'gi'), value); } + const truncateDown = (string, maxLength, stringLength) => { const breakAll = string.split(''); const breakAllLength = breakAll.length; @@ -4779,6 +5015,7 @@ const stringLength = string.length; return stringLength > maxLength ? truncateUp(string, maxLength, stringLength) : string; } + const rawURLDecodeRegex = /%(?![\da-f]{2})/gi; const andRegex = /&/g; const lessThanRegex = /console.log('Lucy & diamonds.')`), `<script>console.log('Lucy & diamonds.')</script>`); */ function htmlEntities(string) { - return string.replace(andRegex, '&').replace(lessThanRegex, '<') - .replace(moreThanRegex, '>') - .replace(doubleQuoteRegex, '"'); + return string.replace(andRegex, '&').replace(lessThanRegex, '<').replace(moreThanRegex, '>').replace(doubleQuoteRegex, '"'); } /** * Executes rawURLDecode followd by htmlEntities methods on a string. @@ -4838,6 +5073,7 @@ function sanitize(string) { return htmlEntities(rawURLDecode(string)); } + const tokenizeRegEx = /\S+/g; const wordsRegEx = /\w+/g; /** @@ -4871,6 +5107,7 @@ function words(string) { return string.match(wordsRegEx) || []; } + const getWords = /\w+/g; /** * Returns the first letter capitalized. @@ -4958,6 +5195,7 @@ return upperFirstOnly(match); }); } + /** * Returns the constructor name of an object. * @@ -4973,6 +5211,7 @@ function getTypeName(source) { return getType(source)?.name; } + /** * Checks if the value is an Arguments object. * @@ -4990,6 +5229,7 @@ function isArguments(source) { return hasValue(source) ? source.toString() === objectArguments : false; } + /** * Checks if an object is null or undefined. * @@ -5008,6 +5248,7 @@ function noValue(source) { return !hasValue(source); } + /** * Checks if an object or objects are a Map. * @@ -5023,6 +5264,7 @@ */ const isMapCall = isConstructorNameFactory('Map'); const isMap = isTypeFactory(isMapCall); + /** * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer. * @@ -5047,6 +5289,7 @@ } return false; } + /** * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property. * @@ -5083,6 +5326,7 @@ } return true; } + /** * Checks if an object or objects are a BigInt. * @@ -5097,6 +5341,7 @@ */ const isBigIntCall = isConstructorNameFactory('BigInt'); const isBigInt = isTypeFactory(isBigIntCall); + /** * Checks if the value is a Boolean. * @@ -5112,6 +5357,7 @@ */ const isBooleanCall = isConstructorNameFactory('Boolean'); const isBoolean = isTypeFactory(isBooleanCall); + /** * Checks if an object or objects are a ArrayBuffer. * @@ -5126,6 +5372,7 @@ */ const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer'); const isArrayBuffer = isTypeFactory(isArrayBufferCall); + /** * Checks if an object is the child of another. Typically used for classes. * @@ -5152,6 +5399,7 @@ } return sourceChild instanceof targetParent; } + /** * Checks if an object or objects are a structured-cloneable type. * @@ -5174,6 +5422,7 @@ } return false; } + /** * Checks if the value is a Date. * @@ -5188,6 +5437,7 @@ */ const isDateCall = isConstructorNameFactory('Date'); const isDate = isTypeFactory(isDateCall); + /** * Checks if the value is empty. * @@ -5208,6 +5458,7 @@ } return !hasValue(source); } + /** * Check if a value equals false using strict comparison. * @@ -5226,6 +5477,7 @@ function isFalse(source) { return source === false; } + /** * Checks if an object or objects are a Float32Array. * @@ -5240,6 +5492,7 @@ */ const isF32Call = isConstructorNameFactory('Float32Array'); const isF32 = isTypeFactory(isF32Call); + /** * Checks if an object or objects are a Float64Array. * @@ -5255,6 +5508,7 @@ */ const isF64Call = isConstructorNameFactory('Float64Array'); const isF64 = isTypeFactory(isF64Call); + const { isInteger } = Number; /** * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger. @@ -5270,6 +5524,7 @@ * // => true */ const isFloat = isInteger; + /** * Checks if an object or objects are a Int16Array. * @@ -5285,6 +5540,7 @@ */ const isI16Call = isConstructorNameFactory('Int16Array'); const isI16 = isTypeFactory(isI16Call); + /** * Checks if an object or objects are a Int32Array. * @@ -5298,6 +5554,7 @@ */ const isI32Call = isConstructorNameFactory('Int32Array'); const isI32 = isTypeFactory(isI32Call); + /** * Checks if an object or objects are a Int8Array. * @@ -5313,6 +5570,7 @@ */ const isI8Call = isConstructorNameFactory('Int8Array'); const isI8 = isTypeFactory(isI8Call); + /** * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments. * @@ -5330,6 +5588,7 @@ function isIterable(source) { return hasValue(source) && typeof source[Symbol.iterator] === 'function'; } + /** * Checks if an object is a promise. * @@ -5349,6 +5608,7 @@ } return false; } + /** * Checks if an object is a kind of async object such as async function, promise, or generator. * @@ -5367,6 +5627,7 @@ } return false; } + /** * Checks if an object is the child of another. Typically used for classes. * @@ -5393,6 +5654,7 @@ } return sourceParent instanceof targetChild; } + /** * Checks if an object is a primitive. * @@ -5410,6 +5672,7 @@ const type = typeof value; return source === null || source === undefined || (type !== 'object' && type !== 'function'); } + /** * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways. * @@ -5443,6 +5706,7 @@ } return targetTwo.constructor === targetOne.constructor; } + const { isSafeInteger } = Number; /** * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger. @@ -5458,6 +5722,7 @@ * // => true */ const isSafeInt = isSafeInteger; + function isSameType(source, other) { const sourceType = getType(source); const otherType = getType(other); @@ -5468,6 +5733,7 @@ } return false; } + /** * Check if a value equals true using strict comparison. * @@ -5486,6 +5752,7 @@ function isTrue(source) { return source === true; } + /** * Checks if an object or objects are a Uint16Array. * @@ -5501,6 +5768,7 @@ */ const isU16Call = isConstructorNameFactory('Uint16Array'); const isU16 = isTypeFactory(isU16Call); + /** * Checks if an object or objects are a Uint32Array. * @@ -5516,6 +5784,7 @@ */ const isU32Call = isConstructorNameFactory('Uint32Array'); const isU32 = isTypeFactory(isU32Call); + /** * Checks if an object or objects are a Uint8Array. * @@ -5531,6 +5800,7 @@ */ const isU8Call = isConstructorNameFactory('Uint8Array'); const isU8 = isTypeFactory(isU8Call); + /** * Checks if an object or objects are a Uint8ClampedArray. * @@ -5546,6 +5816,7 @@ */ const isU8CCall = isConstructorNameFactory('Uint8ClampedArray'); const isU8C = isTypeFactory(isU8CCall); + /** * Checks if an object or objects are a WeakMap. * @@ -5560,8 +5831,11 @@ */ const isWeakMapCall = isConstructorNameFactory('WeakMap'); const isWeakMap = isTypeFactory(isWeakMapCall); + const isDeno = typeof globalThis.Deno !== 'undefined'; + const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node; + /** * Check if a value is isTruthy which is anything but false, null, 0, "", undefined, and NaN. * @@ -5580,6 +5854,7 @@ function isTruthy(source, returnIfTrue = true) { return Boolean(source) && returnIfTrue; } + /** * Check if a value is isFalsy which are false, null, 0, "", undefined, and NaN. * @@ -5598,6 +5873,7 @@ function isFalsy(source, returnIfTrue = true) { return Boolean(source) === false && returnIfTrue; } + /** * If source has a value then assign it to an object or call a function. * @@ -5626,6 +5902,7 @@ } } } + /** * Performs a deep comparison between two objects & determines if they're different using strict comparison. * @@ -5643,6 +5920,7 @@ function notEqual(source, target) { return isFalse(isEqual(source, target)); } + const jsonNative = JSON; /** * Parses JSON string with safety check for undefined. @@ -5677,6 +5955,7 @@ * assert(stringify({a:1}), '{a:1}'); */ const stringify = jsonNative.stringify; + function createAssertError(source, expected, localOptions) { const options = globalThis.options || localOptions; let errorTitle; @@ -5727,6 +6006,7 @@ } return true; } + /** * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to. * @@ -5749,6 +6029,7 @@ }); return targetAssign ? assign(targetAssign, results) : results; } + /** * Clears the values out of an array, buffer, and objects like Map that have a clear method. * @@ -5776,6 +6057,7 @@ } return source; } + /** * Creates a structured clone of an object which is a "structured-cloneable type". * @@ -5793,6 +6075,7 @@ function clone(source) { return structuredCloneSafe(source); } + /** * Creates an array with all isFalsy values removed. The values false, null, 0, "", undefined, and NaN are isFalsy. * @@ -5825,6 +6108,7 @@ return isTruthy(item); }); } + /** * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -5880,6 +6164,7 @@ } return results; } + /** * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -5925,6 +6210,7 @@ } return results; } + /** * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -5950,9 +6236,10 @@ forOfCompactMap, forOfCompactMapAsync ); + function everyArg(...methods) { if (isAsync(methods[0])) { - return async function(...args) { + return async function (...args) { return every(methods, async (method) => { return every(args, async (item) => { return method(item); @@ -5960,7 +6247,7 @@ }); }; } - return function(...args) { + return function (...args) { return every(methods, (method) => { return every(args, (item) => { return method(item); @@ -5968,6 +6255,7 @@ }); }; } + /** * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee. * @@ -6013,6 +6301,7 @@ } return results; } + /** * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee. * @@ -6067,6 +6356,7 @@ } return results; } + /** * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee. * @@ -6085,6 +6375,7 @@ * }), {b: true, c: true}); */ const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync); + function returnFlow$1(callable) { return (...methods) => { return (arg) => { @@ -6124,6 +6415,7 @@ * // => 1 */ const flowRight = returnFlow$1(eachRight); + function returnFlow(callable) { return (...methods) => { return async (arg) => { @@ -6165,6 +6457,7 @@ * // => 2 */ const flowAsyncRight = returnFlow(eachRightAsync); + function forMap(source, callback) { const cloned = cloneType(source); const method = cloned.push || cloned.add; @@ -6187,6 +6480,7 @@ } return cloned; } + /** * Takes all but the last item in the array. * @@ -6208,6 +6502,7 @@ }); return sortedObject; } + /** * Checks if an object contains something. * @@ -6258,6 +6553,7 @@ } return false; } + /** * Checks if the string has a '.'. * @@ -6271,6 +6567,7 @@ * assert(hasDot('test.js'), true); */ const hasDot = regexTestFactory(/\./); + /** * Checks if a property on an object has a value. If not, it will assign a value. * @@ -6292,6 +6589,7 @@ } return rootObject; }; + class Intervals { list = construct(Map); construct() {} @@ -6385,6 +6683,7 @@ intervals.remove(index); }); } + function merge(target, ...sources) { each(sources, (currentSource) => { each(currentSource, (sourceItem, sourceKey) => { @@ -6398,6 +6697,7 @@ }); return target; } + /** * Set & Get a model. * @@ -6436,6 +6736,7 @@ } return get(modelName, Model.models); } + /** * Takes the first two arguments given and returns them inside a new array. * @@ -6452,6 +6753,7 @@ function pair(argument1, argument2) { return [argument1, argument2]; } + /** * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee. * @@ -6479,6 +6781,7 @@ } return Promise.all(queue); } + /** * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee. * @@ -6506,6 +6809,7 @@ } return Promise.allSettled(queue); } + /** * A wrapper around the promise constructor. * @@ -6528,6 +6832,7 @@ function promise(callback) { return new Promise(callback); } + /** * Using a deep comparison it checks if properties of two objects using an array are equal. * @@ -6554,6 +6859,7 @@ return isEqual(source[property], compared[property]); }); }; + function setKey(source, key, value) { if (key && isPlainObject(source)) { source[key] = value; @@ -6570,6 +6876,7 @@ } return source; } + function setValue(source, value, key) { if (isNumber(key) && isArray(source)) { source[key] = value; @@ -6582,6 +6889,7 @@ } return source; } + class Store { source; constructor(source = {}) { @@ -6605,6 +6913,7 @@ }); } } + /** * This method returns a new empty array. * @@ -6620,6 +6929,7 @@ const stubArray = () => { return []; }; + /** * This method returns a new empty object. * @@ -6636,6 +6946,7 @@ const stubObject = () => { return {}; }; + /** * This method returns a new empty string. * @@ -6652,6 +6963,7 @@ const stubString = () => { return ''; }; + /** * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument. * @@ -6703,6 +7015,7 @@ } return results; } + /** * Performs a toggle between 2 values using a deep or strict comparison. * @@ -6723,6 +7036,7 @@ function toggle(value, on = true, off = false) { return isEqual(on, value) ? off : on; } + /** * Unique ID Generator Module. * @@ -6818,6 +7132,7 @@ * assert(uniqID.get(), 0); */ const uniqID = construct(UniqID); + /** * Class representing a virtual storage. A drop in replacement for localStorage. * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it. @@ -6919,6 +7234,7 @@ function virtualStorage(initialObject) { return new VirtualStorage(initialObject); } + async function copyToPath(sourceFolder, destinationFolder, file) { const sourcePath = path.join(sourceFolder, file); const destinationPath = path.join(destinationFolder, file); @@ -6941,6 +7257,7 @@ }); return true; } + function currentFile(importMeta) { if (globalThis.__filename) { return __filename; @@ -6953,6 +7270,7 @@ } return path.dirname(url.fileURLToPath(importMeta.url)); } + exports.Chain = Chain; exports.Intervals = Intervals; exports.Model = Model; @@ -7092,8 +7410,9 @@ exports.interval = interval; exports.intervals = intervals; exports.invert = invert; - exports.invoke = invoke; - exports.invokeAsync = invokeAsync; + exports.invokeArray = invokeArray; + exports.invokeCollection = invokeCollection; + exports.invokeCollectionAsync = invokeCollectionAsync; exports.isArguments = isArguments; exports.isArray = isArray; exports.isArrayBuffer = isArrayBuffer; @@ -7305,4 +7624,4 @@ exports.zip = zip; exports.zipObject = zipObject; }); -// # sourceMappingURL=index.bundle.js.map +//# sourceMappingURL=index.bundle.js.map diff --git a/build/index.bundle.js.map b/build/index.bundle.js.map index 40b182e2..1a50137e 100644 --- a/build/index.bundle.js.map +++ b/build/index.bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"index.bundle.js","sources":["../source/arrays/chunk.js","../source/arrays/clear.js","../source/arrays/clone.js","../source/types/isUndefined.js","../source/utilities/hasLength.js","../source/types/isNull.js","../source/types/hasValue.js","../source/utilities/returnValue.js","../source/arrays/each.js","../source/arrays/compactMap.js","../source/arrays/eachAsync.js","../source/arrays/compactMapAsync.js","../source/numbers/isNegative.js","../source/arrays/range.js","../source/utilities/forEach.js","../source/types/isArray.js","../source/arrays/ensure.js","../source/arrays/flattenDeep.js","../source/classes/construct.js","../source/arrays/difference.js","../source/arrays/drop.js","../source/arrays/dropRight.js","../source/arrays/eachRight.js","../source/arrays/eachRightAsync.js","../source/arrays/every.js","../source/arrays/everyAsync.js","../source/arrays/filter.js","../source/arrays/filterAsync.js","../source/arrays/first.js","../source/arrays/flatten.js","../source/arrays/initial.js","../source/arrays/intersect.js","../source/objects/keys.js","../source/utilities/toPath.js","../source/utilities/get.js","../source/objects/hasKeys.js","../source/types/isPlainObject.js","../source/types/isConstructor.js","../source/types/isTypeFactory.js","../source/types/isBuffer.js","../source/utilities/isEqual.js","../source/arrays/isMatch.js","../source/arrays/largest.js","../source/arrays/last.js","../source/arrays/map.js","../source/arrays/mapAsync.js","../source/arrays/mapRight.js","../source/arrays/mapWhile.js","../source/math/subtract.js","../source/arrays/sortNumberAscending.js","../source/arrays/partition.js","../source/math/subtractReverse.js","../source/arrays/sortNumberDescening.js","../source/arrays/remove.js","../source/arrays/rest.js","../source/arrays/right.js","../source/math/randomInt.js","../source/internal/array.js","../source/numbers/isNumberEqual.js","../source/arrays/shuffle.js","../source/arrays/sample.js","../source/arrays/smallest.js","../source/arrays/getNumberInsertIndex.js","../source/arrays/take.js","../source/arrays/takeRight.js","../source/arrays/unique.js","../source/arrays/union.js","../source/arrays/untilFalse.js","../source/arrays/untilTrue.js","../source/arrays/whileCompactMap.js","../source/arrays/whileEach.js","../source/arrays/whileMap.js","../source/arrays/without.js","../source/arrays/xor.js","../source/arrays/zip.js","../source/buffers/ensure.js","../source/buffers/clear.js","../source/collection/countBy.js","../source/collection/countKey.js","../source/collection/countWithoutKey.js","../source/collection/findIndexCache.js","../source/collection/findIndex.js","../source/collection/findItem.js","../source/collection/sortCollectionDescending.js","../source/collection/sortCollectionAlphabetically.js","../source/collection/sortCollectionAscending.js","../source/collection/getHighest.js","../source/collection/getLowest.js","../source/collection/groupBy.js","../source/collection/indexBy.js","../source/collection/invoke.js","../source/collection/invokeAsync.js","../source/types/isNumber.js","../source/types/isString.js","../source/objects/pluckObject.js","../source/collection/pluck.js","../source/collection/sortCollectionAlphabeticallyReverse.js","../source/files/getExtension.js","../source/files/getFilename.js","../source/internal/regexTestFactory.js","../source/files/isFileCSS.js","../source/files/isFileHTML.js","../source/files/isFileJS.js","../source/files/isFileJSON.js","../source/functions/after.js","../source/functions/ary.js","../source/functions/before.js","../source/objects/assign.js","../source/objects/eachAsync.js","../source/objects/each.js","../source/utilities/forEachAsync.js","../source/types/isSet.js","../source/utilities/forOf.js","../source/types/isGenerator.js","../source/utilities/forOfAsync.js","../source/types/isFunction.js","../source/types/isAsync.js","../source/utilities/generateLoop.js","../source/utilities/each.js","../source/functions/chain.js","../source/functions/curry.js","../source/functions/curryRight.js","../source/utilities/stubTrue.js","../source/utilities/stubFalse.js","../source/utilities/noop.js","../source/utilities/times.js","../source/utilities/timer.js","../source/internal/apply.js","../source/functions/debounce.js","../source/functions/ifInvoke.js","../source/functions/inAsync.js","../source/functions/inSync.js","../source/functions/negate.js","../source/functions/nthArg.js","../source/functions/once.js","../source/objects/mapAsync.js","../source/objects/map.js","../source/types/getType.js","../source/types/cloneType.js","../source/utilities/forOfMap.js","../source/utilities/forOfMapAsync.js","../source/utilities/map.js","../source/functions/over.js","../source/objects/everyAsync.js","../source/objects/every.js","../source/utilities/forOfEvery.js","../source/utilities/forOfEveryAsync.js","../source/utilities/every.js","../source/functions/overEvery.js","../source/functions/rearged.js","../source/functions/throttle.js","../source/functions/wrap.js","../source/utilities/cacheNativeMethod.js","../source/internal/object.js","../source/internal/isSame.js","../source/math/add.js","../source/math/deduct.js","../source/math/divide.js","../source/math/increment.js","../source/math/multiple.js","../source/math/progress.js","../source/math/randomFloat.js","../source/math/remainder.js","../source/math/subtractAll.js","../source/math/sumAll.js","../source/numbers/isNumberInRange.js","../source/numbers/isNumberNotInRange.js","../source/numbers/isPositive.js","../source/numbers/isZero.js","../source/objects/getEntries.js","../source/objects/compactKeys.js","../source/objects/compactMapAsync.js","../source/objects/compactMap.js","../source/objects/filter.js","../source/objects/filterAsync.js","../source/objects/invert.js","../source/objects/isMatch.js","../source/types/isRegex.js","../source/regexps/escapeRegex.js","../source/regexps/arrayToRegex.js","../source/objects/omit.js","../source/objects/pick.js","../source/objects/size.js","../source/objects/zip.js","../source/strings/camelCase.js","../source/strings/kebabCase.js","../source/strings/snakeCase.js","../source/strings/upperCase.js","../source/strings/lowerCase.js","../source/strings/range.js","../source/strings/replace.js","../source/strings/truncate.js","../source/strings/sanitize.js","../source/strings/tokenize.js","../source/strings/typography.js","../source/types/getTypeName.js","../source/types/isArguments.js","../source/types/noValue.js","../source/types/isMap.js","../source/types/isTypedArray.js","../source/types/isArrayLike.js","../source/types/isBigInt.js","../source/types/isBoolean.js","../source/types/isArrayBuffer.js","../source/types/isChild.js","../source/types/isCloneable.js","../source/types/isDate.js","../source/types/isEmpty.js","../source/types/isFalse.js","../source/types/isF32.js","../source/types/isF64.js","../source/types/isFloat.js","../source/types/isI16.js","../source/types/isI32.js","../source/types/isI8.js","../source/types/isIterable.js","../source/types/isPromise.js","../source/types/isKindAsync.js","../source/types/isParent.js","../source/types/isPrimitive.js","../source/types/isRelated.js","../source/types/isSafeInt.js","../source/types/isSameType.js","../source/types/isTrue.js","../source/types/isU16.js","../source/types/isU32.js","../source/types/isU8.js","../source/types/isU8C.js","../source/types/isWeakMap.js","../source/types/isDeno.js","../source/types/isNode.js","../source/types/isTruthy.js","../source/types/isFalsy.js","../source/utilities/ifValue.js","../source/utilities/notEqual.js","../source/utilities/json.js","../source/utilities/assert.js","../source/utilities/bindAll.js","../source/utilities/clear.js","../source/utilities/clone.js","../source/utilities/compact.js","../source/utilities/forOfCompactMapAsync.js","../source/utilities/forOfCompactMap.js","../source/utilities/compactMap.js","../source/utilities/everyArg.js","../source/utilities/forOfFilter.js","../source/utilities/forOfFilterAsync.js","../source/utilities/filter.js","../source/utilities/flow.js","../source/utilities/flowAsync.js","../source/utilities/forMap.js","../source/utilities/arraysToObject.js","../source/utilities/has.js","../source/utilities/hasDot.js","../source/utilities/ifNotAssign.js","../source/utilities/interval.js","../source/utilities/merge.js","../source/utilities/model.js","../source/utilities/pair.js","../source/utilities/concurrent.js","../source/utilities/concurrentStatus.js","../source/utilities/promise.js","../source/utilities/propertyMatch.js","../source/utilities/setKey.js","../source/utilities/setValue.js","../source/utilities/store.js","../source/utilities/stubArray.js","../source/utilities/stubObject.js","../source/utilities/stubString.js","../source/utilities/timesAsync.js","../source/utilities/toggle.js","../source/utilities/uid.js","../source/utilities/virtualStorage.js","../source/filesystem/copyFolder.js","../source/filesystem/directory.js"],"sourcesContent":["/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invoke\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invoke(collection, property, value) {\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * (async () => {\n * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]);\n * });\n *\n * @example\n * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invokeAsync(collection, property, value) {\n\treturn mapAsyncArray(collection, async (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","import {\n\treaddir, copyFile, mkdir, stat\n} from 'fs/promises';\nimport path from 'path';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nasync function copyToPath(sourceFolder, destinationFolder, file) {\n\tconst sourcePath = path.join(sourceFolder, file);\n\tconst destinationPath = path.join(destinationFolder, file);\n\tawait copyFile(sourcePath, destinationPath);\n}\nexport async function copyFolder(sourceFolder, destinationFolder) {\n\tconst files = await readdir(sourceFolder);\n\tawait eachAsyncArray(files, async (file) => {\n\t\tconst sourcePath = path.join(sourceFolder, file);\n\t\tconst filestats = await stat(sourcePath);\n\t\tif (filestats.isDirectory()) {\n\t\t\tconst folderDestination = path.join(destinationFolder, file.replace(sourceFolder, ''));\n\t\t\tawait mkdir(folderDestination, {\n\t\t\t\trecursive: true\n\t\t\t});\n\t\t\tawait copyFolder(sourcePath, folderDestination);\n\t\t} else {\n\t\t\tawait copyToPath(sourceFolder, destinationFolder, file);\n\t\t}\n\t});\n\treturn true;\n}\n\n","import path from 'path';\nimport { fileURLToPath } from 'url';\nexport function currentFile(importMeta) {\n\tif (globalThis.__filename) {\n\t\treturn __filename;\n\t}\n\treturn fileURLToPath(importMeta.url);\n}\nexport function currentPath(importMeta) {\n\tif (globalThis.__dirname) {\n\t\treturn __dirname;\n\t}\n\treturn path.dirname(fileURLToPath(importMeta.url));\n}\n"],"names":["sign","random","normalizeCase","space","returnFlow","copyFile","readdir","stat","mkdir","fileURLToPath"],"mappings":"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AAC;CACxB;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE;CAC/B,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;CACnB;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;CACtC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;CACvB;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE;CAClC,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;CACnB;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;CACxC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;CACvB;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE;CACnD,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;CAClB,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;CACF,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE;CAC1B,EAAE,OAAO,CAAC,CAAC;CACX,EAAE;CACF,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,IAAI,GAAG,CAAC;CACtC;;CCtBA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;CAC1C,CAAC,OAAO,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;CACrC;;CClBA;CACA;CACA;CACA;CACA;CACA;C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CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;CAC7B,EAAE;CACF,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC1B;;CCzBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,MAAM,EAAE;CAChC,CAAC,OAAO,MAAM,KAAK,KAAK,CAAC;CACzB;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,wBAAwB,CAAC,cAAc,EAAE;AACtD,OAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;CCb5C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,wBAAwB,CAAC,cAAc,EAAE;AACtD,OAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;CChB5C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,OAAO,GAAG;;CCZvB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,wBAAwB,CAAC,YAAY,EAAE;AACpD,OAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;CCd5C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,wBAAwB,CAAC,YAAY,EAAE;AACpD,OAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;CCZ5C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,QAAQ,GAAG,wBAAwB,CAAC,WAAW,EAAE;AAClD,OAAC,IAAI,GAAG,aAAa,CAAC,QAAQ;;CCf1C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,MAAM,EAAE;CACnC,CAAC,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC;CAC1E;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE;CAClC,CAAC,IAAI,MAAM,EAAE;CACb,EAAE,OAAO,MAAM,YAAY,OAAO,CAAC;CACnC,EAAE;CACF,CAAC,OAAO,KAAK,CAAC;CACd;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,IAAI,MAAM,EAAE;CACb,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;CACrE,EAAE;CACF,CAAC,OAAO,KAAK,CAAC;CACd;;CCpBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE;CACpD,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;CACzD,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;CACF,CAAC,OAAO,YAAY,YAAY,WAAW,CAAC;CAC5C;;CCzBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;CAC3B,CAAC,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;CAC9F;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE;CAChD,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;CAC/C,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;CACF,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;CACrB,EAAE,OAAO,SAAS,YAAY,SAAS,CAAC;CACxC,EAAE;CACF,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;CACrB,EAAE,OAAO,SAAS,YAAY,SAAS,CAAC;CACxC,EAAE;CACF,CAAC,OAAO,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW,CAAC;CACxD;;CCjCA,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG;;CCblB,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE;CAC1C,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpC,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CAClC,CAAC,IAAI,UAAU,KAAK,SAAS,EAAE;CAC/B,EAAE,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;CAC1C,GAAG,OAAO,IAAI,CAAC;CACf,GAAG;CACH,EAAE;CACF,CAAC,OAAO,KAAK,CAAC;CACd;;CCVA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE;CAC/B,CAAC,OAAO,MAAM,KAAK,IAAI,CAAC;CACxB;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,wBAAwB,CAAC,aAAa,EAAE;AACrD,OAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;CCd5C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,wBAAwB,CAAC,aAAa,EAAE;AACrD,OAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;CCd5C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,QAAQ,GAAG,wBAAwB,CAAC,YAAY,EAAE;AACnD,OAAC,IAAI,GAAG,aAAa,CAAC,QAAQ;;CCd1C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,wBAAwB,CAAC,mBAAmB,EAAE;AAC3D,OAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;CCb5C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,aAAa,GAAG,wBAAwB,CAAC,SAAS,EAAE;AACrD,OAAC,SAAS,GAAG,aAAa,CAAC,aAAa;;AChBxC,OAAC,MAAM,GAAG,OAAO,UAAU,CAAC,IAAI,KAAK;;ACArC,OAAC,QAAQ,GAAG,OAAO,UAAU,CAAC,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;;CCA1G;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE;CACtD,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC;CACxC;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE;CACrD,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC;CAClD;;CCbA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;CACxD,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACvB,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;CAC1B,GAAG,IAAI,QAAQ,EAAE;CACjB,IAAI,OAAO,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;CACzC,IAAI;CACJ,GAAG,OAAO,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;CAC1B,GAAG,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;CACpC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;CAC7B,GAAG,OAAO,MAAM,CAAC;CACjB,GAAG;CACH,EAAE;CACF;;CC7BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE;CACzC,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACzC;;CClBA,MAAM,UAAU,GAAG,IAAI,CAAC;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE;CAC3C,CAAC,IAAI,MAAM,EAAE;CACb,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C,EAAE;CACF,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,UAAU,CAAC;;CC7BpC,SAAS,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE;CAC3D,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,YAAY,CAAC;CACpD,CAAC,IAAI,UAAU,CAAC;CAChB,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;CAC1B,EAAE,UAAU,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;CAC/D,EAAE,MAAM,IAAI,OAAO,EAAE;CACrB,EAAE,UAAU,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;CAC5E,EAAE;CACF,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC;AAC7C,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9B,YAAY,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;CAC9C,CAAC;CACM,eAAe,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE;CAChE,CAAC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC;CAChC,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,KAAK,CAAC;CAC5F,CAAC,IAAI,gBAAgB,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;CACrD,EAAE,OAAO,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;CACtD,EAAE;CACF,CAAC,OAAO,IAAI,CAAC;CACb,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;CAClD,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE;CACnD,EAAE,OAAO,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;CAChD,EAAE;CACF,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,KAAK,CAAC;CACtF,CAAC,IAAI,gBAAgB,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;CACrD,EAAE,OAAO,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;CACtD,EAAE;CACF,CAAC,OAAO,IAAI,CAAC;CACb;;CC9CA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE;CAC5D,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;CAC3C,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;CACvD,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;CACjE;;CCrBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,MAAM,EAAE;CAC9B,CAAC,IAAI,MAAM,EAAE;CACb,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACxB,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9B,GAAG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;CAC9B,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;CAC7B,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;CAC3B,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;CAClB,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;CAC5B,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;CACrB,GAAG;CACH,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CC9BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,MAAM,mBAAmB,GAAG,UAAU,CAAC,eAAe,CAAC;CAChD,SAAS,KAAK,CAAC,MAAM,EAAE;CAC9B,CAAC,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;CACpC;;CCbA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,MAAM,EAAE;CAChC,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;CAC5B,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;CAClC,EAAE,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC;CAC7C,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC;CAC1B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE;CAC7C,GAAG,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;CACjC,GAAG,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;CAChC,GAAG,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;CACrC,GAAG,IAAI,UAAU,EAAE;CACnB,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACjC,IAAI;CACJ,GAAG;CACH,EAAE,OAAO,YAAY,CAAC;CACtB,EAAE;CACF,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK;CAChC,EAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;CACxB,EAAE,CAAC,CAAC;CACJ;;CC1BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,oBAAoB,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE;CACzG,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;CAC1B,EAAE,MAAM,gBAAgB,GAAG,EAAE,CAAC;CAC9B,EAAE,WAAW,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE;CACrD,GAAG,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;CACjE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACzB,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAClC,IAAI;CACJ,GAAG;CACH,EAAE,OAAO,gBAAgB,CAAC;CAC1B,EAAE;CACF,CAAC,MAAM,OAAO,GAAG,aAAa,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;CACpD,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;CACvC,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;CACjD,EAAE,MAAM,eAAe,GAAG,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACjE,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;CAC9B,GAAG,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CACzD,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACzB,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;CAC5B,IAAI;CACJ,GAAG;CACH,EAAE,OAAO,OAAO,CAAC;CACjB,EAAE;CACF,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAC3C,CAAC,WAAW,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;CAC1C,EAAE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CAC7D,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACxB,GAAG,IAAI,SAAS,EAAE;CAClB,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;CAC7B,IAAI,MAAM;CACV,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;CAC1B,IAAI;CACJ,GAAG;CACH,EAAE;CACF,CAAC,OAAO,OAAO,CAAC;CAChB;;CCtDA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,eAAe,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE,aAAa,EAAE;CAC/E,CAAC,MAAM,OAAO,GAAG,aAAa,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;CACpD,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;CACvC,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;CACjD,EAAE,MAAM,eAAe,GAAG,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACjE,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;CAC9B,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CACnD,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACzB,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;CAC5B,IAAI;CACJ,GAAG;CACH,EAAE,OAAO,OAAO,CAAC;CACjB,EAAE;CACF,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAC3C,CAAC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;CACpC,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CACvD,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACxB,GAAG,IAAI,SAAS,EAAE;CAClB,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;CAC7B,IAAI,MAAM;CACV,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;CAC1B,IAAI;CACJ,GAAG;CACH,EAAE;CACF,CAAC,OAAO,OAAO,CAAC;CAChB;;CC7CA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,UAAU,GAAG,YAAY,CAAC,eAAe,EAAE,oBAAoB;CAC5E,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,eAAe,EAAE,oBAAoB;;CCvBxE,SAAS,QAAQ,CAAC,GAAG,OAAO,EAAE;CACrC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;CAC1B,EAAE,OAAO,eAAe,GAAG,IAAI,EAAE;CACjC,GAAG,OAAO,KAAK,CAAC,OAAO,EAAE,OAAO,MAAM,KAAK;CAC3C,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK;CACvC,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;CACzB,KAAK,CAAC,CAAC;CACP,IAAI,CAAC,CAAC;CACN,GAAG,CAAC;CACJ,EAAE;CACF,CAAC,OAAO,SAAS,GAAG,IAAI,EAAE;CAC1B,EAAE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK;CACpC,GAAG,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK;CAChC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;CACxB,IAAI,CAAC,CAAC;CACN,GAAG,CAAC,CAAC;CACL,EAAE,CAAC;CACH;;CCZA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE,aAAa,EAAE;CAC3E,CAAC,MAAM,OAAO,GAAG,aAAa,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;CACpD,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;CACvC,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;CACjD,EAAE,MAAM,eAAe,GAAG,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACjE,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;CAC9B,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CACnD,GAAG,IAAI,MAAM,KAAK,IAAI,EAAE;CACxB,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;CAC3B,IAAI;CACJ,GAAG;CACH,EAAE,MAAM;CACR,EAAE,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAC5C,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;CACrC,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CACxD,GAAG,IAAI,MAAM,KAAK,IAAI,EAAE;CACxB,IAAI,IAAI,SAAS,EAAE;CACnB,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;CAC7B,KAAK,MAAM;CACX,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CAC1B,KAAK;CACL,IAAI;CACJ,GAAG;CACH,EAAE;CACF,CAAC,OAAO,OAAO,CAAC;CAChB;;CC3CA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE;CACrG,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;CAC1B,EAAE,MAAM,gBAAgB,GAAG,EAAE,CAAC;CAC9B,EAAE,WAAW,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE;CACrD,GAAG,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;CAChE,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAChC,IAAI;CACJ,GAAG;CACH,EAAE,OAAO,gBAAgB,CAAC;CAC1B,EAAE;CACF,CAAC,MAAM,OAAO,GAAG,aAAa,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;CACpD,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;CACvC,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;CACjD,EAAE,MAAM,eAAe,GAAG,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACjE,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;CAC9B,GAAG,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CACzD,GAAG,IAAI,MAAM,KAAK,IAAI,EAAE;CACxB,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;CAC3B,IAAI;CACJ,GAAG;CACH,EAAE,MAAM;CACR,EAAE,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAC5C,EAAE,WAAW,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;CAC3C,GAAG,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CAC9D,GAAG,IAAI,MAAM,KAAK,IAAI,EAAE;CACxB,IAAI,IAAI,SAAS,EAAE;CACnB,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;CAC7B,KAAK,MAAM;CACX,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CAC1B,KAAK;CACL,IAAI;CACJ,GAAG;CACH,EAAE;CACF,CAAC,OAAO,OAAO,CAAC;CAChB;;CCtDA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB;;CCtBhI,SAASE,YAAU,CAAC,QAAQ,EAAE;CAC9B,CAAC,OAAO,CAAC,GAAG,OAAO,KAAK;CACxB,EAAE,OAAO,CAAC,GAAG,KAAK;CAClB,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC;CACnB,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK;CAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;CACxB,IAAI,CAAC,CAAC;CACN,GAAG,OAAO,KAAK,CAAC;CAChB,GAAG,CAAC;CACJ,EAAE,CAAC;CACH,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,IAAI,GAAGA,YAAU,CAAC,SAAS,EAAE;CAC1C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAGA,YAAU,CAAC,SAAS;;CCtC7C,SAAS,UAAU,CAAC,QAAQ,EAAE;CAC9B,CAAC,OAAO,CAAC,GAAG,OAAO,KAAK;CACxB,EAAE,OAAO,OAAO,GAAG,KAAK;CACxB,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC;CACnB,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,IAAI,KAAK;CAC3C,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;CAC9B,IAAI,CAAC,CAAC;CACN,GAAG,OAAO,KAAK,CAAC;CAChB,GAAG,CAAC;CACJ,EAAE,CAAC;CACH,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE;CACpD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,cAAc,GAAG,UAAU,CAAC,cAAc;;CCvChD,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE;CACzC,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;CAClC,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC;CAC1C,CAAC,IAAI,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;CACnC,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC1C,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;CAC3B,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CACzC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;CACvB,GAAG,CAAC,CAAC;CACL,EAAE,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;CACpC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;CAChC,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CAC9C,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;CAC3B,GAAG,CAAC,CAAC;CACL,EAAE,MAAM;CACR,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;CAChC,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CAC9C,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;CACxB,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CCvBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE;CACnD,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;CACzB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;CAClC,EAAE,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;CACvC,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,YAAY,CAAC;CACrB;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;CAC9C,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;CACzC,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;CACF,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACvB,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACxB,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAC5C,GAAG;CACH,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;CACvB,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC9B,GAAG;CACH,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;CAC1B,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;CAClC,GAAG;CACH,EAAE,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;CACjC,GAAG,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;CACrC,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;CACtB,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACxB,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAC5C,GAAG;CACH,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;CACvB,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;CAClC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC7B,IAAI,CAAC,CAAC;CACN,GAAG;CACH,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;CACvB,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;CAClC,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;CACtC,IAAI,CAAC,CAAC;CACN,GAAG;CACH,EAAE;CACF,CAAC,OAAO,KAAK,CAAC;CACd;;CCtDA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,MAAM,GAAG,gBAAgB,CAAC,IAAI;;CCZ3C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,WAAW,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,KAAK;CAChE,CAAC,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE;CAClD,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;CACnC,EAAE;CACF,CAAC,OAAO,UAAU,CAAC;CACnB;;CChBO,MAAM,SAAS,CAAC;CACvB,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;CACvB,CAAC,SAAS,GAAG;CACb,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,MAAM,CAAC,EAAE,EAAE;CACZ,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CACvB,EAAE;CACF,CAAC,GAAG,CAAC,EAAE,EAAE;CACT,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;CAC3B,EAAE;CACF,CAAC,GAAG,CAAC,EAAE,EAAE;CACT,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;CAC3B,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE;CAErB,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM;CAC/B,GAAG,QAAQ,EAAE,CAAC;CACd,GAAG,EAAE,IAAI,CAAC,CAAC;CACX,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;CAC3B,EAAE,OAAO,EAAE,CAAC;CACZ,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,KAAK,GAAG;CACT,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;CAC3B,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;CACnC,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CAC1B,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC;AACW,OAAC,SAAS,GAAG,SAAS,CAAC,SAAS,EAAE;CAC9C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE;CACzC,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;CACtC,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,cAAc,GAAG;CACjC,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CAChC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK;CACtB,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAC1B,EAAE,CAAC,CAAC;CACJ;;CCjFO,SAAS,KAAK,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE;CAC1C,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,KAAK;CAClC,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,UAAU,EAAE,SAAS,KAAK;CACjD,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;CAC1B,IAAI,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE;CAChF,KAAK,OAAO,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC;CACjD,KAAK;CACL,IAAI;CACJ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC;CAClC,GAAG,CAAC,CAAC;CACL,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,MAAM,CAAC;CACf;;CC1BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,MAAM,KAAK,CAAC;CACnB,CAAC,OAAO,MAAM,GAAG,EAAE,CAAC;CACpB,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE;CACpC,EAAE,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;CAC5B,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;CAC5B,GAAG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;CAC9B,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;CAC3C,GAAG,MAAM;CACT,GAAG,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;CAC3B,GAAG;CACH,EAAE;CACF,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE;CAC7C,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;CAC3B,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;CACnD,EAAE;CACF,CAAC,OAAO,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACrC;;CCxCA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE;CAC3C,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;CAC/B;;CCdA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;CACvD,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;CACnC,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;CAClB,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;CAClD,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;CAC/E,EAAE;CACF,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CAC3B;;CC1BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;CAC7D,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;CACnC,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;CAClB,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;CAClD,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;CAC/E,EAAE;CACF,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;CAClC;;CC5BA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,OAAO,CAAC,QAAQ,EAAE;CAClC,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC9B;;CClBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,aAAa,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;CAC9E,CAAC,OAAO,UAAU,CAAC,UAAU,EAAE,CAAC,QAAQ,KAAK;CAC7C,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;CACvD,EAAE,CAAC,CAAC;CACJ;;CCxBO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;CAC3C,CAAC,IAAI,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;CACnC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CACtB,EAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;CAC9C,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CACtB,EAAE,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE;CACxB,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;CACzB,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;CACzB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACrB,EAAE,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE;CACxB,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACpB,EAAE,MAAM;CACR,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CACtB,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CCfO,SAAS,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;CAC7C,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;CACvC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CACtB,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;CACzB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACrB,EAAE,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE;CACxB,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACpB,EAAE,MAAM;CACR,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CACtB,EAAE;CACF,CAAC,OAAO,MAAM,CAAC;CACf;;CCdO,MAAM,KAAK,CAAC;CACnB,CAAC,MAAM,CAAC;CACR,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE;CAC1B,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;CACvB,EAAE,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;CACrD,GAAG,OAAO,MAAM,CAAC;CACjB,GAAG;CACH,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,KAAK;CACnC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;CAClD,GAAG,CAAC,CAAC;CACL,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;CAChC,GAAG,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE;CAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;CAC9D,IAAI,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;CACjC,IAAI;CACJ,GAAG,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE;CACrC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;CAC9D,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;CAC7C,IAAI,OAAO,IAAI,CAAC;CAChB,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,EAAE;CACF;;CCvBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,SAAS,GAAG,MAAM;CAC/B,CAAC,OAAO,EAAE,CAAC;CACX;;CCdA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,UAAU,GAAG,MAAM;CAChC,CAAC,OAAO,EAAE,CAAC;CACX;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,UAAU,GAAG,MAAM;CAChC,CAAC,OAAO,EAAE,CAAC;CACX;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE;CACnD,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;CAC9C,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;CACzB,EAAE;CACF,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,eAAe,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;CACpE,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;CAC9C,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC1C,EAAE;CACF,CAAC,OAAO,OAAO,CAAC;CAChB;;CCjDA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,KAAK,EAAE;CACtD,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;CACxC;;CCpBA;CACA;CACA;CACA;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,MAAM,MAAM,CAAC;CACpB,CAAC,WAAW,GAAG,CAAC,CAAC;CACjB,CAAC,KAAK,GAAG,EAAE,CAAC;CACZ,CAAC,SAAS,GAAG,CAAC,CAAC;CACf;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,GAAG,GAAG;CACP,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;CAClC,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;CACxB,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;CACpB,GAAG,MAAM;CACT,GAAG,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;CAC7B,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;CACtB,GAAG;CACH,EAAE,OAAO,MAAM,CAAC;CAChB,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,IAAI,CAAC,EAAE,EAAE;CACV,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CACtB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;CACnB,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;CACxC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,SAAS,CAAC;CAC1D,EAAE,IAAI,QAAQ,IAAI,WAAW,EAAE;CAC/B,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;CAChB,GAAG;CACH,EAAE;CACF,CAAC,KAAK,GAAG;CACT,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;CACvB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;CACxB,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;CACrB,EAAE;CACF,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,MAAM,GAAG,SAAS,CAAC,MAAM;;CChGtC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,MAAM,cAAc,CAAC;CAC5B,CAAC,WAAW,CAAC,aAAa,GAAG,EAAE,EAAE;CACjC,EAAE,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;CAC7B,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,OAAO,CAAC,GAAG,EAAE;CACd,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACzB,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;CACrB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CAC1B,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,KAAK,GAAG;CACT,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;CAClB,EAAE;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,UAAU,CAAC,GAAG,EAAE;CACjB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CACzB,EAAE;CACF,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,cAAc,CAAC,aAAa,EAAE;CAC9C,CAAC,OAAO,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;CAC1C;;CC/FA,eAAe,UAAU,CAAC,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE;CACjE,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;CAClD,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;CAC5D,CAAC,MAAMC,iBAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;CAC7C,CAAC;CACM,eAAe,UAAU,CAAC,YAAY,EAAE,iBAAiB,EAAE;CAClE,CAAC,MAAM,KAAK,GAAG,MAAMC,gBAAO,CAAC,YAAY,CAAC,CAAC;CAC3C,CAAC,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK;CAC7C,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;CACnD,EAAE,MAAM,SAAS,GAAG,MAAMC,aAAI,CAAC,UAAU,CAAC,CAAC;CAC3C,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE;CAC/B,GAAG,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;CAC1F,GAAG,MAAMC,cAAK,CAAC,iBAAiB,EAAE;CAClC,IAAI,SAAS,EAAE,IAAI;CACnB,IAAI,CAAC,CAAC;CACN,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;CACnD,GAAG,MAAM;CACT,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;CAC3D,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC,OAAO,IAAI,CAAC;CACb;;CCxBO,SAAS,WAAW,CAAC,UAAU,EAAE;CACxC,CAAC,IAAI,UAAU,CAAC,UAAU,EAAE;CAC5B,EAAE,OAAO,UAAU,CAAC;CACpB,EAAE;CACF,CAAC,OAAOC,iBAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;CACtC,CAAC;CACM,SAAS,WAAW,CAAC,UAAU,EAAE;CACxC,CAAC,IAAI,UAAU,CAAC,SAAS,EAAE;CAC3B,EAAE,OAAO,SAAS,CAAC;CACnB,EAAE;CACF,CAAC,OAAO,IAAI,CAAC,OAAO,CAACA,iBAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;CACpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"index.bundle.js","sources":["../source/arrays/chunk.js","../source/arrays/clear.js","../source/arrays/clone.js","../source/types/isUndefined.js","../source/utilities/hasLength.js","../source/types/isNull.js","../source/types/hasValue.js","../source/utilities/returnValue.js","../source/arrays/each.js","../source/arrays/compactMap.js","../source/arrays/eachAsync.js","../source/arrays/compactMapAsync.js","../source/numbers/isNegative.js","../source/arrays/range.js","../source/utilities/forEach.js","../source/types/isArray.js","../source/arrays/ensure.js","../source/arrays/flattenDeep.js","../source/classes/construct.js","../source/arrays/difference.js","../source/arrays/drop.js","../source/arrays/dropRight.js","../source/arrays/eachRight.js","../source/arrays/eachRightAsync.js","../source/arrays/every.js","../source/arrays/everyAsync.js","../source/arrays/filter.js","../source/arrays/filterAsync.js","../source/arrays/first.js","../source/arrays/flatten.js","../source/arrays/initial.js","../source/arrays/intersect.js","../source/arrays/invoke.js","../source/objects/keys.js","../source/utilities/toPath.js","../source/utilities/get.js","../source/objects/hasKeys.js","../source/types/isPlainObject.js","../source/types/isConstructor.js","../source/types/isTypeFactory.js","../source/types/isBuffer.js","../source/utilities/isEqual.js","../source/arrays/isMatch.js","../source/arrays/largest.js","../source/arrays/last.js","../source/arrays/map.js","../source/arrays/mapAsync.js","../source/arrays/mapRight.js","../source/arrays/mapWhile.js","../source/math/subtract.js","../source/arrays/sortNumberAscending.js","../source/arrays/partition.js","../source/math/subtractReverse.js","../source/arrays/sortNumberDescening.js","../source/arrays/remove.js","../source/arrays/rest.js","../source/arrays/right.js","../source/math/randomInt.js","../source/internal/array.js","../source/numbers/isNumberEqual.js","../source/arrays/shuffle.js","../source/arrays/sample.js","../source/arrays/smallest.js","../source/arrays/getNumberInsertIndex.js","../source/arrays/take.js","../source/arrays/takeRight.js","../source/arrays/unique.js","../source/arrays/union.js","../source/arrays/untilFalse.js","../source/arrays/untilTrue.js","../source/arrays/whileCompactMap.js","../source/arrays/whileEach.js","../source/arrays/whileMap.js","../source/arrays/without.js","../source/arrays/xor.js","../source/arrays/zip.js","../source/buffers/ensure.js","../source/buffers/clear.js","../source/collection/countBy.js","../source/collection/countKey.js","../source/collection/countWithoutKey.js","../source/collection/findIndexCache.js","../source/collection/findIndex.js","../source/collection/findItem.js","../source/collection/sortCollectionDescending.js","../source/collection/sortCollectionAlphabetically.js","../source/collection/sortCollectionAscending.js","../source/collection/getHighest.js","../source/collection/getLowest.js","../source/collection/groupBy.js","../source/collection/indexBy.js","../source/collection/invoke.js","../source/collection/invokeAsync.js","../source/types/isNumber.js","../source/types/isString.js","../source/objects/pluckObject.js","../source/collection/pluck.js","../source/collection/sortCollectionAlphabeticallyReverse.js","../source/files/getExtension.js","../source/files/getFilename.js","../source/internal/regexTestFactory.js","../source/files/isFileCSS.js","../source/files/isFileHTML.js","../source/files/isFileJS.js","../source/files/isFileJSON.js","../source/functions/after.js","../source/functions/ary.js","../source/functions/before.js","../source/objects/assign.js","../source/objects/eachAsync.js","../source/objects/each.js","../source/utilities/forEachAsync.js","../source/types/isSet.js","../source/utilities/forOf.js","../source/types/isGenerator.js","../source/utilities/forOfAsync.js","../source/types/isFunction.js","../source/types/isAsync.js","../source/utilities/generateLoop.js","../source/utilities/each.js","../source/functions/chain.js","../source/functions/curry.js","../source/functions/curryRight.js","../source/utilities/stubTrue.js","../source/utilities/stubFalse.js","../source/utilities/noop.js","../source/utilities/times.js","../source/utilities/timer.js","../source/internal/apply.js","../source/functions/debounce.js","../source/functions/ifInvoke.js","../source/functions/inAsync.js","../source/functions/inSync.js","../source/functions/negate.js","../source/functions/nthArg.js","../source/functions/once.js","../source/objects/mapAsync.js","../source/objects/map.js","../source/types/getType.js","../source/types/cloneType.js","../source/utilities/forOfMap.js","../source/utilities/forOfMapAsync.js","../source/utilities/map.js","../source/functions/over.js","../source/objects/everyAsync.js","../source/objects/every.js","../source/utilities/forOfEvery.js","../source/utilities/forOfEveryAsync.js","../source/utilities/every.js","../source/functions/overEvery.js","../source/functions/rearged.js","../source/functions/throttle.js","../source/functions/wrap.js","../source/utilities/cacheNativeMethod.js","../source/internal/object.js","../source/internal/isSame.js","../source/math/add.js","../source/math/deduct.js","../source/math/divide.js","../source/math/increment.js","../source/math/multiple.js","../source/math/progress.js","../source/math/randomFloat.js","../source/math/remainder.js","../source/math/subtractAll.js","../source/math/sumAll.js","../source/numbers/isNumberInRange.js","../source/numbers/isNumberNotInRange.js","../source/numbers/isPositive.js","../source/numbers/isZero.js","../source/objects/getEntries.js","../source/objects/compactKeys.js","../source/objects/compactMapAsync.js","../source/objects/compactMap.js","../source/objects/filter.js","../source/objects/filterAsync.js","../source/objects/invert.js","../source/objects/isMatch.js","../source/types/isRegex.js","../source/regexps/escapeRegex.js","../source/regexps/arrayToRegex.js","../source/objects/omit.js","../source/objects/pick.js","../source/objects/size.js","../source/objects/zip.js","../source/strings/camelCase.js","../source/strings/kebabCase.js","../source/strings/snakeCase.js","../source/strings/upperCase.js","../source/strings/lowerCase.js","../source/strings/range.js","../source/strings/replace.js","../source/strings/truncate.js","../source/strings/sanitize.js","../source/strings/tokenize.js","../source/strings/typography.js","../source/types/getTypeName.js","../source/types/isArguments.js","../source/types/noValue.js","../source/types/isMap.js","../source/types/isTypedArray.js","../source/types/isArrayLike.js","../source/types/isBigInt.js","../source/types/isBoolean.js","../source/types/isArrayBuffer.js","../source/types/isChild.js","../source/types/isCloneable.js","../source/types/isDate.js","../source/types/isEmpty.js","../source/types/isFalse.js","../source/types/isF32.js","../source/types/isF64.js","../source/types/isFloat.js","../source/types/isI16.js","../source/types/isI32.js","../source/types/isI8.js","../source/types/isIterable.js","../source/types/isPromise.js","../source/types/isKindAsync.js","../source/types/isParent.js","../source/types/isPrimitive.js","../source/types/isRelated.js","../source/types/isSafeInt.js","../source/types/isSameType.js","../source/types/isTrue.js","../source/types/isU16.js","../source/types/isU32.js","../source/types/isU8.js","../source/types/isU8C.js","../source/types/isWeakMap.js","../source/types/isDeno.js","../source/types/isNode.js","../source/types/isTruthy.js","../source/types/isFalsy.js","../source/utilities/ifValue.js","../source/utilities/notEqual.js","../source/utilities/json.js","../source/utilities/assert.js","../source/utilities/bindAll.js","../source/utilities/clear.js","../source/utilities/clone.js","../source/utilities/compact.js","../source/utilities/forOfCompactMapAsync.js","../source/utilities/forOfCompactMap.js","../source/utilities/compactMap.js","../source/utilities/everyArg.js","../source/utilities/forOfFilter.js","../source/utilities/forOfFilterAsync.js","../source/utilities/filter.js","../source/utilities/flow.js","../source/utilities/flowAsync.js","../source/utilities/forMap.js","../source/utilities/arraysToObject.js","../source/utilities/has.js","../source/utilities/hasDot.js","../source/utilities/ifNotAssign.js","../source/utilities/interval.js","../source/utilities/merge.js","../source/utilities/model.js","../source/utilities/pair.js","../source/utilities/concurrent.js","../source/utilities/concurrentStatus.js","../source/utilities/promise.js","../source/utilities/propertyMatch.js","../source/utilities/setKey.js","../source/utilities/setValue.js","../source/utilities/store.js","../source/utilities/stubArray.js","../source/utilities/stubObject.js","../source/utilities/stubString.js","../source/utilities/timesAsync.js","../source/utilities/toggle.js","../source/utilities/uid.js","../source/utilities/virtualStorage.js","../source/filesystem/copyFolder.js","../source/filesystem/directory.js"],"sourcesContent":["/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Invoke each function in the given array.\n *\n * @function invokeArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { invokeArray, assert } from '@universalweb/acid';\n * function test(arg){\n * \treturn [this, arg];\n * }\n * const results = invokeArray([test], 1, test);\n * assert(results, [test, 1]);\n */\nexport function invokeArray(source, arg, thisCall) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index].call(thisCall, arg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index](arg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollection\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * import { invokeCollection, assert } from '@universalweb/acid';\n * const results = invokeCollection([{\n *\ttest(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollection(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapArray(collection, (item, index) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollectionAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * import { invokeCollectionAsync, assert } from '@universalweb/acid';\n * const results = await invokeCollectionAsync([{\n *\tasync test(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollectionAsync(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapAsyncArray(collection, (item) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapAsyncArray(collection, async (item) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","import {\n\treaddir, copyFile, mkdir, stat\n} from 'fs/promises';\nimport path from 'path';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nasync function copyToPath(sourceFolder, destinationFolder, file) {\n\tconst sourcePath = path.join(sourceFolder, file);\n\tconst destinationPath = path.join(destinationFolder, file);\n\tawait copyFile(sourcePath, destinationPath);\n}\nexport async function copyFolder(sourceFolder, destinationFolder) {\n\tconst files = await readdir(sourceFolder);\n\tawait eachAsyncArray(files, async (file) => {\n\t\tconst sourcePath = path.join(sourceFolder, file);\n\t\tconst filestats = await stat(sourcePath);\n\t\tif (filestats.isDirectory()) {\n\t\t\tconst folderDestination = path.join(destinationFolder, file.replace(sourceFolder, ''));\n\t\t\tawait mkdir(folderDestination, {\n\t\t\t\trecursive: true\n\t\t\t});\n\t\t\tawait copyFolder(sourcePath, folderDestination);\n\t\t} else {\n\t\t\tawait copyToPath(sourceFolder, destinationFolder, file);\n\t\t}\n\t});\n\treturn true;\n}\n\n","import path from 'path';\nimport { fileURLToPath } from 'url';\nexport function currentFile(importMeta) {\n\tif (globalThis.__filename) {\n\t\treturn __filename;\n\t}\n\treturn fileURLToPath(importMeta.url);\n}\nexport function currentPath(importMeta) {\n\tif (globalThis.__dirname) {\n\t\treturn __dirname;\n\t}\n\treturn path.dirname(fileURLToPath(importMeta.url));\n}\n"],"names":["sign","random","normalizeCase","space","returnFlow","copyFile","readdir","stat","mkdir","fileURLToPath"],"mappings":"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;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;CACrC,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK;CACpB,EAAE,OAAO,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;CAChC,EAAE,CAAC;CACH;;CCpBA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC;CAC7C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,iBAAiB,CAAC,MAAM,EAAE;CAC1C,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC5C;;CCfA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,YAAY,GAAG,MAAM,CAAC,oBAAoB;CACvD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,WAAW,GAAG,MAAM,CAAC,yBAAyB;CAC3D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,OAAO,GAAG,MAAM,CAAC,eAAe;AACjC,OAAC,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,cAAc;;CC/C9D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACY,OAAC,MAAM,GAAG,MAAM,CAAC;;CCd7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE;CACpC,CAAC,OAAO,MAAM,GAAG,MAAM,CAAC;CACxB;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE;CAC/B,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;CACnB;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;CACtC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;CACvB;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE;CAClC,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;CACnB;;CCjBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;CACxC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;CACvB;;CChBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE;CACnD,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;CAClB,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;CACF,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE;CAC1B,EAAE,OAAO,CAAC,CAAC;CACX,EAAE;CACF,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,IAAI,GAAG,CAAC;CACtC;;CCtBA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;CAC1C,CAAC,OAAO,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;CACrC;;CClBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACO,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;CACzC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;CACvB;;CClBA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;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"} \ No newline at end of file diff --git a/build/index.js b/build/index.js index 05f8b035..10ae692b 100644 --- a/build/index.js +++ b/build/index.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("fs/promises"),require("path"),require("url")):"function"==typeof define&&define.amd?define(["exports","fs/promises","path","url"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={},t.promises,t.path,t.url)}(this,(function(t,n,r,e){"use strict";function o(t){return t.length=0,t}function i(t){return void 0===t}function c(t){return Boolean(t.length)}function u(t){return null===t}function s(t){return!i(t)&&!u(t)}function a(t){return t}function f(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const a=n.call(e,t,i,r,c,u,o);s(a)&&r.push(a)})):f(t,((t,i,c,u)=>{const a=n(t,i,r,c,u,e,o);s(a)&&r.push(a)})),r}async function h(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const i=await n(t,e,r,o);s(i)&&r.push(i)})),r}const{sign:g}=Math;function y(t){return-1===g(t)}function d(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function A(t,n){return t.forEach(n),t}const b=Array.isArray;function w(t){return b(t)&&t||s(t)&&[t]||[]}function v(t){return t.flat(1/0)}const C=Reflect.construct;function O(t,n=[],r){const e=b(n)?n:[n];return r?C(t,e,r):C(t,e)}function j(...t){const n=O(Map),r=[];return f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function F(t,n=1,r=t.length){return t.splice(n,r)}function I(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function E(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function M(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function x(t,n,r=[],e){return await h(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const T=Object.keys;function B(t){if(t)return T(t)}const N=/\.|\[/,U=/]/g,P="";function k(t){return t.replace(U,P).split(N)}function $(t,n){if(!n)return!1;let r=n;return M(b(t)?t:k(t),(t=>(r=r[t],s(r)))),r}const D=Object.hasOwn;function L(t,...n){if(t)return M(n,(n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}}))}const _=t=>!!s(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function q(t,n){return t?.constructor===n||!1}function V(t){return n=>q(n,t)}function K(t){return t?.constructor?.name}function Z(t){return n=>K(n)===t||!1}function z(t){return function(n,...r){return r?t(n)&&M(r,t):t(n)}}const W=Z("Buffer"),G=z(W),J=(t,n)=>{if(t===n)return!0;if(G(t))return t.equals(n);if(t.toString()===n.toString())if(_(t)){const r=B(t);if(L(n,r))return M(r,(r=>J(t[r],n[r])))}else if(b(t)&&t.length===n.length)return M(t,((t,r)=>J(t,n[r])));return!1};const H=Math.max;function Q(t,n,r=[],e,o){return s(e)?f(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):f(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function X(t,n){const r=[];return await h(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function Y(t,n){return t-n}function tt(t,n){return n-t}const{floor:nt,random:rt}=Math;function et(t,n=0){return nt(rt()*(t-n))+n}const ot=Array.from;function it(t,n,r){if(s(t))return ot(t,n,r)}function ct(t,n=t.length){if(t.length<=1)return it(t);const r=it(t);let e,o,i=0;for(;ii?-1:0:1:-1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}function yt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function dt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function mt(t,n="id",r){return t.sort(((t,e)=>dt(t,e,n,r)))}const At=Z("Number"),bt=z(At);const wt=V(String);function vt(t,n){if(t)return wt(n)?t[n]:Q(n,(n=>t[n]))}function Ct(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function Ot(t){return n=>!!s(n)&&t.test(n)}const jt=Ot(/\.css$/),Ft=Ot(/\.html$/),It=Ot(/\.js$/),Et=Ot(/\.json$/);const Mt=Object.assign;function Rt(t,...n){if(s(t))return Mt(t,...n)}const St=async(t,n,r,e)=>{if(!t)return;const o=B(t);return s(r)?await h(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await h(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function xt(t,n,r,e){if(!t)return;const o=B(t);return s(r)?f(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):f(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const Tt=Z("Set"),Bt=z(Tt);function Nt(t,n){if(Bt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Ut=Z("GeneratorFunction"),Pt=z(Ut);async function kt(t,n,r){if(Bt(t)){for(const r of t)await n(r,t);return t}if(Pt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const $t=t=>!!s(t)&&t instanceof Function,Dt=Z("AsyncFunction"),Lt=z(Dt);function _t(t,n,r,e,o,i){return(c,u,a,f,l)=>{let h;const p=Lt(u);if(s(c)&&u)return h=b(c)?p?n:t:_(c)||$t(c)?p?e:r:o?p?i:o:Pt(c)?i:p?e:r,h(c,u,a,f,l)}}const qt=_t(f,h,xt,St,Nt,kt);class Vt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;qt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const Kt=!0,Zt=!1,zt=()=>{};function Wt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Kt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Jt=O(Gt);function Ht(t,n){return Jt.set(t,n)}const Qt=Reflect.apply;function Xt(t,n,r){if($t(t))return Qt(t,n,r)}async function Yt(t,n,r={}){if(t)return await St(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function tn(t,n,r={},e,o){if(t)return s(e)?xt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):xt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function nn(t){return t?.constructor}function rn(t,n=[]){const r=nn(t);return r===Function&&"function"===r.name?function(){}:O(r,n)}function en(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function on(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const cn=_t(Q,X,tn,Yt,en,on);async function un(t,n){if(!t)return;return R(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function sn(t,n){if(!t)return;return M(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function an(t,n=a){if(b(t)||Bt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function fn(t,n=a,r){if(Pt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(b(t)||Bt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const ln=_t(M,R,sn,un,an,fn);const hn=Function.prototype;function pn(t){return hn.call.bind(t)}const gn=Object.getOwnPropertyNames,yn=Object.getOwnPropertyDescriptor,dn=Object.defineProperty,mn=pn(Object.hasOwnProperty),An=Object.is;const{random:bn}=Math;const{sign:wn}=Math;const vn=Object.entries;async function Cn(t,n=a,r={}){return await St(t,(async(t,e,o,i,c)=>{const u=await n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function On(t,n=a,r={}){return xt(t,((t,e,o,i,c)=>{const u=n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function jn(t,n,r={}){return xt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Fn(t,n,r={}){return await St(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const In=Z("RegExp"),En=z(In),Mn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Rn(t){return t.replace(Mn,"\\$&")}function Sn(t,n){return n?Sn(Q(t,Rn)):RegExp(t.join("|"))}function xn(t){if(t)return B(t).length}const Tn=/[ _-]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Un=/[ _-]+/g,Pn=/[ ]+/g;const kn=/[ _-]+/g;const $n=/[ _-]+/g;function Dn(t,n=1){return t.substring(n)}const Ln=/%(?![\da-f]{2})/gi,_n=/&/g,qn=//g,Kn=/"/g;function Zn(t){return decodeURIComponent(t.replace(Ln,(()=>"%25")))}function zn(t){return t.replace(_n,"&").replace(qn,"<").replace(Vn,">").replace(Kn,""")}const Wn=/\S+/g,Gn=/\w+/g;const Jn=/\w+/g;function Hn(t){return t[0].toUpperCase()}function Qn(t){return Hn(t)+Dn(t)}function Xn(t){return Hn(t)+Dn(t).toLowerCase()}function Yn(t){return nn(t)?.name}function tr(t){return!s(t)}const nr=Z("Map"),rr=z(nr),er=/Array/,or="Array";function ir(t){if(t){const n=Yn(t);if(er.test(n)&&n!==or)return!0}return!1}const cr=Z("BigInt"),ur=z(cr),sr=Z("Boolean"),ar=z(sr),fr=Z("ArrayBuffer"),lr=z(fr);const hr=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const pr=Z("Date"),gr=z(pr);function yr(t){return!1===t}const dr=Z("Float32Array"),mr=z(dr),Ar=Z("Float64Array"),br=z(Ar),{isInteger:wr}=Number,vr=wr,Cr=Z("Int16Array"),Or=z(Cr),jr=Z("Int32Array"),Fr=z(jr),Ir=Z("Int8Array"),Er=z(Ir);function Mr(t){return!!t&&t instanceof Promise}function Rr(t){return!!t&&(Mr(t)||Lt(t)||Pt(t))}const{isSafeInteger:Sr}=Number,xr=Sr;const Tr=Z("Uint16Array"),Br=z(Tr),Nr=Z("Uint32Array"),Ur=z(Nr),Pr=Z("Uint8Array"),kr=z(Pr),$r=Z("Uint8ClampedArray"),Dr=z($r),Lr=Z("WeakMap"),_r=z(Lr),qr=void 0!==globalThis.Deno,Vr=void 0!==globalThis.process&&process.versions&&process.versions.node;function Kr(t,n=!0){return Boolean(t)&&n}function Zr(t,n){return yr(J(t,n))}const zr=JSON;const Wr=zr.stringify;function Gr(t,n,r){const e=globalThis.options||r;let o;return $t(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Wr(t)}\n\t\tExpected: ${Wr(n)}`,e)}async function Jr(t,n,r){const e=await t;return!($t(n)&&!1===await n(e,r))&&!Zr(e,n)||Gr(e,n,r)}const Hr=globalThis.structuredClone;async function Qr(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);s(e)&&r.push(e)}return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const i=await n(r,o,t);s(i)&&e(i)}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);s(c)&&(i?o.set(r,c):o[r]=c)}return o}function Xr(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const i=n(r,e,t);s(i)&&o(i)}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);s(c)&&(o?e.set(r,c):e[r]=c)}return e}const Yr=_t(l,p,On,Cn,Xr,Qr);function te(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=$t(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function ne(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=$t(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const re=_t(S,x,jn,Fn,te,ne);function ee(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const oe=ee(f),ie=ee(I);function ce(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const ue=ce(h),se=ce(E);const ae=Ot(/\./);class fe{list=O(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Kt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const le=O(fe);class he{static models={};constructor(t,n){s(n)?(Rt(this,n),this.modelName=t,he.models.set(t,n)):Rt(this,t)}}class pe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;xt(t,(n=>{t[n]=new pe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new pe(r),!0)})}}class ge{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return s(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ye=O(ge);class de{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Vt,t.Intervals=fe,t.Model=he,t.Store=pe,t.Timers=Gt,t.UniqID=ge,t.VirtualStorage=de,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Xt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const r={};return f(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Rr(t)||Rr(n)?Jr(t,n,r):!($t(n)&&!1===n(t,r))&&!Zr(t,n)||Gr(t,n,r)},t.assertAsync=Jr,t.assign=Rt,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=cn(t,(t=>$t(t)?t.bind(n):t));return r?Rt(r,e):e},t.cacheNativeMethod=pn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Tn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return O(Vt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(G(t))return lt(t);if(b(t))return o(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=o,t.clearBuffer=lt,t.clearIntervals=function(){Wt(setTimeout(zt,0),(t=>{le.remove(t)}))},t.clearTimers=function(){Wt(setTimeout(zt,0),(t=>{Jt.remove(t)}))},t.clone=function(t){return Hr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=rn,t.compact=function(t){if(_(t)){const n=B(t),r=n.length,e={};for(let o=0;oKr(t)))},t.compactKeys=function(t){const n=[];return xt(t,((t,r)=>{s(t)&&n.push(r)})),n},t.compactMap=Yr,t.compactMapArray=l,t.compactMapAsyncArray=p,t.compactMapAsyncObject=Cn,t.compactMapObject=On,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{const c=r.join(e,i);if((await n.stat(c)).isDirectory()){const u=r.join(o,i.replace(e,""));await n.mkdir(u,{recursive:!0}),await t(c,u)}else await async function(t,e,o){const i=r.join(t,o),c=r.join(e,o);await n.copyFile(i,c)}(e,o,i)})),!0},t.countBy=function(t,n){const r={};let e;return f(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return f(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return f(t,(t=>{t[n]||r++})),r},t.currentFile=function(t){return globalThis.__filename?__filename:e.fileURLToPath(t.url)},t.currentPath=function(t){return globalThis.__dirname?__dirname:r.dirname(e.fileURLToPath(t.url))},t.curry=function(t,n=t.length){const r=[],e=(...i)=>{if(r.push(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.curryRight=function(t,n=t.length){const r=[],e=(...i)=>{if(r.unshift(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.debounce=function(t,n){function r(...t){r.id!==Zt&&Jt.remove(r.id),r.id=Ht((()=>{r.callable(...t),r.id=Zt}),n)}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{r.id!==Zt&&(Jt.remove(r.id),r.id=Zt)},r},t.deduct=function(t){return t-1},t.defProp=dn,t.difference=j,t.divide=function(t,n){return t/n},t.drop=F,t.dropRight=(t,n=1,r=t.length)=>F(t,0,r-n),t.each=qt,t.eachArray=f,t.eachAsyncArray=h,t.eachAsyncObject=St,t.eachObject=xt,t.eachRight=I,t.eachRightAsync=E,t.ensureArray=w,t.ensureBuffer=function(t){return G(t)&&t||s(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Rn,t.escapeRegexRegex=Mn,t.every=ln,t.everyArg=function(...t){return Lt(t[0])?async function(...n){return ln(t,(async t=>ln(n,(async n=>t(n)))))}:function(...n){return ln(t,(t=>ln(n,(n=>t(n)))))}},t.everyArray=M,t.everyAsyncArray=R,t.everyAsyncObject=un,t.everyObject=sn,t.falsy=Zt,t.filter=re,t.filterArray=S,t.filterAsyncArray=x,t.filterAsyncObject=Fn,t.filterObject=jn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=ht,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(w(n))),[]);return r},t.flattenDeep=v,t.flow=oe,t.flowAsync=ue,t.flowAsyncRight=se,t.flowRight=ie,t.forEach=A,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else $t(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=Nt,t.forOfAsync=kt,t.forOfCompactMap=Xr,t.forOfCompactMapAsync=Qr,t.forOfEvery=an,t.forOfEveryAsync=fn,t.forOfFilter=te,t.forOfFilterAsync=ne,t.forOfMap=en,t.forOfMapAsync=on,t.generateLoop=_t,t.get=$,t.getEntries=function(t){if(s(t))return vn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return mt(t,n)[0]},t.getLowest=function(t,n){return gt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return M(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=yn,t.getPropNames=gn,t.getType=nn,t.getTypeName=Yn,t.groupBy=function(t,n){const r={};return f(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(tr(n)||tr(r))return!1;if(wt(n))return wt(r)?n.includes(r,e):En(r)?r.test(n):$t(r)?Boolean(r(n)):ln(r,(r=>Boolean(t(n,r))));if(b(n)){if(wt(r))return n.includes(r,e);if(En(r))return ln(n,(t=>t.test(r)));if(b(r))return ln(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}})))},t.hasDot=ae,t.hasKeys=L,t.hasLength=c,t.hasProp=mn,t.hasValue=s,t.htmlEntities=zn,t.ifInvoke=function(t,...n){if($t(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!s(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(s(t)){if($t(n))return r?Xt(n,r,e):n(...e);if(_(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eqt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return f(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return l(t,(t=>{if(M(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return le.set(t,n)},t.intervals=le,t.invert=function(t,n={}){if(t)return xt(t,((t,r)=>{n[t]=r})),n},t.invoke=function(t,n,r){return Q(t,((t,e)=>t[n](r,e)))},t.invokeAsync=function(t,n,r){return X(t,(async(t,e)=>t[n](r,e)))},t.isArguments=function(t){return!!s(t)&&"[object Arguments]"===t.toString()},t.isArray=b,t.isArrayBuffer=lr,t.isArrayBufferCall=fr,t.isArrayLike=function(t,n){if(tr(t)||$t(t))return!1;if(b(t)||ir(t))return!0;const r=t.length;if(!tr(r)||!bt(r)||r<0)return!1;if(n){const n=B(t);return!!n&&ln(n,((t,n)=>n>=0&&bt(n)))}return!0},t.isAsync=Lt,t.isAsyncCall=Dt,t.isBigInt=ur,t.isBigIntCall=cr,t.isBoolean=ar,t.isBooleanCall=sr,t.isBuffer=G,t.isBufferCall=W,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(s(t)){const n=t?.constructor?.name;return hr.test(n)}return!1},t.isConstructor=q,t.isConstructorFactory=V,t.isConstructorNameFactory=Z,t.isDate=gr,t.isDateCall=pr,t.isDeno=qr,t.isEmpty=function(t){return wt(t)||b(t)?!c(t):_(t)?!xn(t):!s(t)},t.isEqual=J,t.isF32=mr,t.isF32Call=dr,t.isF64=br,t.isF64Call=Ar,t.isFalse=yr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=jt,t.isFileHTML=Ft,t.isFileJS=It,t.isFileJSON=Et,t.isFloat=vr,t.isFunction=$t,t.isGenerator=Pt,t.isGeneratorCall=Ut,t.isI16=Or,t.isI16Call=Cr,t.isI32=Fr,t.isI32Call=jr,t.isI8=Er,t.isI8Call=Ir,t.isIterable=function(t){return s(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Rr,t.isMap=rr,t.isMapCall=nr,t.isMatchArray=function(t,n){return t.length===n.length&&M(t,((t,r)=>J(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=B(t),e=B(n);return r.length===e.length&&M(r,(r=>t[r]===n[r]))},t.isNegative=y,t.isNodejs=Vr,t.isNotArray=function(t){return!b(t)},t.isNotNumber=function(t){return!bt(t)},t.isNotString=function(t){return!wt(t)},t.isNull=u,t.isNumber=bt,t.isNumberCall=At,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=_,t.isPositive=function(t){return 1===wn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Mr,t.isRegex=En,t.isRegexCall=In,t.isRelated=function(t,n){return!tr(t)&&!tr(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xr,t.isSame=An,t.isSameType=function(t,n){const r=nn(t),e=nn(n);return r===e&&r.name===e.name},t.isSet=Bt,t.isSetCall=Tt,t.isString=wt,t.isTrue=function(t){return!0===t},t.isTruthy=Kr,t.isTypeFactory=z,t.isTypedArray=ir,t.isU16=Br,t.isU16Call=Tr,t.isU32=Ur,t.isU32Call=Nr,t.isU8=kr,t.isU8C=Dr,t.isU8CCall=$r,t.isU8Call=Pr,t.isUndefined=i,t.isWeakMap=_r,t.isWeakMapCall=Lr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return zr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Bn," ").trim().toLowerCase().replace(Nn,"-")},t.keys=B,t.largest=function(t){return H(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=cn,t.mapArray=Q,t.mapAsyncArray=X,t.mapAsyncObject=Yt,t.mapObject=tn,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{qt(r,((r,e)=>{if(n[e]&&(_(r)||b(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return s(n)?O(he,[t,n]):$(t,he.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=tr,t.noop=zt,t.notEqual=Zr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Mt,t.objectEntries=vn,t.objectSize=xn,t.omit=function(t,n){if(t){if(b(n)){const r=Sn(n);return jn(t,((t,n)=>!r.test(n)))}if(En(n))return jn(t,((t,r)=>!n.test(r)));if(wt(n))return jn(t,((t,r)=>r!==n));if(bt(n)){const r=n.toString();return jn(t,((t,n)=>n!==r))}return $t(n)?jn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(s(n)||(n=t(...r)),n)},t.onlyUnique=st,t.over=function(t){return(...n)=>cn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>ln(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[l(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return f(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return Q(t,(t=>vt(t,n)))},t.pluckObject=vt,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=B(t))=>M(r,(r=>J(t[r],n[r]))),t.randomFloat=function(t,n=0){return bn()*(t-n)+n},t.randomInt=et,t.range=function(t,n,r=1,e=[]){return y(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=Ot,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return ct(t);if(1===n)return[t[et(r-1,0)]];const e=[],o={};let i,c=0;for(;cyt(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>Ct(t,e,n,r)))},t.sortCollectionAscending=mt,t.sortCollectionAscendingFilter=dt,t.sortCollectionDescending=gt,t.sortCollectionDescendingFilter=pt,t.sortNumberAscending=function(t){return t.sort(Y)},t.sortNumberDescening=function(t){return t.sort(tt)},t.sortObjectsAlphabetically=yt,t.sortObjectsAlphabeticallyReverse=Ct,t.sortUnique=at,t.stringify=Wr,t.stubArray=()=>[],t.stubFalse=()=>Zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>Kt,t.subtract=Y,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=tt,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=Kt:(r.callable(...t),r.id=Ht((()=>{r.shouldThrottle&&r.callable(...t),r.id=Zt}),n))}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{Jt.remove(r.id),r.id=Zt},r},t.timer=Ht,t.timers=Jt,t.times=Wt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=Kt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return xt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ft(v(t))},t.uniqID=ye,t.unique=ft,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eQn(t)))},t.upperFirstLetter=Hn,t.upperFirstOnly=Xn,t.upperFirstOnlyAll=function(t){return t.replace(Jn,(t=>Xn(t)))},t.virtualStorage=function(t){return new de(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(Gn)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=O(Map),r=[];return 2===t.length?j(t[0],t[1]):(f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return f(t,((t,e)=>{r[t]=n[e]})),r}})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("fs/promises"),require("path"),require("url")):"function"==typeof define&&define.amd?define(["exports","fs/promises","path","url"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={},t.promises,t.path,t.url)}(this,(function(t,n,r,e){"use strict";function o(t){return t.length=0,t}function i(t){return void 0===t}function c(t){return Boolean(t.length)}function u(t){return null===t}function s(t){return!i(t)&&!u(t)}function a(t){return t}function f(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const a=n.call(e,t,i,r,c,u,o);s(a)&&r.push(a)})):f(t,((t,i,c,u)=>{const a=n(t,i,r,c,u,e,o);s(a)&&r.push(a)})),r}async function h(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const i=await n(t,e,r,o);s(i)&&r.push(i)})),r}const{sign:g}=Math;function y(t){return-1===g(t)}function d(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function A(t,n){return t.forEach(n),t}const b=Array.isArray;function w(t){return b(t)&&t||s(t)&&[t]||[]}function v(t){return t.flat(1/0)}const C=Reflect.construct;function O(t,n=[],r){const e=b(n)?n:[n];return r?C(t,e,r):C(t,e)}function j(...t){const n=O(Map),r=[];return f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function F(t,n=1,r=t.length){return t.splice(n,r)}function I(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function E(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function M(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function x(t,n,r=[],e){return await h(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const T=Object.keys;function B(t){if(t)return T(t)}const N=/\.|\[/,U=/]/g,P="";function k(t){return t.replace(U,P).split(N)}function $(t,n){if(!n)return!1;let r=n;return M(b(t)?t:k(t),(t=>(r=r[t],s(r)))),r}const D=Object.hasOwn;function L(t,...n){if(t)return M(n,(n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}}))}const _=t=>!!s(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function q(t,n){return t?.constructor===n||!1}function V(t){return n=>q(n,t)}function K(t){return t?.constructor?.name}function Z(t){return n=>K(n)===t||!1}function z(t){return function(n,...r){return r?t(n)&&M(r,t):t(n)}}const W=Z("Buffer"),G=z(W),J=(t,n)=>{if(t===n)return!0;if(G(t))return t.equals(n);if(t.toString()===n.toString())if(_(t)){const r=B(t);if(L(n,r))return M(r,(r=>J(t[r],n[r])))}else if(b(t)&&t.length===n.length)return M(t,((t,r)=>J(t,n[r])));return!1};const H=Math.max;function Q(t,n,r=[],e,o){return s(e)?f(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):f(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function X(t,n){const r=[];return await h(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function Y(t,n){return t-n}function tt(t,n){return n-t}const{floor:nt,random:rt}=Math;function et(t,n=0){return nt(rt()*(t-n))+n}const ot=Array.from;function it(t,n,r){if(s(t))return ot(t,n,r)}function ct(t,n=t.length){if(t.length<=1)return it(t);const r=it(t);let e,o,i=0;for(;ii?-1:0:1:-1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}function yt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function dt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function mt(t,n="id",r){return t.sort(((t,e)=>dt(t,e,n,r)))}const At=Z("Number"),bt=z(At);const wt=V(String);function vt(t,n){if(t)return wt(n)?t[n]:Q(n,(n=>t[n]))}function Ct(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function Ot(t){return n=>!!s(n)&&t.test(n)}const jt=Ot(/\.css$/),Ft=Ot(/\.html$/),It=Ot(/\.js$/),Et=Ot(/\.json$/);const Mt=Object.assign;function Rt(t,...n){if(s(t))return Mt(t,...n)}const St=async(t,n,r,e)=>{if(!t)return;const o=B(t);return s(r)?await h(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await h(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function xt(t,n,r,e){if(!t)return;const o=B(t);return s(r)?f(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):f(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const Tt=Z("Set"),Bt=z(Tt);function Nt(t,n){if(Bt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Ut=Z("GeneratorFunction"),Pt=z(Ut);async function kt(t,n,r){if(Bt(t)){for(const r of t)await n(r,t);return t}if(Pt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const $t=t=>!!s(t)&&t instanceof Function,Dt=Z("AsyncFunction"),Lt=z(Dt);function _t(t,n,r,e,o,i){return(c,u,a,f,l)=>{let h;const p=Lt(u);if(s(c)&&u)return h=b(c)?p?n:t:_(c)||$t(c)?p?e:r:o?p?i:o:Pt(c)?i:p?e:r,h(c,u,a,f,l)}}const qt=_t(f,h,xt,St,Nt,kt);class Vt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;qt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const Kt=!0,Zt=!1,zt=()=>{};function Wt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Kt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Jt=O(Gt);function Ht(t,n){return Jt.set(t,n)}const Qt=Reflect.apply;function Xt(t,n,r){if($t(t))return Qt(t,n,r)}async function Yt(t,n,r={}){if(t)return await St(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function tn(t,n,r={},e,o){if(t)return s(e)?xt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):xt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function nn(t){return t?.constructor}function rn(t,n=[]){const r=nn(t);return r===Function&&"function"===r.name?function(){}:O(r,n)}function en(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function on(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const cn=_t(Q,X,tn,Yt,en,on);async function un(t,n){if(!t)return;return R(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function sn(t,n){if(!t)return;return M(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function an(t,n=a){if(b(t)||Bt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function fn(t,n=a,r){if(Pt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(b(t)||Bt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const ln=_t(M,R,sn,un,an,fn);const hn=Function.prototype;function pn(t){return hn.call.bind(t)}const gn=Object.getOwnPropertyNames,yn=Object.getOwnPropertyDescriptor,dn=Object.defineProperty,mn=pn(Object.hasOwnProperty),An=Object.is;const{random:bn}=Math;const{sign:wn}=Math;const vn=Object.entries;async function Cn(t,n=a,r={}){return await St(t,(async(t,e,o,i,c)=>{const u=await n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function On(t,n=a,r={}){return xt(t,((t,e,o,i,c)=>{const u=n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function jn(t,n,r={}){return xt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Fn(t,n,r={}){return await St(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const In=Z("RegExp"),En=z(In),Mn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Rn(t){return t.replace(Mn,"\\$&")}function Sn(t,n){return n?Sn(Q(t,Rn)):RegExp(t.join("|"))}function xn(t){if(t)return B(t).length}const Tn=/[ _-]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Un=/[ _-]+/g,Pn=/[ ]+/g;const kn=/[ _-]+/g;const $n=/[ _-]+/g;function Dn(t,n=1){return t.substring(n)}const Ln=/%(?![\da-f]{2})/gi,_n=/&/g,qn=//g,Kn=/"/g;function Zn(t){return decodeURIComponent(t.replace(Ln,(()=>"%25")))}function zn(t){return t.replace(_n,"&").replace(qn,"<").replace(Vn,">").replace(Kn,""")}const Wn=/\S+/g,Gn=/\w+/g;const Jn=/\w+/g;function Hn(t){return t[0].toUpperCase()}function Qn(t){return Hn(t)+Dn(t)}function Xn(t){return Hn(t)+Dn(t).toLowerCase()}function Yn(t){return nn(t)?.name}function tr(t){return!s(t)}const nr=Z("Map"),rr=z(nr),er=/Array/,or="Array";function ir(t){if(t){const n=Yn(t);if(er.test(n)&&n!==or)return!0}return!1}const cr=Z("BigInt"),ur=z(cr),sr=Z("Boolean"),ar=z(sr),fr=Z("ArrayBuffer"),lr=z(fr);const hr=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const pr=Z("Date"),gr=z(pr);function yr(t){return!1===t}const dr=Z("Float32Array"),mr=z(dr),Ar=Z("Float64Array"),br=z(Ar),{isInteger:wr}=Number,vr=wr,Cr=Z("Int16Array"),Or=z(Cr),jr=Z("Int32Array"),Fr=z(jr),Ir=Z("Int8Array"),Er=z(Ir);function Mr(t){return!!t&&t instanceof Promise}function Rr(t){return!!t&&(Mr(t)||Lt(t)||Pt(t))}const{isSafeInteger:Sr}=Number,xr=Sr;const Tr=Z("Uint16Array"),Br=z(Tr),Nr=Z("Uint32Array"),Ur=z(Nr),Pr=Z("Uint8Array"),kr=z(Pr),$r=Z("Uint8ClampedArray"),Dr=z($r),Lr=Z("WeakMap"),_r=z(Lr),qr=void 0!==globalThis.Deno,Vr=void 0!==globalThis.process&&process.versions&&process.versions.node;function Kr(t,n=!0){return Boolean(t)&&n}function Zr(t,n){return yr(J(t,n))}const zr=JSON;const Wr=zr.stringify;function Gr(t,n,r){const e=globalThis.options||r;let o;return $t(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Wr(t)}\n\t\tExpected: ${Wr(n)}`,e)}async function Jr(t,n,r){const e=await t;return!($t(n)&&!1===await n(e,r))&&!Zr(e,n)||Gr(e,n,r)}const Hr=globalThis.structuredClone;async function Qr(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);s(e)&&r.push(e)}return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const i=await n(r,o,t);s(i)&&e(i)}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);s(c)&&(i?o.set(r,c):o[r]=c)}return o}function Xr(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const i=n(r,e,t);s(i)&&o(i)}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);s(c)&&(o?e.set(r,c):e[r]=c)}return e}const Yr=_t(l,p,On,Cn,Xr,Qr);function te(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=$t(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function ne(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=$t(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const re=_t(S,x,jn,Fn,te,ne);function ee(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const oe=ee(f),ie=ee(I);function ce(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const ue=ce(h),se=ce(E);const ae=Ot(/\./);class fe{list=O(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Kt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const le=O(fe);class he{static models={};constructor(t,n){s(n)?(Rt(this,n),this.modelName=t,he.models.set(t,n)):Rt(this,t)}}class pe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;xt(t,(n=>{t[n]=new pe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new pe(r),!0)})}}class ge{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return s(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ye=O(ge);class de{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Vt,t.Intervals=fe,t.Model=he,t.Store=pe,t.Timers=Gt,t.UniqID=ge,t.VirtualStorage=de,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Xt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const r={};return f(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Rr(t)||Rr(n)?Jr(t,n,r):!($t(n)&&!1===n(t,r))&&!Zr(t,n)||Gr(t,n,r)},t.assertAsync=Jr,t.assign=Rt,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=cn(t,(t=>$t(t)?t.bind(n):t));return r?Rt(r,e):e},t.cacheNativeMethod=pn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Tn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return O(Vt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(G(t))return lt(t);if(b(t))return o(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=o,t.clearBuffer=lt,t.clearIntervals=function(){Wt(setTimeout(zt,0),(t=>{le.remove(t)}))},t.clearTimers=function(){Wt(setTimeout(zt,0),(t=>{Jt.remove(t)}))},t.clone=function(t){return Hr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=rn,t.compact=function(t){if(_(t)){const n=B(t),r=n.length,e={};for(let o=0;oKr(t)))},t.compactKeys=function(t){const n=[];return xt(t,((t,r)=>{s(t)&&n.push(r)})),n},t.compactMap=Yr,t.compactMapArray=l,t.compactMapAsyncArray=p,t.compactMapAsyncObject=Cn,t.compactMapObject=On,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{const c=r.join(e,i);if((await n.stat(c)).isDirectory()){const u=r.join(o,i.replace(e,""));await n.mkdir(u,{recursive:!0}),await t(c,u)}else await async function(t,e,o){const i=r.join(t,o),c=r.join(e,o);await n.copyFile(i,c)}(e,o,i)})),!0},t.countBy=function(t,n){const r={};let e;return f(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return f(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return f(t,(t=>{t[n]||r++})),r},t.currentFile=function(t){return globalThis.__filename?__filename:e.fileURLToPath(t.url)},t.currentPath=function(t){return globalThis.__dirname?__dirname:r.dirname(e.fileURLToPath(t.url))},t.curry=function(t,n=t.length){const r=[],e=(...i)=>{if(r.push(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.curryRight=function(t,n=t.length){const r=[],e=(...i)=>{if(r.unshift(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.debounce=function(t,n){function r(...t){r.id!==Zt&&Jt.remove(r.id),r.id=Ht((()=>{r.callable(...t),r.id=Zt}),n)}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{r.id!==Zt&&(Jt.remove(r.id),r.id=Zt)},r},t.deduct=function(t){return t-1},t.defProp=dn,t.difference=j,t.divide=function(t,n){return t/n},t.drop=F,t.dropRight=(t,n=1,r=t.length)=>F(t,0,r-n),t.each=qt,t.eachArray=f,t.eachAsyncArray=h,t.eachAsyncObject=St,t.eachObject=xt,t.eachRight=I,t.eachRightAsync=E,t.ensureArray=w,t.ensureBuffer=function(t){return G(t)&&t||s(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Rn,t.escapeRegexRegex=Mn,t.every=ln,t.everyArg=function(...t){return Lt(t[0])?async function(...n){return ln(t,(async t=>ln(n,(async n=>t(n)))))}:function(...n){return ln(t,(t=>ln(n,(n=>t(n)))))}},t.everyArray=M,t.everyAsyncArray=R,t.everyAsyncObject=un,t.everyObject=sn,t.falsy=Zt,t.filter=re,t.filterArray=S,t.filterAsyncArray=x,t.filterAsyncObject=Fn,t.filterObject=jn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=ht,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(w(n))),[]);return r},t.flattenDeep=v,t.flow=oe,t.flowAsync=ue,t.flowAsyncRight=se,t.flowRight=ie,t.forEach=A,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else $t(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=Nt,t.forOfAsync=kt,t.forOfCompactMap=Xr,t.forOfCompactMapAsync=Qr,t.forOfEvery=an,t.forOfEveryAsync=fn,t.forOfFilter=te,t.forOfFilterAsync=ne,t.forOfMap=en,t.forOfMapAsync=on,t.generateLoop=_t,t.get=$,t.getEntries=function(t){if(s(t))return vn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return mt(t,n)[0]},t.getLowest=function(t,n){return gt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return M(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=yn,t.getPropNames=gn,t.getType=nn,t.getTypeName=Yn,t.groupBy=function(t,n){const r={};return f(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(tr(n)||tr(r))return!1;if(wt(n))return wt(r)?n.includes(r,e):En(r)?r.test(n):$t(r)?Boolean(r(n)):ln(r,(r=>Boolean(t(n,r))));if(b(n)){if(wt(r))return n.includes(r,e);if(En(r))return ln(n,(t=>t.test(r)));if(b(r))return ln(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}})))},t.hasDot=ae,t.hasKeys=L,t.hasLength=c,t.hasProp=mn,t.hasValue=s,t.htmlEntities=zn,t.ifInvoke=function(t,...n){if($t(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!s(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(s(t)){if($t(n))return r?Xt(n,r,e):n(...e);if(_(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eqt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return f(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return l(t,(t=>{if(M(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return le.set(t,n)},t.intervals=le,t.invert=function(t,n={}){if(t)return xt(t,((t,r)=>{n[t]=r})),n},t.invokeArray=function(t,n,r){if(!t)return;const e=t.length;if(s(r))for(let o=0;ot[n].call(e,r):(t,e)=>t[n](r))},t.invokeCollectionAsync=function(t,n,r,e){return X(t,e?t=>t[n].call(e,r):async t=>t[n](r))},t.isArguments=function(t){return!!s(t)&&"[object Arguments]"===t.toString()},t.isArray=b,t.isArrayBuffer=lr,t.isArrayBufferCall=fr,t.isArrayLike=function(t,n){if(tr(t)||$t(t))return!1;if(b(t)||ir(t))return!0;const r=t.length;if(!tr(r)||!bt(r)||r<0)return!1;if(n){const n=B(t);return!!n&&ln(n,((t,n)=>n>=0&&bt(n)))}return!0},t.isAsync=Lt,t.isAsyncCall=Dt,t.isBigInt=ur,t.isBigIntCall=cr,t.isBoolean=ar,t.isBooleanCall=sr,t.isBuffer=G,t.isBufferCall=W,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(s(t)){const n=t?.constructor?.name;return hr.test(n)}return!1},t.isConstructor=q,t.isConstructorFactory=V,t.isConstructorNameFactory=Z,t.isDate=gr,t.isDateCall=pr,t.isDeno=qr,t.isEmpty=function(t){return wt(t)||b(t)?!c(t):_(t)?!xn(t):!s(t)},t.isEqual=J,t.isF32=mr,t.isF32Call=dr,t.isF64=br,t.isF64Call=Ar,t.isFalse=yr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=jt,t.isFileHTML=Ft,t.isFileJS=It,t.isFileJSON=Et,t.isFloat=vr,t.isFunction=$t,t.isGenerator=Pt,t.isGeneratorCall=Ut,t.isI16=Or,t.isI16Call=Cr,t.isI32=Fr,t.isI32Call=jr,t.isI8=Er,t.isI8Call=Ir,t.isIterable=function(t){return s(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Rr,t.isMap=rr,t.isMapCall=nr,t.isMatchArray=function(t,n){return t.length===n.length&&M(t,((t,r)=>J(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=B(t),e=B(n);return r.length===e.length&&M(r,(r=>t[r]===n[r]))},t.isNegative=y,t.isNodejs=Vr,t.isNotArray=function(t){return!b(t)},t.isNotNumber=function(t){return!bt(t)},t.isNotString=function(t){return!wt(t)},t.isNull=u,t.isNumber=bt,t.isNumberCall=At,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=_,t.isPositive=function(t){return 1===wn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Mr,t.isRegex=En,t.isRegexCall=In,t.isRelated=function(t,n){return!tr(t)&&!tr(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xr,t.isSame=An,t.isSameType=function(t,n){const r=nn(t),e=nn(n);return r===e&&r.name===e.name},t.isSet=Bt,t.isSetCall=Tt,t.isString=wt,t.isTrue=function(t){return!0===t},t.isTruthy=Kr,t.isTypeFactory=z,t.isTypedArray=ir,t.isU16=Br,t.isU16Call=Tr,t.isU32=Ur,t.isU32Call=Nr,t.isU8=kr,t.isU8C=Dr,t.isU8CCall=$r,t.isU8Call=Pr,t.isUndefined=i,t.isWeakMap=_r,t.isWeakMapCall=Lr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return zr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Bn," ").trim().toLowerCase().replace(Nn,"-")},t.keys=B,t.largest=function(t){return H(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=cn,t.mapArray=Q,t.mapAsyncArray=X,t.mapAsyncObject=Yt,t.mapObject=tn,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{qt(r,((r,e)=>{if(n[e]&&(_(r)||b(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return s(n)?O(he,[t,n]):$(t,he.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=tr,t.noop=zt,t.notEqual=Zr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Mt,t.objectEntries=vn,t.objectSize=xn,t.omit=function(t,n){if(t){if(b(n)){const r=Sn(n);return jn(t,((t,n)=>!r.test(n)))}if(En(n))return jn(t,((t,r)=>!n.test(r)));if(wt(n))return jn(t,((t,r)=>r!==n));if(bt(n)){const r=n.toString();return jn(t,((t,n)=>n!==r))}return $t(n)?jn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(s(n)||(n=t(...r)),n)},t.onlyUnique=st,t.over=function(t){return(...n)=>cn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>ln(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[l(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return f(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return Q(t,(t=>vt(t,n)))},t.pluckObject=vt,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=B(t))=>M(r,(r=>J(t[r],n[r]))),t.randomFloat=function(t,n=0){return bn()*(t-n)+n},t.randomInt=et,t.range=function(t,n,r=1,e=[]){return y(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=Ot,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return ct(t);if(1===n)return[t[et(r-1,0)]];const e=[],o={};let i,c=0;for(;cyt(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>Ct(t,e,n,r)))},t.sortCollectionAscending=mt,t.sortCollectionAscendingFilter=dt,t.sortCollectionDescending=gt,t.sortCollectionDescendingFilter=pt,t.sortNumberAscending=function(t){return t.sort(Y)},t.sortNumberDescening=function(t){return t.sort(tt)},t.sortObjectsAlphabetically=yt,t.sortObjectsAlphabeticallyReverse=Ct,t.sortUnique=at,t.stringify=Wr,t.stubArray=()=>[],t.stubFalse=()=>Zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>Kt,t.subtract=Y,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=tt,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=Kt:(r.callable(...t),r.id=Ht((()=>{r.shouldThrottle&&r.callable(...t),r.id=Zt}),n))}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{Jt.remove(r.id),r.id=Zt},r},t.timer=Ht,t.timers=Jt,t.times=Wt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=Kt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return xt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ft(v(t))},t.uniqID=ye,t.unique=ft,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eQn(t)))},t.upperFirstLetter=Hn,t.upperFirstOnly=Xn,t.upperFirstOnlyAll=function(t){return t.replace(Jn,(t=>Xn(t)))},t.virtualStorage=function(t){return new de(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(Gn)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=O(Map),r=[];return 2===t.length?j(t[0],t[1]):(f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return f(t,((t,e)=>{r[t]=n[e]})),r}})); //# sourceMappingURL=index.js.map diff --git a/build/index.js.map b/build/index.js.map index 97a88ece..ceab041d 100644 --- a/build/index.js.map +++ b/build/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../source/arrays/clear.js","../source/types/isUndefined.js","../source/utilities/hasLength.js","../source/types/isNull.js","../source/types/hasValue.js","../source/utilities/returnValue.js","../source/arrays/each.js","../source/arrays/compactMap.js","../source/arrays/eachAsync.js","../source/arrays/compactMapAsync.js","../source/numbers/isNegative.js","../source/arrays/range.js","../source/utilities/forEach.js","../source/types/isArray.js","../source/arrays/ensure.js","../source/arrays/flattenDeep.js","../source/classes/construct.js","../source/arrays/difference.js","../source/arrays/drop.js","../source/arrays/eachRight.js","../source/arrays/eachRightAsync.js","../source/arrays/every.js","../source/arrays/everyAsync.js","../source/arrays/filter.js","../source/arrays/filterAsync.js","../source/objects/keys.js","../source/utilities/toPath.js","../source/utilities/get.js","../source/objects/hasKeys.js","../source/types/isPlainObject.js","../source/types/isConstructor.js","../source/types/isTypeFactory.js","../source/types/isBuffer.js","../source/utilities/isEqual.js","../source/arrays/largest.js","../source/arrays/map.js","../source/arrays/mapAsync.js","../source/math/subtract.js","../source/math/subtractReverse.js","../source/math/randomInt.js","../source/internal/array.js","../source/arrays/shuffle.js","../source/arrays/smallest.js","../source/arrays/unique.js","../source/buffers/clear.js","../source/collection/findIndexCache.js","../source/collection/sortCollectionDescending.js","../source/collection/sortCollectionAlphabetically.js","../source/collection/sortCollectionAscending.js","../source/types/isNumber.js","../source/types/isString.js","../source/objects/pluckObject.js","../source/collection/sortCollectionAlphabeticallyReverse.js","../source/internal/regexTestFactory.js","../source/files/isFileCSS.js","../source/files/isFileHTML.js","../source/files/isFileJS.js","../source/files/isFileJSON.js","../source/objects/assign.js","../source/objects/eachAsync.js","../source/objects/each.js","../source/types/isSet.js","../source/utilities/forOf.js","../source/types/isGenerator.js","../source/utilities/forOfAsync.js","../source/types/isFunction.js","../source/types/isAsync.js","../source/utilities/generateLoop.js","../source/utilities/each.js","../source/functions/chain.js","../source/utilities/stubTrue.js","../source/utilities/stubFalse.js","../source/utilities/noop.js","../source/utilities/times.js","../source/utilities/timer.js","../source/internal/apply.js","../source/objects/mapAsync.js","../source/objects/map.js","../source/types/getType.js","../source/types/cloneType.js","../source/utilities/forOfMap.js","../source/utilities/forOfMapAsync.js","../source/utilities/map.js","../source/objects/everyAsync.js","../source/objects/every.js","../source/utilities/forOfEvery.js","../source/utilities/forOfEveryAsync.js","../source/utilities/every.js","../source/utilities/cacheNativeMethod.js","../source/internal/object.js","../source/internal/isSame.js","../source/math/randomFloat.js","../source/numbers/isPositive.js","../source/objects/getEntries.js","../source/objects/compactMapAsync.js","../source/objects/compactMap.js","../source/objects/filter.js","../source/objects/filterAsync.js","../source/objects/isMatch.js","../source/types/isRegex.js","../source/regexps/escapeRegex.js","../source/regexps/arrayToRegex.js","../source/objects/size.js","../source/objects/zip.js","../source/strings/camelCase.js","../source/strings/kebabCase.js","../source/strings/snakeCase.js","../source/strings/upperCase.js","../source/strings/lowerCase.js","../source/strings/range.js","../source/strings/sanitize.js","../source/strings/tokenize.js","../source/strings/typography.js","../source/types/getTypeName.js","../source/types/noValue.js","../source/types/isMap.js","../source/types/isTypedArray.js","../source/types/isBigInt.js","../source/types/isBoolean.js","../source/types/isArrayBuffer.js","../source/types/isCloneable.js","../source/types/isDate.js","../source/types/isFalse.js","../source/types/isF32.js","../source/types/isF64.js","../source/types/isFloat.js","../source/types/isI16.js","../source/types/isI32.js","../source/types/isI8.js","../source/types/isPromise.js","../source/types/isKindAsync.js","../source/types/isSafeInt.js","../source/types/isU16.js","../source/types/isU32.js","../source/types/isU8.js","../source/types/isU8C.js","../source/types/isWeakMap.js","../source/types/isDeno.js","../source/types/isNode.js","../source/types/isTruthy.js","../source/utilities/notEqual.js","../source/utilities/json.js","../source/utilities/assert.js","../source/utilities/clone.js","../source/utilities/forOfCompactMapAsync.js","../source/utilities/forOfCompactMap.js","../source/utilities/compactMap.js","../source/utilities/forOfFilter.js","../source/utilities/forOfFilterAsync.js","../source/utilities/filter.js","../source/utilities/flow.js","../source/utilities/flowAsync.js","../source/utilities/hasDot.js","../source/utilities/interval.js","../source/utilities/model.js","../source/utilities/store.js","../source/utilities/uid.js","../source/utilities/virtualStorage.js","../source/math/add.js","../source/functions/after.js","../source/utilities/arraysToObject.js","../source/functions/ary.js","../source/functions/before.js","../source/utilities/bindAll.js","../source/math/progress.js","../source/arrays/chunk.js","../source/utilities/clear.js","../source/arrays/clone.js","../source/utilities/compact.js","../source/objects/compactKeys.js","../source/utilities/concurrent.js","../source/utilities/concurrentStatus.js","../source/filesystem/copyFolder.js","../source/collection/countBy.js","../source/collection/countKey.js","../source/collection/countWithoutKey.js","../source/filesystem/directory.js","../source/functions/curry.js","../source/functions/curryRight.js","../source/functions/debounce.js","../source/math/deduct.js","../source/math/divide.js","../source/arrays/dropRight.js","../source/buffers/ensure.js","../source/utilities/everyArg.js","../source/collection/findIndex.js","../source/collection/findItem.js","../source/arrays/first.js","../source/arrays/flatten.js","../source/utilities/forEachAsync.js","../source/utilities/forMap.js","../source/files/getExtension.js","../source/files/getFilename.js","../source/collection/getHighest.js","../source/collection/getLowest.js","../source/arrays/getNumberInsertIndex.js","../source/collection/groupBy.js","../source/utilities/has.js","../source/functions/ifInvoke.js","../source/utilities/ifNotAssign.js","../source/utilities/ifValue.js","../source/functions/inAsync.js","../source/functions/inSync.js","../source/math/increment.js","../source/collection/indexBy.js","../source/arrays/initial.js","../source/arrays/intersect.js","../source/objects/invert.js","../source/collection/invoke.js","../source/collection/invokeAsync.js","../source/types/isArguments.js","../source/types/isArrayLike.js","../source/types/isChild.js","../source/types/isEmpty.js","../source/types/isFalsy.js","../source/types/isIterable.js","../source/arrays/isMatch.js","../source/numbers/isNumberEqual.js","../source/numbers/isNumberInRange.js","../source/numbers/isNumberNotInRange.js","../source/types/isParent.js","../source/types/isPrimitive.js","../source/types/isRelated.js","../source/types/isSameType.js","../source/types/isTrue.js","../source/numbers/isZero.js","../source/arrays/last.js","../source/arrays/mapRight.js","../source/arrays/mapWhile.js","../source/utilities/merge.js","../source/math/multiple.js","../source/functions/negate.js","../source/functions/nthArg.js","../source/objects/omit.js","../source/functions/once.js","../source/functions/over.js","../source/functions/overEvery.js","../source/utilities/pair.js","../source/arrays/partition.js","../source/objects/pick.js","../source/collection/pluck.js","../source/utilities/promise.js","../source/utilities/propertyMatch.js","../source/functions/rearged.js","../source/math/remainder.js","../source/arrays/remove.js","../source/strings/replace.js","../source/arrays/rest.js","../source/arrays/right.js","../source/arrays/sample.js","../source/utilities/setKey.js","../source/utilities/setValue.js","../source/arrays/sortNumberAscending.js","../source/arrays/sortNumberDescening.js","../source/utilities/stubArray.js","../source/utilities/stubObject.js","../source/utilities/stubString.js","../source/math/subtractAll.js","../source/math/sumAll.js","../source/arrays/take.js","../source/arrays/takeRight.js","../source/functions/throttle.js","../source/utilities/timesAsync.js","../source/utilities/toggle.js","../source/strings/truncate.js","../source/arrays/zip.js","../source/arrays/union.js","../source/arrays/untilFalse.js","../source/arrays/untilTrue.js","../source/arrays/whileCompactMap.js","../source/arrays/whileEach.js","../source/arrays/whileMap.js","../source/arrays/without.js","../source/functions/wrap.js","../source/arrays/xor.js"],"sourcesContent":["/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","import {\n\treaddir, copyFile, mkdir, stat\n} from 'fs/promises';\nimport path from 'path';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nasync function copyToPath(sourceFolder, destinationFolder, file) {\n\tconst sourcePath = path.join(sourceFolder, file);\n\tconst destinationPath = path.join(destinationFolder, file);\n\tawait copyFile(sourcePath, destinationPath);\n}\nexport async function copyFolder(sourceFolder, destinationFolder) {\n\tconst files = await readdir(sourceFolder);\n\tawait eachAsyncArray(files, async (file) => {\n\t\tconst sourcePath = path.join(sourceFolder, file);\n\t\tconst filestats = await stat(sourcePath);\n\t\tif (filestats.isDirectory()) {\n\t\t\tconst folderDestination = path.join(destinationFolder, file.replace(sourceFolder, ''));\n\t\t\tawait mkdir(folderDestination, {\n\t\t\t\trecursive: true\n\t\t\t});\n\t\t\tawait copyFolder(sourcePath, folderDestination);\n\t\t} else {\n\t\t\tawait copyToPath(sourceFolder, destinationFolder, file);\n\t\t}\n\t});\n\treturn true;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import path from 'path';\nimport { fileURLToPath } from 'url';\nexport function currentFile(importMeta) {\n\tif (globalThis.__filename) {\n\t\treturn __filename;\n\t}\n\treturn fileURLToPath(importMeta.url);\n}\nexport function currentPath(importMeta) {\n\tif (globalThis.__dirname) {\n\t\treturn __dirname;\n\t}\n\treturn path.dirname(fileURLToPath(importMeta.url));\n}\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invoke\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invoke(collection, property, value) {\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * (async () => {\n * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]);\n * });\n *\n * @example\n * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invokeAsync(collection, property, value) {\n\treturn mapAsyncArray(collection, async (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n"],"names":["clearArray","source","length","isUndefined","undefined","hasLength","Boolean","isNull","hasValue","returnValue","eachArray","iteratee","thisCall","additionalArg","arrayLength","index","call","compactMapArray","results","item","arrayOriginal","returned","push","async","eachAsyncArray","compactMapAsyncArray","result","sign","Math","isNegative","rangeUp","start","end","step","sourceArray","position","rangeDown","forEach","callback","isArray","Array","ensureArray","flattenDeep","flat","Infinity","reflectConstruct","Reflect","construct","target","argumentsList","newTarget","args","difference","sources","differencesMap","Map","differences","currentArray","parentIndex","child","childIndex","childRoot","get","count","set","drop","array","amount","upTo","splice","eachRight","thisBind","eachRightAsync","everyArray","sourceLength","everyAsyncArray","filterArray","filterAsyncArray","objectKeys","Object","keys","regexToPath","regexCloseBracket","emptyString","toPath","replace","split","propertyString","link","hasOwn","hasKeys","properties","pathArray","lastPath","pop","initialPathObject","isPlainObject","value","constructor","toString","trim","slice","isConstructor","isConstructorFactory","constructorName","name","isConstructorNameFactory","isTypeFactory","method","primarySource","otherSources","isBufferCall","isBuffer","isEqual","equals","sourceProperties","key","mathNativeMax","max","mapArray","mapAsyncArray","subtract","minuend","subtrahend","subtractReverse","floor","random","randomInt","min","arrayFrom","from","toArray","arrayLike","mapFn","thisArg","shuffle","shuffleArray","mathNativeMin","onlyUnique","indexOf","sortUnique","unique","isSorted","filter","clearBuffer","fill","findIndexCache","element","indexMatch","propertyName","sortCollectionDescendingFilter","previous","next","ifMatch","previousKey","nextKey","sortCollectionDescending","collection","sort","sortObjectsAlphabetically","localeCompare","sortCollectionAscendingFilter","sortCollectionAscending","isNumberCall","isNumber","isString","String","pluckObject","targets","sortObjectsAlphabeticallyReverse","regexTestFactory","regexType","test","isFileCSS","isFileHTML","isFileJS","isFileJSON","objectAssign","assign","eachAsyncObject","propertyCount","eachObject","objectKeysArray","isSetCall","isSet","forOf","isGeneratorCall","isGenerator","forOfAsync","generatorArgs","isFunction","Function","isAsyncCall","isAsync","generateLoop","arrayLoop","arrayLoopAsync","objectLoop","objectLoopAsync","forOfLoop","forOfLoopAsync","argument1","argument2","argument3","isIterateeAsync","each","Chain","methods","this","addChainMethod","thisChain","methodName","setValue","done","truth","falsy","noop","times","Timers","list","remove","id","clearTimeout","delete","has","callable","time","currentThis","setTimeout","clear","timers","timer","applyNative","apply","thisArgument","mapAsyncObject","thisObject","mapObject","original","getType","cloneType","sourceType","forOfMap","resultsObject","methodPush","add","methodPushBound","bind","methodSet","forOfMapAsync","resultsGenerator","map","everyAsyncObject","everyObject","forOfEvery","forOfEveryAsync","every","functionPrototype","prototype","cacheNativeMethod","getPropNames","getOwnPropertyNames","getPropDesc","getOwnPropertyDescriptor","defProp","defineProperty","hasProp","hasOwnProperty","isSame","is","objectEntries","entries","compactMapAsyncObject","compactMapObject","filterObject","filterAsyncObject","isRegexCall","isRegex","escapeRegexRegex","escapeRegex","arrayToRegex","makeSafe","RegExp","join","objectSize","normalizeCase","space","restString","string","substring","rawURLDecodeRegex","andRegex","lessThanRegex","moreThanRegex","doubleQuoteRegex","rawURLDecode","decodeURIComponent","htmlEntities","tokenizeRegEx","wordsRegEx","getWords","upperFirstLetter","toUpperCase","upperFirst","upperFirstOnly","toLowerCase","getTypeName","noValue","isMapCall","isMap","typedArrayRegex","arrayConstructorName","isTypedArray","isBigIntCall","isBigInt","isBooleanCall","isBoolean","isArrayBufferCall","isArrayBuffer","constructorNames","isDateCall","isDate","isFalse","isF32Call","isF32","isF64Call","isF64","isInteger","Number","isFloat","isI16Call","isI16","isI32Call","isI32","isI8Call","isI8","isPromise","Promise","isKindAsync","isSafeInteger","isSafeInt","isU16Call","isU16","isU32Call","isU32","isU8Call","isU8","isU8CCall","isU8C","isWeakMapCall","isWeakMap","isDeno","globalThis","Deno","isNodejs","process","versions","node","isTruthy","returnIfTrue","notEqual","jsonNative","JSON","stringify","createAssertError","expected","localOptions","options","errorTitle","title","file","Error","assertAsync","sourceArg","structuredCloneSafe","structuredClone","forOfCompactMapAsync","forOfCompactMap","compactMap","forOfFilter","forOfFilterAsync","returnFlow","arg","flow","flowRight","flowAsync","flowAsyncRight","hasDot","Intervals","clearInterval","setInterval","intervals","Model","static","modelName","modelValue","models","Store","property","data","Proxy","proxySource","console","log","UniqID","totalActive","freed","totalFree","shift","free","isActive","shouldReset","reset","uniqID","VirtualStorage","initialObject","items","getItem","setItem","removeItem","augend","addend","point","sortedObject","bindThis","targetAssign","total","currentAmount","config","size","chunked","match","sourceKeys","sourceKeysLength","targetObject","i","keyName","object","compactedKeys","queue","all","allSettled","copyFolder","sourceFolder","destinationFolder","files","readdir","sourcePath","path","stat","isDirectory","folderDestination","mkdir","recursive","destinationPath","copyFile","copyToPath","importMeta","__filename","fileURLToPath","url","__dirname","dirname","arity","curries","curried","curryArgs","unshift","debounced","Buffer","alloc","findIndex","find","level","reduce","previousValue","currentValue","concat","values","valuesLength","cloned","methodBound","lastIndexOf","insertIndex","search","includes","rootObject","equalThis","optional","firstArgument","text","arrays","otherItem","strictFlag","indexes","sourceChild","targetParent","Symbol","iterator","compareArray","targetKeys","sourceParent","targetChild","type","targetOne","targetTwo","other","otherType","reviver","parse","indexFrom","trueIndex","merge","currentSource","sourceItem","sourceKey","blacklist","blacklistRegex","numberToString","iteratees","predicates","predicate","rejected","whitelist","compared","removeThese","words","sampleArray","used","numberList","a","b","endIndex","indexRight","throttled","shouldThrottle","on","off","maxLength","stringLength","breakAll","breakAllLength","truncateDown","truncateUp","arraySet","unZippedKeys","sourcesSet","Set","wrapper","xorMap","xored","zipedObject"],"mappings":"wVAaO,SAASA,EAAWC,GAE1B,OADAA,EAAOC,OAAS,EACTD,CACR,CCLO,SAASE,EAAYF,GAC3B,YAAkBG,IAAXH,CACR,CCAO,SAASI,EAAUJ,GACzB,OAAOK,QAAQL,EAAOC,OACvB,CCFO,SAASK,EAAON,GACtB,OAAkB,OAAXA,CACR,CCDO,SAASO,EAASP,GACxB,OAAQE,EAAYF,KAAYM,EAAON,EACxC,CCRO,SAASQ,EAAYR,GAC3B,OAAOA,CACR,CCYO,SAASS,EAAUT,EAAQU,EAAUC,EAAUC,GACrD,IAAKZ,EACJ,OAED,MAAMa,EAAcb,EAAOC,OAC3B,GAAIM,EAASI,GACZ,IAAK,IAAIG,EAAQ,EAAGA,EAAQD,EAAaC,IACxCJ,EAASK,KAAKJ,EAAUX,EAAOc,GAAQA,EAAOd,EAAQa,EAAaD,QAGpE,IAAK,IAAIE,EAAQ,EAAGA,EAAQD,EAAaC,IACxCJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAaD,GAGtD,OAAOZ,CACR,CCfO,SAASgB,EAAgBhB,EAAQU,EAAWF,EAAaS,EAAU,GAAIN,EAAUC,GAgBvF,OAfIL,EAASI,GACZF,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,KAC9C,MAAMO,EAAWV,EAASK,KAAKJ,EAAUO,EAAMJ,EAAOG,EAASE,EAAeN,EAAaD,GACvFL,EAASa,IACZH,EAAQI,KAAKD,EACb,IAGFX,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,KAC9C,MAAMO,EAAWV,EAASQ,EAAMJ,EAAOG,EAASE,EAAeN,EAAaF,EAAUC,GAClFL,EAASa,IACZH,EAAQI,KAAKD,EACb,IAGIH,CACR,CCjBOK,eAAeC,EAAevB,EAAQU,EAAUC,EAAUC,GAChE,IAAKZ,EACJ,OAED,MAAMa,EAAcb,EAAOC,OAC3B,GAAIM,EAASI,GACZ,IAAK,IAAIG,EAAQ,EAAGA,EAAQD,EAAaC,UAClCJ,EAASK,KAAKJ,EAAUX,EAAOc,GAAQA,EAAOd,EAAQa,EAAaD,QAG1E,IAAK,IAAIE,EAAQ,EAAGA,EAAQD,EAAaC,UAClCJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAaD,GAG5D,OAAOZ,CACR,CCjBOsB,eAAeE,EAAqBxB,EAAQU,EAAWF,GAC7D,MAAMS,EAAU,GAOhB,aANMM,EAAevB,GAAQsB,MAAOJ,EAAMJ,EAAOD,KAChD,MAAMY,QAAef,EAASQ,EAAMJ,EAAOG,EAASJ,GAChDN,EAASkB,IACZR,EAAQI,KAAKI,EACb,IAEKR,CACR,CChBA,MAAQS,KAAAA,GAASC,KACV,SAASC,EAAW5B,GAC1B,OAAyB,IAAlB0B,EAAK1B,EACb,CCfO,SAAS6B,EAAQC,EAAOC,EAAKC,EAAMC,GACzC,IAAIC,EAAWJ,EACf,KAAOI,EAAWH,GACjBE,EAAYZ,KAAKa,GACjBA,GAAYF,EAEb,OAAOC,CACR,CACO,SAASE,EAAUL,EAAOC,EAAKC,EAAMC,GAC3C,IAAIC,EAAWJ,EACf,KAAOI,EAAWH,GACjBE,EAAYZ,KAAKa,GACjBA,GAAYF,EAEb,OAAOC,CACR,CChBO,SAASG,EAAQpC,EAAQqC,GAE/B,OADArC,EAAOoC,QAAQC,GACRrC,CACR,CCUY,MAACsC,EAAUC,MAAMD,QCEtB,SAASE,EAAYxC,GAC3B,OAAQsC,EAAQtC,IAAWA,GAAYO,EAASP,IAAW,CAACA,IAAY,EACzE,CCHO,SAASyC,EAAYzC,GAC3B,OAAOA,EAAO0C,KAAKC,IACpB,CCKA,MAAMC,EAAmBC,QAAQC,UAE1B,SAASA,EAAUC,EAAQC,EAAgB,GAAIC,GACrD,MAAMC,EAAQZ,EAAQU,GAAkBA,EAAgB,CAACA,GACzD,OAAIC,EACIL,EAAiBG,EAAQG,EAAMD,GAEhCL,EAAiBG,EAAQG,EACjC,CCXO,SAASC,KAAcC,GAC7B,MAAMC,EAAiBP,EAAUQ,KAC3BC,EAAc,GAuBpB,OAtBA9C,EAAU2C,GAAS,CAACI,EAAcC,KACjChD,EAAU+C,GAAc,CAACE,EAAOC,KAC/B,IAAIC,EAAYP,EAAeQ,IAAIH,GACnC,GAAKE,EAOE,IAAIA,EAAUH,cAAgBA,EACpC,OAEAG,EAAUE,OACV,MAVAF,EAAY,CACXE,MAAO,EACPL,cACAC,SAEDL,EAAeU,IAAIL,EAAOE,EAK1B,GACA,IAEHxB,EAAQiB,GAAiBnC,IACL,IAAfA,EAAK4C,OAAoC,IAArB5C,EAAKuC,aAC5BF,EAAYlC,KAAKH,EAAKwC,MACtB,IAEKH,CACR,CC5BO,SAASS,EAAKC,EAAOC,EAAS,EAAGC,EAAOF,EAAMhE,QACpD,OAAOgE,EAAMG,OAAOF,EAAQC,EAC7B,CCGO,SAASE,EAAUrE,EAAQU,EAAU4D,GAC3C,IAAKtE,EACJ,OAED,MAAMa,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQD,EAAc,EAAEC,GAAS,EAAEA,IAC3CJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAayD,GAErD,OAAOtE,CACR,CCXOsB,eAAeiD,EAAevE,EAAQU,GAC5C,IAAKV,EACJ,OAED,MAAMa,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQD,EAAc,EAAGC,GAAS,EAAGA,UACvCJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,GAE9C,OAAOb,CACR,CCNO,SAASwE,EAAWxE,EAAQU,EAAU4D,GAC5C,IAAKtE,EACJ,OAED,MAAMyE,EAAezE,EAAOC,OAC5B,IAAK,IAAIa,EAAQ,EAAEA,EAAQ2D,EAAa3D,IACvC,IAAuE,IAAnEJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQyE,EAAcH,GACxD,OAAO,EAGT,OAAO,CACR,CCXOhD,eAAeoD,EAAgB1E,EAAQU,EAAU4D,GACvD,IAAKtE,EACJ,OAED,MAAMyE,EAAezE,EAAOC,OAC5B,IAAK,IAAIa,EAAQ,EAAEA,EAAQ2D,EAAa3D,IACvC,IAA6E,UAAnEJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQyE,EAAcH,GAC9D,OAAO,EAGT,OAAO,CACR,CCXO,SAASK,EAAY3E,EAAQU,EAAUO,EAAU,GAAIqD,GAM3D,OALA7D,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,MAC+B,IAAzEH,EAASQ,EAAMJ,EAAOG,EAASE,EAAeN,EAAayD,IAC9DrD,EAAQI,KAAKH,EACb,IAEKD,CACR,CCPOK,eAAesD,EAAiB5E,EAAQU,EAAUO,EAAU,GAAIqD,GAMtE,aALM/C,EAAevB,GAAQsB,MAAOJ,EAAMJ,EAAOK,EAAeN,MACoB,UAAzEH,EAASQ,EAAMJ,EAAOG,EAASE,EAAeN,EAAayD,IACpErD,EAAQI,KAAKH,EACb,IAEKD,CACR,CCjBA,MAAM4D,EAAaC,OAAOC,KACnB,SAASA,EAAK/E,GACpB,GAAIA,EACH,OAAO6E,EAAW7E,EAEpB,CCjBA,MAAMgF,EAAc,QACdC,EAAoB,KACpBC,EAAc,GAcb,SAASC,EAAOnF,GACtB,OAAOA,EAAOoF,QAAQH,EAAmBC,GAAaG,MAAML,EAC7D,CCKO,SAASnB,EAAIyB,EAAgBvC,GACnC,IAAKA,EACJ,OAAO,EAER,IAAIwC,EAAOxC,EAMX,OAJAyB,EADmBlC,EAAQgD,GAAmBA,EAAiBH,EAAOG,IAC/CpE,IACtBqE,EAAOA,EAAKrE,GACLX,EAASgF,MAEVA,CACR,CC9BA,MAAMC,EAASV,OAAOU,OAef,SAASC,EAAQzF,KAAW0F,GAClC,GAAK1F,EAGL,OAAOwE,EAAWkB,GAAaxE,IAC9B,MAAMyE,EAAYR,EAAOjE,GACzB,GAAyB,IAArByE,EAAU1F,OACb,OAAOuF,EAAOxF,EAAQkB,GAChB,CACN,MAAM0E,EAAWD,EAAUE,MACrBC,EAAoBjC,EAAI8B,EAAW3F,GACzC,QAAI8F,GACIN,EAAOM,EAAmBF,EAGlC,IAEH,CCtBY,MAACG,EAAiBC,KACzBzF,EAASyF,IAEO,YADZA,EAAMC,YAAYC,WAAWC,OAClCC,MAAM,EAAG,ICHN,SAASC,EAActD,EAAQ/C,GACrC,OAAO+C,GAAQkD,cAAgBjG,IAAU,CAC1C,CACO,SAASsG,EAAqBtG,GACpC,OAAQ+C,GACAsD,EAActD,EAAQ/C,EAE/B,CACO,SAASuG,EAAgBvG,GAC/B,OAAOA,GAAQiG,aAAaO,IAC7B,CACO,SAASC,EAAyBzG,GACxC,OAAQ+C,GACAwD,EAAgBxD,KAAY/C,IAAU,CAE/C,CC5BO,SAAS0G,EAAcC,GAC7B,OAAO,SAASC,KAAkBC,GACjC,OAAIA,EACIF,EAAOC,IAAkBpC,EAAWqC,EAAcF,GAEnDA,EAAOC,EAChB,CACA,CCMY,MAACE,EAAeL,EAAyB,UACxCM,EAAWL,EAAcI,GCMzBE,EAAU,CAAChH,EAAQ+C,KAC/B,GAAI/C,IAAW+C,EACd,OAAO,EACD,GAAIgE,EAAS/G,GACnB,OAAOA,EAAOiH,OAAOlE,GACf,GAAI/C,EAAOkG,aAAenD,EAAOmD,WACvC,GAAIH,EAAc/F,GAAS,CAC1B,MAAMkH,EAAmBnC,EAAK/E,GAC9B,GAAIyF,EAAQ1C,EAAQmE,GACnB,OAAO1C,EAAW0C,GAAmBC,GAC7BH,EAAQhH,EAAOmH,GAAMpE,EAAOoE,KAGxC,MAAS,GAAI7E,EAAQtC,IACdA,EAAOC,SAAW8C,EAAO9C,OAC5B,OAAOuE,EAAWxE,GAAQ,CAACkB,EAAMJ,IACzBkG,EAAQ9F,EAAM6B,EAAOjC,MAKhC,OAAO,CAAK,EC1Cb,MAAMsG,EAAgBzF,KAAK0F,ICsBpB,SAASC,EAAStH,EAAQU,EAAUO,EAAU,GAAIN,EAAUC,GAUlE,OATIL,EAASI,GACZF,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,KAC9CI,EAAQH,GAASJ,EAASK,KAAKJ,EAAUO,EAAMJ,EAAOG,EAASE,EAAeN,EAAaD,EAAc,IAG1GH,EAAUT,GAAQ,CAACkB,EAAMJ,EAAOK,EAAeN,KAC9CI,EAAQH,GAASJ,EAASQ,EAAMJ,EAAOG,EAASE,EAAeN,EAAaD,EAAc,IAGrFK,CACR,CCfOK,eAAeiG,EAAcvH,EAAQU,GAC3C,MAAMO,EAAU,GAIhB,aAHMM,EAAevB,GAAQsB,MAAOJ,EAAMJ,EAAOD,KAChDI,EAAQH,SAAeJ,EAASQ,EAAMJ,EAAOD,EAAY,IAEnDI,CACR,CCVO,SAASuG,EAASC,EAASC,GACjC,OAAOD,EAAUC,CAClB,CCFO,SAASC,GAAgBD,EAAYD,GAC3C,OAAOA,EAAUC,CAClB,CChBA,MAAME,MACLA,GACDC,OAACA,IACGlG,KAeG,SAASmG,GAAUT,EAAKU,EAAM,GACpC,OAAOH,GAAMC,MAAYR,EAAMU,IAAQA,CACxC,CCnBA,MAAMC,GAAYzF,MAAM0F,KAejB,SAASC,GAAQC,EAAWC,EAAOC,GACzC,GAAI9H,EAAS4H,GACZ,OAAOH,GAAUG,EAAWC,EAAOC,EAErC,CCJO,SAASC,GAAQvF,EAAQmB,EAASnB,EAAO9C,QAC/C,GAAI8C,EAAO9C,QAAU,EACpB,OAAOiI,GAAQnF,GAEhB,MAAMwF,EAAeL,GAAQnF,GAC7B,IACIjC,EACAkF,EAFAlC,EAAQ,EAGZ,KAAOA,EAAQI,GACdpD,EAAQgH,GAAUS,EAAatI,OAAS,EAAG,GAC3C+F,EAAQuC,EAAazE,GACrByE,EAAazE,GAASyE,EAAazH,GACnCyH,EAAazH,GAASkF,EACtBlC,IAED,OAAOyE,CACR,CChCA,MAAMC,GAAgB7G,KAAKoG,ICApB,SAASU,GAAWzC,EAAOlF,EAAOmD,GACxC,OAAOA,EAAMyE,QAAQ1C,KAAWlF,CACjC,CACO,SAAS6H,GAAWzH,EAAMJ,EAAOmD,GACvC,OAAO/C,IAAS+C,EAAMnD,EAAQ,EAC/B,CAeO,SAAS8H,GAAO5I,EAAQ6I,GAC9B,OAAIA,EACI7I,EAAO8I,OAAOH,IAEf3I,EAAO8I,OAAOL,GACtB,CCZO,SAASM,GAAY/I,GAE3B,OADAA,EAAOgJ,KAAK,GACLhJ,CACR,CChBO,SAASiJ,GAAeC,EAASpI,EAAOmD,EAAOkF,EAAYC,GACjE,GAAIF,EAAQE,KAAkBD,EAC7B,OAAO,CAET,CCcO,SAASE,GAA+BC,EAAUC,EAAMH,EAAcI,GAC5E,MAAMC,EAAcH,EAASF,GACvBM,EAAUH,EAAKH,GACrB,OAAIK,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMH,GAE3BM,EAEOD,EAEDA,EAAcC,EACjB,EACGD,EAAcC,GAChB,EAEF,EANC,GAFC,CASV,CACO,SAASC,GAAyBC,EAAYR,EAAe,KAAMI,GACzE,OAAOI,EAAWC,MAAK,CAACP,EAAUC,IAC1BF,GAA+BC,EAAUC,EAAMH,EAAcI,IAEtE,CCbO,SAASM,GAA0BR,EAAUC,EAAMH,EAAcI,GACvE,MAAMC,EAAcH,EAASF,GACvBM,EAAUH,EAAKH,GACrB,OAAIK,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMH,GAEzBK,EAAYM,cAAcL,EAClC,CCfO,SAASM,GAA8BV,EAAUC,EAAMH,EAAcI,GAC3E,MAAMC,EAAcH,EAASF,GACvBM,EAAUH,EAAKH,GACrB,OAAIK,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMH,GAE3BM,EAEOD,EAEDA,EAAcC,GAChB,EACED,EAAcC,EACjB,EAED,GANE,EAFD,CAST,CACO,SAASO,GAAwBL,EAAYR,EAAe,KAAMI,GACxE,OAAOI,EAAWC,MAAK,CAACP,EAAUC,IAC1BS,GAA8BV,EAAUC,EAAMH,EAAcI,IAErE,CCzBY,MAACU,GAAezD,EAAyB,UACxC0D,GAAWzD,EAAcwD,ICA1B,MAACE,GAAW9D,EAAqB+D,QCCtC,SAASC,GAAYtK,EAAQuK,GACnC,GAAKvK,EAEE,OAAIoK,GAASG,GACZvK,EAAOuK,GAERjD,EAASiD,GAAUrJ,GAClBlB,EAAOkB,IAEhB,CCPO,SAASsJ,GAAiClB,EAAUC,EAAMH,EAAcI,GAC9E,MAAMC,EAAcH,EAASF,GACvBM,EAAUH,EAAKH,GACrB,OAAIK,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMH,GAEzBM,EAAQK,cAAcN,EAC9B,CCxBO,SAASgB,GAAiBC,GAChC,OAAQxJ,KACCX,EAASW,IAASwJ,EAAUC,KAAKzJ,EAE3C,CCQY,MAAC0J,GAAYH,GAAiB,UCA7BI,GAAaJ,GAAiB,WCA9BK,GAAWL,GAAiB,SCA5BM,GAAaN,GAAiB,WCZ/B,MAACO,GAAelG,OAAOmG,OAc5B,SAASA,GAAOlI,KAAWK,GACjC,GAAI7C,EAASwC,GACZ,OAAOiI,GAAajI,KAAWK,EAEjC,CCIa,MAAA8H,GAAkB5J,MAAOtB,EAAQU,EAAUC,EAAUC,KACjE,IAAKZ,EACJ,OAED,MAAM6E,EAAaE,EAAK/E,GAUxB,OATIO,EAASI,SACNY,EAAesD,GAAY,CAACsC,EAAKrG,EAAOmD,EAAOkH,IAC7CzK,EAASK,KAAKJ,EAAUX,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAetG,EAAYjE,WAG/EW,EAAesD,GAAY,CAACsC,EAAKrG,EAAOmD,EAAOkH,IAC7CzK,EAASV,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAetG,EAAYjE,KAGhEZ,CAAM,EChBP,SAASoL,GAAWpL,EAAQU,EAAUC,EAAUC,GACtD,IAAKZ,EACJ,OAED,MAAM6E,EAAaE,EAAK/E,GAUxB,OATIO,EAASI,GACZF,EAAUoE,GAAY,CAACsC,EAAKrG,EAAOuK,EAAiBF,KACnDzK,EAASK,KAAKJ,EAAUX,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAeE,EAAiBzK,EAAc,IAGjGH,EAAUoE,GAAY,CAACsC,EAAKrG,EAAOuK,EAAiBF,KACnDzK,EAASV,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAeE,EAAiBzK,EAAc,IAG5EZ,CACR,CCrBY,MAACsL,GAAY7E,EAAyB,OACrC8E,GAAQ7E,EAAc4E,ICf5B,SAASE,GAAMxL,EAAQU,GAC7B,GAAI6K,GAAMvL,GAAS,CAClB,IAAK,MAAMgG,KAAShG,EACnBU,EAASsF,EAAOhG,GAEjB,OAAOA,CACP,CACD,IAAK,MAAOmH,EAAKnB,KAAUhG,EAC1BU,EAASsF,EAAOmB,EAAKnH,GAEtB,OAAOA,CACR,CCGY,MAACyL,GAAkBhF,EAAyB,qBAC3CiF,GAAchF,EAAc+E,ICdlCnK,eAAeqK,GAAW3L,EAAQU,EAAUkL,GAClD,GAAIL,GAAMvL,GAAS,CAClB,IAAK,MAAMgG,KAAShG,QACbU,EAASsF,EAAOhG,GAEvB,OAAOA,CACP,CACD,GAAI0L,GAAY1L,GACf,UAAW,MAAMkB,KAAQlB,KAAU4L,SAC5BlL,EAASQ,EAAMlB,GAGvB,IAAK,MAAOmH,EAAKnB,KAAUhG,QACpBU,EAASsF,EAAOmB,EAAKnH,GAE5B,OAAOA,CACR,CCJY,MAAC6L,GAAc7L,KAClBO,EAASP,IAAWA,aAAkB8L,SCDlCC,GAActF,EAAyB,iBACvCuF,GAAUtF,EAAcqF,ICT9B,SAASE,GAAaC,EAAWC,EAAgBC,EAAYC,EAAiBC,EAAWC,GAC/F,MAAO,CAACvM,EAAQU,EAAU8L,EAAWC,EAAWC,KAC/C,IAAItL,EACJ,MAAMuL,EAAkBX,GAAQtL,GAChC,GAAKH,EAASP,IAAYU,EAa1B,OAVCU,EADUkB,EAAQtC,GACP,EAAoBmM,EAAiBD,EACtCnG,EAAc/F,IAAW6L,GAAW7L,GACnC,EAAoBqM,EAAkBD,EACvCE,EACC,EAAoBC,EAAiBD,EACtCZ,GAAY1L,GACXuM,EAEA,EAAoBF,EAAkBD,EAE3ChL,EAASpB,EAAQU,EAAU8L,EAAWC,EAAWC,EAAU,CAEpE,CCIY,MAACE,GAAOX,GAAaxL,EAAWc,EAAgB6J,GAAYF,GAAiBM,GAAOG,ICvBzF,MAAMkB,GACZ,WAAA5G,CAAY6G,GACXC,KAAKC,eAAeF,EACpB,CACD,cAAAE,CAAeF,GACd,MAAMG,EAAYF,KAClBH,GAAKE,GAAS,CAACnG,EAAQuG,KACtBD,EAAUC,GAAc,YAAYhK,GAEnC,OADA6J,KAAK/G,MAAQW,EAAO5F,KAAKkM,EAAWA,EAAUjH,SAAU9C,GACjD+J,CACX,CAAI,GAEF,CACD,QAAAE,CAASnH,GAER,OADA+G,KAAK/G,MAAQA,EACN+G,IACP,CACD,IAAAK,GACC,MAAMpH,EAAQ+G,KAAK/G,MAEnB,OADA+G,KAAK/G,MAAQ,KACNA,CACP,CACDA,MAAQ,KCfI,MAAAqH,IAAQ,ECARC,IAAQ,ECFRC,GAAO,KACZ,ECQD,SAASC,GAAMtJ,EAAQxD,GAC7B,IAAK,IAAII,EAAQ,EAAGA,EAAQoD,EAAQpD,IACnCJ,EAASI,EAEX,CCnBO,MAAM2M,GACZC,KAAO5K,EAAUQ,KACjB,SAAAR,GACC,CAYD,MAAA6K,CAAOC,GACNC,aAAaD,GACbb,KAAKW,KAAKI,OAAOF,EACjB,CACD,GAAAG,CAAIH,GACH,OAAOb,KAAKW,KAAKK,IAAIH,EACrB,CACD,GAAA/J,CAAI+J,GACH,OAAOb,KAAKW,KAAK7J,IAAI+J,EACrB,CAcD,GAAA7J,CAAIiK,EAAUC,GACb,MAAMC,EAAcnB,KACda,EAAKO,YAAW,KACrBH,IACAE,EAAYP,OAAOC,EAAG,GACpBK,GAEH,OADAlB,KAAKW,KAAK3J,IAAI6J,EAAIP,IACXO,CACP,CAWD,KAAAQ,GACC,MAAMF,EAAcnB,KACpBmB,EAAYR,KAAKtL,SAASwL,IACzBM,EAAYP,OAAOC,EAAG,GAEvB,EAEU,MAACS,GAASvL,EAAU2K,IAgBzB,SAASa,GAAMN,EAAUC,GAC/B,OAAOI,GAAOtK,IAAIiK,EAAUC,EAC7B,CCvFA,MAAMM,GAAc1L,QAAQ2L,MAiBrB,SAASA,GAAMzL,EAAQ0L,EAAczL,GAC3C,GAAI6I,GAAW9I,GACd,OAAOwL,GAAYxL,EAAQ0L,EAAczL,EAE3C,CCFO1B,eAAeoN,GAAe1O,EAAQU,EAAUO,EAAU,CAAA,GAChE,GAAKjB,EAML,aAHMkL,GAAgBlL,GAAQsB,MAAOJ,EAAMiG,EAAKwH,EAAYxD,EAAetG,KAC1E5D,EAAQkG,SAAazG,EAASQ,EAAMiG,EAAKlG,EAAS0N,EAAYxD,EAAetG,EAAW,IAElF5D,CACR,CCLO,SAAS2N,GAAU5O,EAAQU,EAAUO,EAAU,CAAE,EAAEN,EAAUC,GACnE,GAAKZ,EAYL,OATIO,EAASI,GACZyK,GAAWpL,GAAQ,CAACkB,EAAMiG,EAAK0H,EAAU1D,EAAetG,KACvD5D,EAAQkG,GAAOzG,EAASK,KAAKJ,EAAUO,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,EAAYjE,EAAc,IAG/GwK,GAAWpL,GAAQ,CAACkB,EAAMiG,EAAK0H,EAAU1D,EAAetG,KACvD5D,EAAQkG,GAAOzG,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,EAAYjE,EAAc,IAG1FK,CACR,CCxBO,SAAS6N,GAAQ9O,GACvB,OAAOA,GAAQiG,WAChB,CCAO,SAAS8I,GAAU/O,EAAQkD,EAAO,IACxC,MAAM8L,EAAaF,GAAQ9O,GAC3B,OAAIgP,IAAelD,UACM,aAApBkD,EAAWxI,KACP,WAAW,EAGb1D,EAAUkM,EAAY9L,EAC9B,CCEO,SAAS+L,GAASjP,EAAQU,EAAWF,EAAa0O,GACxD,MAAMjO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,CAE3BqP,EADe3O,EAASsF,EAAO/E,EAASjB,GAExC,CACD,OAAOiB,CACP,CACD,MAAMsO,EAAY1D,GAAW5K,EAAQ8C,KACrC,IAAK,MAAOoD,EAAKnB,KAAUhG,EAAQ,CAClC,MAAMyB,EAASf,EAASsF,EAAOmB,EAAKlG,EAASjB,GACzCuP,EACHtO,EAAQ8C,IAAIoD,EAAK1F,GAEjBR,EAAQkG,GAAO1F,CAEhB,CACD,OAAOR,CACR,CCrBOK,eAAekO,GAAcxP,EAAQU,EAAWF,EAAa0O,EAAetD,GAClF,GAAIF,GAAY1L,GAAS,CACxB,MAAMyP,EAAmB,GACzB,UAAW,MAAMvO,KAAQlB,KAAU4L,GAClC6D,EAAiBpO,WAAWX,EAASQ,EAAMuO,EAAkBzP,IAE9D,OAAOyP,CACP,CACD,MAAMxO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,CAE3BqP,QADqB3O,EAASsF,EAAO/E,EAASjB,GAE9C,CACD,OAAOiB,CACP,CACD,MAAMsO,EAAY1D,GAAW5K,EAAQ8C,KACrC,UAAW,MAAOoD,EAAKnB,KAAUhG,EAAQ,CACxC,MAAMyB,QAAef,EAASsF,EAAOmB,EAAKlG,EAASjB,GAC/CuP,EACHtO,EAAQ8C,IAAIoD,EAAK1F,GAEjBR,EAAQkG,GAAO1F,CAEhB,CACD,OAAOR,CACR,CC1BY,MAACyO,GAAMzD,GAAa3E,EAAUC,EAAeqH,GAAWF,GAAgBO,GAAUO,ICNvFlO,eAAeqO,GAAiB3P,EAAQU,GAC9C,IAAKV,EACJ,OAGD,OAAO0E,EADYK,EAAK/E,IACW,CAACmH,EAAKrG,EAAO+N,EAAU1D,IAClDzK,EAASV,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAe0D,IAE3D,CCTO,SAASe,GAAY5P,EAAQU,GACnC,IAAKV,EACJ,OAGD,OAAOwE,EADYO,EAAK/E,IACM,CAACmH,EAAKrG,EAAO+N,EAAU1D,IAC7CzK,EAASV,EAAOmH,GAAMA,EAAKnH,EAAQmL,EAAe0D,IAE3D,CCNO,SAASgB,GAAW7P,EAAQU,EAAWF,GAC7C,GAAI8B,EAAQtC,IAAWuL,GAAMvL,GAC5B,IAAK,MAAMgG,KAAShG,EAAQ,CAE3B,IAAe,IADAU,EAASsF,EAAOhG,GAE9B,OAAO,CAER,MAED,IAAK,MAAOmH,EAAKnB,KAAUhG,EAAQ,CAElC,IAAe,IADAU,EAASsF,EAAOmB,EAAKnH,GAEnC,OAAO,CAER,CAEF,OAAO,CACR,CChBOsB,eAAewO,GAAgB9P,EAAQU,EAAWF,EAAaoL,GACrE,GAAIF,GAAY1L,GACf,UAAW,MAAMkB,KAAQlB,KAAU4L,GAAgB,CAElD,IAAe,UADMlL,EAASQ,EAAMlB,GAEnC,OAAO,CAER,MACK,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GACnC,IAAK,MAAMgG,KAAShG,EAAQ,CAE3B,IAAe,UADMU,EAASsF,EAAOhG,GAEpC,OAAO,CAER,MAED,IAAK,MAAOmH,EAAKnB,KAAUhG,EAAQ,CAElC,IAAe,UADMU,EAASsF,EAAOmB,EAAKnH,GAEzC,OAAO,CAER,CAEF,OAAO,CACR,CCvBY,MAAC+P,GAAQ9D,GAAazH,EAAYE,EAAiBkL,GAAaD,GAAkBE,GAAYC,ICvB1G,MAAME,GAAoBlE,SAASmE,UAc5B,SAASC,GAAkBvJ,GACjC,OAAOqJ,GAAkBjP,KAAKuO,KAAK3I,EACpC,CCHY,MAACwJ,GAAerL,OAAOsL,oBActBC,GAAcvL,OAAOwL,yBAoBrBC,GAAUzL,OAAO0L,eACjBC,GAAUP,GAAkBpL,OAAO4L,gBClCnCC,GAAS7L,OAAO8L,GCd7B,MAAM/I,OAAEA,IAAWlG,KCanB,MAAMD,KAAEA,IAASC,KCZL,MAACkP,GAAgB/L,OAAOgM,QCoB7BxP,eAAeyP,GAAsB/Q,EAAQU,EAAWF,EAAaS,EAAU,CAAA,GAOrF,aANMiK,GAAgBlL,GAAQsB,MAAOJ,EAAMiG,EAAK0H,EAAU1D,EAAetG,KACxE,MAAMpD,QAAef,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,GACvEtE,EAASkB,KACZR,EAAQkG,GAAO1F,EACf,IAEKR,CACR,CCPO,SAAS+P,GAAiBhR,EAAQU,EAAWF,EAAaS,EAAU,CAAA,GAO1E,OANAmK,GAAWpL,GAAQ,CAACkB,EAAMiG,EAAK0H,EAAU1D,EAAetG,KACvD,MAAMpD,EAASf,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,GACjEtE,EAASkB,KACZR,EAAQkG,GAAO1F,EACf,IAEKR,CACR,CCZO,SAASgQ,GAAajR,EAAQU,EAAUO,EAAU,CAAA,GAMxD,OALAmK,GAAWpL,GAAQ,CAACkB,EAAMiG,EAAK0H,EAAU1D,EAAetG,MACmB,IAAtEnE,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,KACzD5D,EAAQkG,GAAOjG,EACf,IAEKD,CACR,CCPOK,eAAe4P,GAAkBlR,EAAQU,EAAUO,EAAU,CAAA,GAMnE,aALMiK,GAAgBlL,GAAQsB,MAAOJ,EAAMiG,EAAK0H,EAAU1D,EAAetG,MACQ,UAAtEnE,EAASQ,EAAMiG,EAAKlG,EAAS4N,EAAU1D,EAAetG,KAC/D5D,EAAQkG,GAAOjG,EACf,IAEKD,CACR,CCRY,MCHCkQ,GAAc1K,EAAyB,UACvC2K,GAAU1K,EAAcyK,ICFxBE,GAAmB,4BACzB,SAASC,GAAYtR,GAC3B,OAAOA,EAAOoF,QAAQiM,GAAkB,OACzC,CCDO,SAASE,GAAavR,EAAQwR,GACpC,OAAIA,EACID,GAAajK,EAAStH,EAAQsR,KAE/BG,OAAOzR,EAAO0R,KAAK,KAC3B,CCPO,SAASC,GAAW3R,GAC1B,GAAKA,EAGL,OAAO+E,EAAK/E,GAAQC,MACrB,CCFY,MChBN2R,GAAgB,UCAtB,MAAMA,GAAgB,UAChBC,GAAQ,QCDd,MAAMD,GAAgB,UAChBC,GAAQ,QCDd,MAAMD,GAAgB,UCAtB,MAAMA,GAAgB,UCoFf,SAASE,GAAWC,EAAQjR,EAAQ,GAC1C,OAAOiR,EAAOC,UAAUlR,EACzB,CCrFA,MAAMmR,GAAoB,oBACpBC,GAAW,KACXC,GAAgB,KAChBC,GAAgB,KAChBC,GAAmB,KAclB,SAASC,GAAaP,GAC5B,OAAOQ,mBAAmBR,EAAO3M,QAAQ6M,IAAmB,IACpD,QAET,CAcO,SAASO,GAAaT,GAC5B,OAAOA,EAAO3M,QAAQ8M,GAAU,SAC9B9M,QAAQ+M,GAAe,QACvB/M,QAAQgN,GAAe,QACvBhN,QAAQiN,GAAkB,SAC7B,CC1CA,MAAMI,GAAgB,OAChBC,GAAa,OCAnB,MAAMC,GAAW,OAcV,SAASC,GAAiBb,GAChC,OAAOA,EAAO,GAAGc,aAClB,CAgBO,SAASC,GAAWf,GAC1B,OAAOa,GAAiBb,GAAUD,GAAWC,EAC9C,CAcO,SAASgB,GAAehB,GAC9B,OAAOa,GAAiBb,GAAUD,GAAWC,GAAQiB,aACtD,CCtCO,SAASC,GAAYjT,GAC3B,OAAO8O,GAAQ9O,IAASwG,IACzB,CCCO,SAAS0M,GAAQlT,GACvB,OAAQO,EAASP,EAClB,CCFY,MAACmT,GAAY1M,EAAyB,OACrC2M,GAAQ1M,EAAcyM,ICH7BE,GAAkB,QAClBC,GAAuB,QACtB,SAASC,GAAavT,GAC5B,GAAIA,EAAQ,CACX,MAAMuG,EAAkB0M,GAAYjT,GACpC,GAAIqT,GAAgB1I,KAAKpE,IAAoBA,IAAoB+M,GAChE,OAAO,CAER,CACD,OAAO,CACR,CCVY,MAACE,GAAe/M,EAAyB,UACxCgN,GAAW/M,EAAc8M,ICAzBE,GAAgBjN,EAAyB,WACzCkN,GAAYjN,EAAcgN,ICF1BE,GAAoBnN,EAAyB,eAC7CoN,GAAgBnN,EAAckN,ICF3C,MAAME,GAAmBrC,OAAO,uKCCpB,MAACsC,GAAatN,EAAyB,QACtCuN,GAAStN,EAAcqN,ICA7B,SAASE,GAAQjU,GACvB,OAAkB,IAAXA,CACR,CCHY,MAACkU,GAAYzN,EAAyB,gBACrC0N,GAAQzN,EAAcwN,ICAtBE,GAAY3N,EAAyB,gBACrC4N,GAAQ3N,EAAc0N,KChB7BE,UAAEA,IAAcC,OAcTC,GAAUF,GCCVG,GAAYhO,EAAyB,cACrCiO,GAAQhO,EAAc+N,ICHtBE,GAAYlO,EAAyB,cACrCmO,GAAQlO,EAAciO,ICCtBE,GAAWpO,EAAyB,aACpCqO,GAAOpO,EAAcmO,ICH3B,SAASE,GAAU/U,GACzB,QAAIA,GACIA,aAAkBgV,OAG3B,CCHO,SAASC,GAAYjV,GAC3B,QAAIA,IACI+U,GAAU/U,IAAWgM,GAAQhM,IAAW0L,GAAY1L,GAG7D,CCpBA,MAAMkV,cAAEA,IAAkBX,OAcbY,GAAYD,GCCb,MAACE,GAAY3O,EAAyB,eACrC4O,GAAQ3O,EAAc0O,ICDtBE,GAAY7O,EAAyB,eACrC8O,GAAQ7O,EAAc4O,ICDtBE,GAAW/O,EAAyB,cACpCgP,GAAO/O,EAAc8O,ICDrBE,GAAYjP,EAAyB,qBACrCkP,GAAQjP,EAAcgP,ICDtBE,GAAgBnP,EAAyB,WACzCoP,GAAYnP,EAAckP,IChB1BE,QAAoC,IAApBC,WAAWC,KCA3BC,QAAyC,IAAvBF,WAAWG,SAA2BA,QAAQC,UAAYD,QAAQC,SAASC,KCenG,SAASC,GAASrW,EAAQsW,GAAe,GAC/C,OAAOjW,QAAQL,IAAWsW,CAC3B,CCDO,SAASC,GAASvW,EAAQ+C,GAChC,OAAOkR,GAAQjN,EAAQhH,EAAQ+C,GAChC,CClBA,MAAMyT,GAAaC,KAiCN,MAAAC,GAAYF,GAAWE,UC7BpC,SAASC,GAAkB3W,EAAQ4W,EAAUC,GAC5C,MAAMC,EAAUf,WAAWe,SAAWD,EACtC,IAAIE,EAMJ,OALIlL,GAAWiL,GACdC,EAAa,GAAGD,EAAQtQ,UAAUsQ,EAAQ7Q,YAAYO,OAC5CsQ,IACVC,EAAa,GAAGD,EAAQE,OAASF,EAAQnQ,OAAOH,WAAWsQ,EAAQG,QAE7D,IAAIC,MAAM,gBAAgBH,kBACtBL,GAAU1W,qBACR0W,GAAUE,KAAaE,EACrC,CACOxV,eAAe6V,GAAYC,EAAWR,EAAUE,GACtD,MAAM9W,QAAeoX,EAErB,QADyBvL,GAAW+K,KAAiD,UAA9BA,EAAS5W,EAAQ8W,MAChDP,GAASvW,EAAQ4W,IACjCD,GAAkB3W,EAAQ4W,EAAUE,EAG7C,CCVA,MAAMO,GAAsBtB,WAAWuB,gBCchChW,eAAeiW,GAAqBvX,EAAQU,EAAWF,EAAa0O,EAAetD,GACzF,GAAIF,GAAY1L,GAAS,CACxB,MAAMyP,EAAmB,GACzB,UAAW,MAAMvO,KAAQlB,KAAU4L,GAAgB,CAClD,MAAMnK,QAAef,EAASQ,EAAMuO,EAAkBzP,GAClDO,EAASkB,IACZgO,EAAiBpO,KAAKI,EAEvB,CACD,OAAOgO,CACP,CACD,MAAMxO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,CAC3B,MAAMyB,QAAef,EAASsF,EAAO/E,EAASjB,GAC1CO,EAASkB,IACZ4N,EAAgB5N,EAEjB,CACD,OAAOR,CACP,CACD,MAAMsO,EAAY1D,GAAW5K,EAAQ8C,KACrC,UAAW,MAAOoD,EAAKnB,KAAUhG,EAAQ,CACxC,MAAMyB,QAAef,EAASsF,EAAOmB,EAAKlG,EAASjB,GAC/CO,EAASkB,KACR8N,EACHtO,EAAQ8C,IAAIoD,EAAK1F,GAEjBR,EAAQkG,GAAO1F,EAGjB,CACD,OAAOR,CACR,CCnCO,SAASuW,GAAgBxX,EAAQU,EAAWF,EAAa0O,GAC/D,MAAMjO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,CAC3B,MAAMyB,EAASf,EAASsF,EAAO/E,EAASjB,GACpCO,EAASkB,IACZ4N,EAAgB5N,EAEjB,CACD,OAAOR,CACP,CACD,MAAMsO,EAAY1D,GAAW5K,EAAQ8C,KACrC,IAAK,MAAOoD,EAAKnB,KAAUhG,EAAQ,CAClC,MAAMyB,EAASf,EAASsF,EAAOmB,EAAKlG,EAASjB,GACzCO,EAASkB,KACR8N,EACHtO,EAAQ8C,IAAIoD,EAAK1F,GAEjBR,EAAQkG,GAAO1F,EAGjB,CACD,OAAOR,CACR,CC5BY,MAACwW,GAAaxL,GAAajL,EAAiBQ,EACvDwP,GAAkBD,GAAuByG,GAAiBD,ICCpD,SAASG,GAAY1X,EAAQU,EAAWF,EAAa0O,GAC3D,MAAMjO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,EAEZ,IADAU,EAASsF,EAAO/E,EAASjB,IAEvCqP,EAAgBrJ,EAEjB,CACH,KAAQ,CACN,MAAMuJ,EAAY1D,GAAW5K,EAAQ8C,KACrC,IAAK,MAAOoD,EAAKnB,KAAUhG,EAAQ,EAEnB,IADAU,EAASsF,EAAOmB,EAAKlG,EAASjB,KAExCuP,EACHtO,EAAQ8C,IAAIoD,EAAKnB,GAEjB/E,EAAQkG,GAAOnB,EAGjB,CACD,CACD,OAAO/E,CACR,CCxBOK,eAAeqW,GAAiB3X,EAAQU,EAAWF,EAAa0O,EAAetD,GACrF,GAAIF,GAAY1L,GAAS,CACxB,MAAMyP,EAAmB,GACzB,UAAW,MAAMvO,KAAQlB,KAAU4L,IACqB,UAA7ClL,EAASQ,EAAMuO,EAAkBzP,IAC1CyP,EAAiBpO,KAAKH,GAGxB,OAAOuO,CACP,CACD,MAAMxO,EAAUiO,GAAiBH,GAAU/O,GAC3C,GAAIsC,EAAQtC,IAAWuL,GAAMvL,GAAS,CACrC,MAAMmP,EAAalO,EAAQI,MAAQJ,EAAQmO,IACrCC,EAAkBF,GAAcA,EAAWG,KAAKrO,GACtD,IAAK,MAAM+E,KAAShG,EAAQ,EAEZ,UADMU,EAASsF,EAAO/E,EAASjB,IAE7CqP,EAAgBrJ,EAEjB,CACH,KAAQ,CACN,MAAMuJ,EAAY1D,GAAW5K,EAAQ8C,KACrC,UAAW,MAAOoD,EAAKnB,KAAUhG,EAAQ,EAEzB,UADMU,EAASsF,EAAOmB,EAAKlG,EAASjB,KAE9CuP,EACHtO,EAAQ8C,IAAIoD,EAAKnB,GAEjB/E,EAAQkG,GAAOnB,EAGjB,CACD,CACD,OAAO/E,CACR,CCrCY,MAAC6H,GAASmD,GAAatH,EAAaC,EAAkBqM,GAAcC,GAAmBwG,GAAaC,ICtBhH,SAASC,GAAW5J,GACnB,MAAO,IAAIlB,IACF+K,IACP,IAAI7R,EAAQ6R,EAIZ,OAHA7J,EAASlB,GAAU5L,IAClB8E,EAAQ9E,EAAK8E,EAAM,IAEbA,CAAK,CAGf,CAcY,MAAC8R,GAAOF,GAAWnX,GAclBsX,GAAYH,GAAWvT,GCtCpC,SAASuT,GAAW5J,GACnB,MAAO,IAAIlB,IACHxL,MAAOuW,IACb,IAAI7R,EAAQ6R,EAIZ,aAHM7J,EAASlB,GAASxL,MAAOJ,IAC9B8E,QAAc9E,EAAK8E,EAAM,IAEnBA,CAAK,CAGf,CAeY,MAACgS,GAAYJ,GAAWrW,GAevB0W,GAAiBL,GAAWrT,GC7B7B,MAAC2T,GAASzN,GAAiB,MCRhC,MAAM0N,GACZzK,KAAO5K,EAAUQ,KACjB,SAAAR,GACC,CAWD,MAAA6K,CAAOC,GACNwK,cAAcxK,GACdb,KAAKW,KAAKI,OAAOF,EACjB,CACD,GAAAG,CAAIH,GACH,OAAOb,KAAKW,KAAKK,IAAIH,EACrB,CACD,GAAA/J,CAAI+J,GACH,OAAOb,KAAKW,KAAK7J,IAAI+J,EACrB,CAaD,GAAA7J,CAAIiK,EAAUC,GAEb,MAAML,EAAKyK,aAAY,KACtBrK,GAAU,GACRC,GAEH,OADAlB,KAAKW,KAAK3J,IAAI6J,EAAIP,IACXO,CACP,CAUD,KAAAQ,GACC,MAAMF,EAAcnB,KACpBmB,EAAYR,KAAKtL,SAASwL,IACzBM,EAAYP,OAAOC,EAAG,GAEvB,EAEU,MAAC0K,GAAYxV,EAAUqV,IChD5B,MAAMI,GACZC,cAAgB,CAAA,EAChB,WAAAvS,CAAYwS,EAAWC,GAClBnY,EAASmY,IACZzN,GAAO8B,KAAM2L,GACb3L,KAAK0L,UAAYA,EACjBF,GAAMI,OAAO5U,IAAI0U,EAAWC,IAE5BzN,GAAO8B,KAAM0L,EAEd,EC1BK,MAAMG,GACZ5Y,OACA,WAAAiG,CAAYjG,EAAS,IAEpB,GADA+M,KAAK/M,OAASA,EACC,OAAXA,GAAqC,iBAAXA,EAC7B,OAAOA,EAERoL,GAAWpL,GAAS6Y,IACnB7Y,EAAO6Y,GAAY,IAAID,GAAM5Y,EAAO6Y,GAAU,IAE/C9L,KAAK+L,KAAO,IAAIC,MAAM/Y,EAAQ,CAC7B6D,IAAG,CAACmV,EAAaH,KAChBI,QAAQC,IAAIF,EAAaH,EAAUG,EAAYH,IACxCG,EAAYH,IAEpB9U,IAAG,CAACiV,EAAaH,EAAU7S,KAC1BiT,QAAQC,IAAIF,EAAaH,EAAUG,EAAYH,IAC/CG,EAAYH,GAAY,IAAID,GAAM5S,IAC3B,IAGT,ECCK,MAAMmT,GACZC,YAAc,EACdC,MAAQ,GACRC,UAAY,EAeZ,GAAAzV,GACC,IAAIpC,EAASsL,KAAKsM,MAAME,QAOxB,OANIhZ,EAASkB,GACZsL,KAAKuM,aAEL7X,EAASsL,KAAKqM,YACdrM,KAAKqM,eAEC3X,CACP,CAkBD,IAAA+X,CAAK5L,GACJb,KAAKsM,MAAMhY,KAAKuM,GAChBb,KAAKuM,YACL,MAAMG,EAAW1M,KAAKqM,YAAc,EAC9BM,EAAc3M,KAAKqM,cAAgBrM,KAAKuM,UAC1CG,GAAYC,GACf3M,KAAK4M,OAEN,CACD,KAAAA,GACC5M,KAAKqM,YAAc,EACnBrM,KAAKsM,MAAMpZ,OAAS,EACpB8M,KAAKuM,UAAY,CACjB,EAeU,MAACM,GAAS9W,EAAUqW,ICnFzB,MAAMU,GACZ,WAAA5T,CAAY6T,EAAgB,IAC3B/M,KAAKgN,MAAQD,CACb,CAcD,OAAAE,CAAQ7S,GACP,OAAO4F,KAAKgN,MAAM5S,EAClB,CAcD,OAAA8S,CAAQ9S,EAAKnB,GACZ+G,KAAKgN,MAAM5S,GAAOnB,CAClB,CAeD,KAAAoI,GACCrB,KAAKgN,MAAQ,EACb,CAeD,UAAAG,CAAW/S,GACV4F,KAAKgN,MAAM5S,GAAO,IAClB,oGCpEK,SAAagT,EAAQC,GAC3B,OAAOD,EAASC,CACjB,UCMO,SAAelW,EAAQ8J,GAC7B,IACIhI,EADAqU,EAAQnW,EAYZ,MAVkB,IAAIhB,KACP,OAAVmX,GACHA,IAEGA,GAAS,IACZrU,EAAQgI,KAAY9K,GACpBmX,EAAQ,MAEFrU,EAGT,gDCrBO,SAAwBhG,EAAQ0F,GACtC,MAAM4U,EAAe,CAAA,EAIrB,OAHA7Z,EAAUT,GAAQ,CAACkB,EAAMiG,KACxBmT,EAAa5U,EAAWyB,IAAQjG,CAAI,IAE9BoZ,CACR,QCPO,SAAatM,EAAU9J,GAC7B,MAAO,IAAIhB,IACH8K,KAAY9K,EAAKkB,OAAO,EAAGF,GAEpC,WnBuBO,SAAgBlE,EAAQ4W,EAAUE,GACxC,OAAI7B,GAAYjV,IAAWiV,GAAY2B,GAC/BO,GAAYnX,EAAQ4W,EAAUE,KAEbjL,GAAW+K,KAA2C,IAA9BA,EAAS5W,EAAQ8W,MAC1CP,GAASvW,EAAQ4W,IACjCD,GAAkB3W,EAAQ4W,EAAUE,EAG7C,wCoBnCO,SAAgB5S,EAAQ8J,GAC9B,IACIhI,EADAqU,EAAQnW,EAaZ,MAXmB,IAAIhB,KACR,OAAVmX,GACHA,IAEGA,GAAS,EACZrU,EAAQgI,KAAY9K,GAEpBmX,EAAQ,KAEFrU,EAGT,YCVO,SAAiB4D,EAAY2Q,EAAUC,GAC7C,MAAMvZ,EAAUyO,GAAI9F,GAAa1I,GACzB2K,GAAW3K,GAAQA,EAAKoO,KAAKiL,GAAYrZ,IAEjD,OAAO,EAAiB+J,GAAOuP,EAAcvZ,GAAWA,CACzD,wCCXO,SAAsBwZ,EAAOC,GACnC,OAAc,IAAVD,IAGkB,IAAlBC,EACI,EAEAA,EAAgBD,EAAS,IAClC,c5DRO,SAAmBza,GACzB,IAAIyB,EAAS,GAUb,OATAzB,EAAOoF,QAAQwM,GAAe,KAAKzL,OACjCd,MAAM,KACNjD,SAAQ,CAAClB,EAAMJ,KAEdW,GADa,IAAVX,EACOI,EAAK8R,cAEL9R,EAAK,GAAG2R,cAAgB3R,EAAKkF,MAAM,GAAG4M,aAChD,IAEIvR,CACR,UnCsBO,SAAekZ,GACrB,OAAO7X,EAAU+J,GAAO,CAAC8N,GAC1B,UgGpCO,SAAe1W,EAAO2W,EAAO,GACnC,MAAMC,EAAU,GAChB,IAAI/Z,EAAQ,EAUZ,OATAmD,EAAM7B,SAAQ,CAAClB,EAAMiG,KACdA,EAAMyT,IACXC,EAAQxZ,KAAK,IACT8F,GACHrG,KAGF+Z,EAAQ/Z,GAAOO,KAAKH,EAAK,IAEnB2Z,CACR,gBxDuBO,SAAqB9I,EAAQ6I,GACnC,OAAO7I,EAAO+I,MAAM,IAAIrJ,OAAO,gBAAgBmJ,KAAS,KACzD,UyDnCO,SAAe5a,GACrB,GAAIA,EAAQ,CACX,GAAI+G,EAAS/G,GACZ,OAAO+I,GAAY/I,GACb,GAAIsC,EAAQtC,GAClB,OAAOD,EAAWC,GACRA,EAAOoO,MACjBpO,EAAOoO,QACGpO,EAAOC,SACjBD,EAAOC,OAAS,EAEjB,CACD,OAAOD,CACR,mDbgEO,WAENwN,GADWW,WAAWZ,GAAM,IACjBzM,IACVwX,GAAU3K,OAAO7M,EAAM,GAEzB,gB/ECO,WAEN0M,GADWW,WAAWZ,GAAM,IACjBzM,IACVuN,GAAOV,OAAO7M,EAAM,GAEtB,UqE3FO,SAAed,GACrB,OAAOqX,GAAoBrX,EAC5B,ewBHO,SAAoBA,GAC1B,OAAOA,EAAOoG,OACf,2BCCO,SAAiBpG,GACvB,GAAI+F,EAAc/F,GAAS,CAC1B,MAAM+a,EAAahW,EAAK/E,GAClBgb,EAAmBD,EAAW9a,OAC9Bgb,EAAe,CAAA,EACrB,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAkBE,IAAK,CAC1C,MAAMC,EAAUJ,EAAWG,GACrBha,EAAOlB,EAAOmb,GACD9E,GAASnV,KAE3B+Z,EAAaE,GAAWja,EAEzB,CACD,OAAO+Z,CACP,CACD,OAAOjb,EAAO8I,QAAQ5H,GACdmV,GAASnV,IAElB,gBClBO,SAAqBka,GAC3B,MAAMC,EAAgB,GAMtB,OALAjQ,GAAWgQ,GAAQ,CAACla,EAAMiG,KACrB5G,EAASW,IACZma,EAAcha,KAAK8F,EACnB,IAEKkU,CACR,6HCHO,SAAoBrb,EAAQU,EAAU4D,GAC5C,MAAMzD,EAAcb,EAAOC,OACrBqb,EAAQ,GACd,IAAK,IAAIxa,EAAQ,EAAEA,EAAQD,EAAaC,IACvCwa,EAAMxa,GAASJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAayD,GAEpE,OAAO0Q,QAAQuG,IAAID,EACpB,qBCPO,SAA0Btb,EAAQU,EAAU4D,GAClD,MAAMzD,EAAcb,EAAOC,OACrBqb,EAAQ,GACd,IAAK,IAAIxa,EAAQ,EAAEA,EAAQD,EAAaC,IACvCwa,EAAMxa,GAASJ,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAayD,GAEpE,OAAO0Q,QAAQwG,WAAWF,EAC3B,iDClBOha,eAAema,EAAWC,EAAcC,GAC9C,MAAMC,QAAcC,UAAQH,GAc5B,aAbMna,EAAeqa,GAAOta,MAAO2V,IAClC,MAAM6E,EAAaC,EAAKrK,KAAKgK,EAAczE,GAE3C,UADwB+E,OAAKF,IACfG,cAAe,CAC5B,MAAMC,EAAoBH,EAAKrK,KAAKiK,EAAmB1E,EAAK7R,QAAQsW,EAAc,WAC5ES,EAAAA,MAAMD,EAAmB,CAC9BE,WAAW,UAENX,EAAWK,EAAYI,EAChC,YAhBA5a,eAA0Boa,EAAcC,EAAmB1E,GAC1D,MAAM6E,EAAaC,EAAKrK,KAAKgK,EAAczE,GACrCoF,EAAkBN,EAAKrK,KAAKiK,EAAmB1E,SAC/CqF,EAAQA,SAACR,EAAYO,EAC5B,CAaSE,CAAWb,EAAcC,EAAmB1E,EAClD,KAEK,CACR,YCVO,SAAiBrN,EAAYlJ,GACnC,MAAM0a,EAAS,CAAA,EACf,IAAI3Z,EAQJ,OAPAhB,EAAUmJ,GAAa1I,IACtBO,EAASf,EAASQ,GACbka,EAAO3Z,KACX2Z,EAAO3Z,GAAU,GAElB2Z,EAAO3Z,IAAS,IAEV2Z,CACR,aCZO,SAAkBxR,EAAYR,GACpC,IAAItF,EAAQ,EAMZ,OALArD,EAAUmJ,GAAa1I,IAClBA,EAAKkI,IACRtF,GACA,IAEKA,CACR,oBCRO,SAAyB8F,EAAYR,GAC3C,IAAItF,EAAQ,EAMZ,OALArD,EAAUmJ,GAAa1I,IACjBA,EAAKkI,IACTtF,GACA,IAEKA,CACR,gBCrBO,SAAqB0Y,GAC3B,OAAIzG,WAAW0G,WACPA,WAEDC,EAAaA,cAACF,EAAWG,IACjC,gBACO,SAAqBH,GAC3B,OAAIzG,WAAW6G,UACPA,UAEDb,EAAKc,QAAQH,EAAAA,cAAcF,EAAWG,KAC9C,UCKO,SAAe3O,EAAU8O,EAAQ9O,EAAS/N,QAChD,MAAM8c,EAAU,GACVC,EAAU,IAAIC,KAEnB,GADAF,EAAQ1b,QAAQ4b,GACZF,EAAQ9c,SAAW6c,EAAO,CAC7B,MAAMrb,EAASuM,KAAY+O,GAE3B,OADAhd,EAAWgd,GACJtb,CACP,CACD,OAAOub,CAAO,EAEf,OAAOA,CACR,eCbO,SAAoBhP,EAAU8O,EAAQ9O,EAAS/N,QACrD,MAAM8c,EAAU,GACVC,EAAU,IAAIC,KAEnB,GADAF,EAAQG,WAAWD,GACfF,EAAQ9c,SAAW6c,EAAO,CAC7B,MAAMrb,EAASuM,KAAY+O,GAE3B,OADAhd,EAAWgd,GACJtb,CACP,CACD,OAAOub,CAAO,EAEf,OAAOA,CACR,aCRO,SAAkBhP,EAAUC,GAClC,SAASkP,KAAaja,GACjBia,EAAUvP,KAAON,IACpBe,GAAOV,OAAOwP,EAAUvP,IAEzBuP,EAAUvP,GAAKU,IAAM,KACpB6O,EAAUnP,YAAY9K,GACtBia,EAAUvP,GAAKN,EAAK,GAClBW,EACH,CASD,OARAkP,EAAUvP,GAAKN,GACf6P,EAAUnP,SAAWA,EAASsB,KAAK6N,GACnCA,EAAU/O,MAAQ,KACb+O,EAAUvP,KAAON,KACpBe,GAAOV,OAAOwP,EAAUvP,IACxBuP,EAAUvP,GAAKN,GACf,EAEK6P,CACR,WCzBO,SAAgBnd,GACtB,OAAOA,EAAS,CACjB,uCCHO,SAAgBA,EAAQgG,GAC9B,OAAOhG,EAASgG,CACjB,uBCCyB,CAAC/B,EAAOC,EAAS,EAAGC,EAAOF,EAAMhE,SAClD+D,EAAKC,EAAO,EAAGE,EAAOD,mJCHvB,SAAsBlE,GAC5B,OAAQ+G,EAAS/G,IAAWA,GAAYO,EAASP,IAAWod,OAAOnV,KAAKjI,IAAYod,OAAOC,MAAM,EAClG,+DCfO,YAAqBvQ,GAC3B,OAAId,GAAQc,EAAQ,IACZxL,kBAAkB4B,GACxB,OAAO6M,GAAMjD,GAASxL,MAAOqF,GACrBoJ,GAAM7M,GAAM5B,MAAOJ,GAClByF,EAAOzF,MAGnB,EAEQ,YAAYgC,GAClB,OAAO6M,GAAMjD,GAAUnG,GACfoJ,GAAM7M,GAAOhC,GACZyF,EAAOzF,MAGlB,CACA,6LCHO,SAAmB0I,EAAYgE,EAAIxE,EAAe,MACxD,MAAM3H,EAASmI,EAAW0T,WAAU,CAACpU,EAASpI,IACtCmI,GAAeC,EAASpI,EAAO8I,EAAYgE,EAAIxE,KAEvD,OAAoB,IAAZ3H,GAAyBA,CAClC,iCCLO,SAAkBmI,EAAYgE,EAAIxE,EAAe,MACvD,MAAM3H,EAASmI,EAAW2T,MAAK,CAACrU,EAASpI,IACjCmI,GAAeC,EAASpI,EAAO8I,EAAYgE,EAAIxE,KAEvD,OAAoB,IAAZ3H,GAAyBA,CAClC,UCPO,SAAewC,EAAOE,GAC5B,OAAO,EAASF,EAAMmC,MAAM,EAAGjC,GAAQF,EAAM,EAC9C,YCDO,SAAiBjE,EAAQwd,EAAQ,GACvC,IAAKxd,EACJ,OAED,IAAIiC,EAAcjC,EAClB,IAAK,IAAIkb,EAAI,EAAGA,EAAIsC,EAAOtC,IAC1BjZ,EAAcA,EAAYwb,QAAO,CAACC,EAAeC,IACzCD,EAAcE,OAAOpb,EAAYmb,KACtC,IAEJ,OAAO1b,CACR,yGC1BOX,eAA4BtB,EAAQqC,GAC1C,MAAMwb,EAAS,GACTnY,EAAa,GACnB,IAAIoY,EAAe,EACnB9d,EAAOoC,SAAQ,CAAClB,EAAMiG,KACrB0W,EAAOC,GAAgB5c,EACvBwE,EAAWoY,GAAgB5c,EAC3B4c,GAAc,IAEf,IAAK,IAAIhd,EAAQ,EAAGA,EAAQgd,EAAchd,UACnCuB,EAASwb,EAAO/c,GAAQ4E,EAAW5E,IAE1C,OAAOd,CACR,WCVO,SAAgBA,EAAQqC,GAC9B,MAAM0b,EAAShP,GAAU/O,GACnB2G,EAASoX,EAAO1c,MAAQ0c,EAAO3O,IACrC,GAAIzI,GAAUkF,GAAWlF,GAAS,CACjC,MAAMqX,EAAcrX,EAAO2I,KAAKyO,GAChC/d,EAAOoC,SAASlB,IACf,MAAMO,EAASY,EAASnB,EAAM6c,GAC9BC,EAAYvc,EAAO,GAEpB,MAAUoK,GAAWkS,EAAOha,KAC5B/D,EAAOoC,SAAQ,CAAClB,EAAMiG,KACrB,MAAM1F,EAASY,EAASnB,EAAMiG,EAAK4W,GACnCA,EAAOha,IAAIoD,EAAK1F,EAAO,IAGxBzB,EAAOoC,SAAQ,CAAClB,EAAMiG,KACrB,MAAM1F,EAASY,EAASnB,EAAMiG,EAAK4W,GACnCA,EAAO5W,GAAO1F,CAAM,IAGtB,OAAOsc,CACR,gOjGVO,SAAoB/d,GAC1B,GAAIO,EAASP,GACZ,OAAO6Q,GAAc7Q,EAEvB,qBkGNO,SAA0BA,GAChC,GAAIA,EACH,OAAOA,EAAOgS,UAAUhS,EAAOie,YAAY,KAAO,EAEpD,gBCJO,SAAqBje,GAC3B,GAAIA,EACH,OAAOA,EAAOgS,UAAUhS,EAAOie,YAAY,KAAO,EAEpD,eCAO,SAAoBrU,EAAYR,EAAe,MACrD,OAAOa,GAAwBL,EAAYR,GAAc,EAC1D,cCDO,SAAmBQ,EAAYR,GACrC,OAAOO,GAAyBC,EAAYR,GAAc,GAAO,EAClE,yBCJO,SAA8BpJ,EAAQ+C,GAC5C,IAAImb,EAAc,EAUlB,OATA1Z,EAAWxE,GAAQ,CAACkB,EAAMJ,KACzBod,EAAcpd,EACViC,GAAU7B,IACbgd,EAAcpd,EAAQ,GACf,MAKFod,CACR,6ECVO,SAAiBtU,EAAYlJ,GACnC,MAAM4Z,EAAe,CAAA,EAQrB,OAPA7Z,EAAUmJ,GAAa1I,IACtB,MAAMD,EAAUP,EAASQ,GACpBoZ,EAAarZ,KACjBqZ,EAAarZ,GAAW,IAEzBqZ,EAAarZ,GAASI,KAAKH,EAAK,IAE1BoZ,CACR,QCNO,SAASvM,EAAI/N,EAAQme,EAAQjc,GACnC,GAAIgR,GAAQlT,IAAWkT,GAAQiL,GAC9B,OAAO,EAER,GAAI/T,GAASpK,GACZ,OAAIoK,GAAS+T,GACLne,EAAOoe,SAASD,EAAQjc,GAE5BkP,GAAQ+M,GACJA,EAAOxT,KAAK3K,GAEhB6L,GAAWsS,GACP9d,QAAQ8d,EAAOne,IAEhB+P,GAAMoO,GAASjd,GACdb,QAAQ0N,EAAI/N,EAAQkB,MAG7B,GAAIoB,EAAQtC,GAAS,CACpB,GAAIoK,GAAS+T,GACZ,OAAOne,EAAOoe,SAASD,EAAQjc,GAEhC,GAAIkP,GAAQ+M,GACX,OAAOpO,GAAM/P,GAASkB,GACdA,EAAKyJ,KAAKwT,KAGnB,GAAI7b,EAAQ6b,GACX,OAAOpO,GAAMoO,GAASjd,GACdb,QAAQ0N,EAAI/N,EAAQkB,KAG7B,CACD,OAAO,CACR,ezKHO,SAAoBlB,KAAW0F,GACrC,GAAK1F,EAGL,OAAOK,QAAQqF,EAAW6X,MAAMrc,IAC/B,MAAMyE,EAAYR,EAAOjE,GACzB,GAAyB,IAArByE,EAAU1F,OACb,OAAOuF,EAAOxF,EAAQkB,GAChB,CACN,MAAM0E,EAAWD,EAAUE,MACrBC,EAAoBjC,EAAI8B,EAAW3F,GACzC,QAAI8F,GACIN,EAAOM,EAAmBF,EAGlC,KAEH,+F0KtDO,SAAkBoI,KAAa9K,GACrC,GAAI2I,GAAWmC,GACd,OAAOA,KAAY9K,EAErB,gBCH2B,CAACmb,EAAYxF,EAAUyF,KAC7CzF,IAAatY,EAAS8d,EAAWxF,MACpCwF,EAAWxF,GAAYyF,GAEjBD,aCDD,SAAiBre,EAAQ+C,EAAQwb,EAAUrb,GACjD,GAAI3C,EAASP,GAAS,CACrB,GAAI6L,GAAW9I,GACd,OAAIwb,EACI/P,GAAMzL,EAAQwb,EAAUrb,GAEzBH,KAAUG,GACX,GAAI6C,EAAchD,GAExB,OADAA,EAAOwb,GAAYve,EACZ+C,CAER,CACF,YCTOzB,eAAuBtB,EAAQwe,GACrC,MAAM3d,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQ,EAAGA,EAAQD,EAAaC,IAAS,CACjD,MAAM6F,EAAS3G,EAAOc,SAChB6F,EAAO6X,EAAe1d,EAAOd,EAAQa,EAC3C,CACD,OAAOb,CACR,WCLsB,CAAC4J,EAAY5D,IAC3B4G,GAAKhD,GAAa1I,IACxBA,EAAK8E,EAAM,gBCXN,SAAmBhG,GACzB,OAAOA,EAAS,CACjB,YCAO,SAAiB4J,EAAYR,EAAe,MAClD,MAAMkR,EAAe,CAAA,EAIrB,OAHA7Z,EAAUmJ,GAAa1I,IACtBoZ,EAAapZ,EAAKkI,IAAiBlI,CAAI,IAEjCoZ,CACR,YCVO,SAAiBrW,GACvB,OAAOA,EAAMmC,MAAM,EAAGnC,EAAMhE,OAAS,EACtC,kBhGoDO,SAAuB8R,EAAQjR,EAAQ,GAC7C,OAAOiR,EAAO3L,MAAM,GAAY,EAATtF,EACxB,kBAtDO,SAAuBiR,EAAQjR,EAAO2d,GAC5C,OAAO1M,EAAO3L,MAAM,EAAGtF,GAAS2d,EAAO1M,EAAO3L,MAAMtF,EAAOiR,EAAO9R,OACnE,iBiGAO,SAAsBgE,KAAUya,GACtC,OAAO1d,EAAgBiD,GAAQ/C,IAI9B,GAHqBsD,EAAWka,GAASC,GACjCA,EAAUP,SAASld,KAG1B,OAAOA,CACP,GAEH,arDsDO,SAAkB8M,EAAUC,GAClC,OAAOqK,GAAUvU,IAAIiK,EAAUC,EAChC,0BsDlEO,SAAgBjO,EAAQ+C,EAAS,IACvC,GAAK/C,EAML,OAHAoL,GAAWpL,GAAQ,CAACkB,EAAMiG,KACzBpE,EAAO7B,GAAQiG,CAAG,IAEZpE,CACR,WCRO,SAAgB6G,EAAYiP,EAAU7S,GAC5C,OAAOsB,EAASsC,GAAY,CAAC1I,EAAMJ,IAC3BI,EAAK2X,GAAU7S,EAAOlF,IAE/B,gBCGO,SAAqB8I,EAAYiP,EAAU7S,GACjD,OAAOuB,EAAcqC,GAAYtI,MAAOJ,EAAMJ,IACtCI,EAAK2X,GAAU7S,EAAOlF,IAE/B,gBCZO,SAAqBd,GAC3B,QAAQO,EAASP,IAFM,uBAEKA,EAAOkG,UACpC,sECMO,SAAqBlG,EAAQ4e,GACnC,GAAI1L,GAAQlT,IAAW6L,GAAW7L,GACjC,OAAO,EAER,GAAIsC,EAAQtC,IAAWuT,GAAavT,GACnC,OAAO,EAER,MAAMyE,EAAezE,EAAOC,OAC5B,IAAKiT,GAAQzO,KAAkB0F,GAAS1F,IAAiBA,EAAe,EACvE,OAAO,EAER,GAAIma,EAAY,CACf,MAAMC,EAAU9Z,EAAK/E,GACrB,QAAI6e,GACI9O,GAAM8O,GAAS,CAAC7Y,EAAOlF,IACtBA,GAAS,GAAKqJ,GAASrJ,IAIhC,CACD,OAAO,CACR,0ICxBO,SAAiBge,EAAaC,GACpC,SAAKD,IAAgBC,IAGdD,aAAuBC,CAC/B,gB5FXO,SAAqB/e,GAC3B,GAAIO,EAASP,GAAS,CACrB,MAAMuG,EAAkBvG,GAAQiG,aAAaO,KAC7C,OAAOsN,GAAiBnJ,KAAKpE,EAC7B,CACD,OAAO,CACR,4H6FFO,SAAiBvG,GACvB,OAAIoK,GAASpK,IAAWsC,EAAQtC,IACvBI,EAAUJ,GACR+F,EAAc/F,IAChB2R,GAAW3R,IAEZO,EAASP,EAClB,yFCVO,SAAiBA,EAAQsW,GAAe,GAC9C,OAA2B,IAApBjW,QAAQL,IAAqBsW,CACrC,2NCFO,SAAoBtW,GAC1B,OAAOO,EAASP,IAA8C,mBAA5BA,EAAOgf,OAAOC,SACjD,4DCDO,SAAsBjf,EAAQkf,GACpC,OAAIlf,EAAOC,SAAWif,EAAajf,QAC3BuE,EAAWxE,GAAQ,CAACkB,EAAMJ,IACzBkG,EAAQkY,EAAape,GAAQI,IAIvC,kBtHN6B,CAAClB,EAAQ+C,KACrC,GAAI/C,IAAW+C,EACd,OAAO,EAER,MAAMgY,EAAahW,EAAK/E,GAClBmf,EAAapa,EAAKhC,GACxB,OAAIgY,EAAW9a,SAAWkf,EAAWlf,QAC7BuE,EAAWuW,GAAa5T,GACvBnH,EAAOmH,KAASpE,EAAOoE,IAGpB,4CrFDN,SAAoBnH,GAC1B,OAAQsC,EAAQtC,EACjB,gBoCDO,SAAqBA,GAC3B,OAAQmK,GAASnK,EAClB,gBCDO,SAAqBA,GAC3B,OAAQoK,GAASpK,EAClB,6DuKjBO,SAAuBA,EAAQ+C,GACrC,OAAO/C,IAAW+C,CACnB,oBCAO,SAAyB/C,EAAQ8B,EAAOC,GAC9C,OAAO/B,EAAS8B,GAAS9B,EAAS+B,CACnC,uBCFO,SAA4B/B,EAAQ8B,EAAOC,GACjD,OAAO/B,EAAS8B,GAAS9B,EAAS+B,CACnC,aCEO,SAAkBqd,EAAcC,GACtC,SAAKD,GAAiBC,GAAgBA,EAAYte,OAG3Cqe,aAAwBC,CAChC,iChIXO,SAAoBrf,GAC1B,OAAwB,IAAjB0B,GAAK1B,EACb,gBiIHO,SAAqBA,GAC3B,MAAMsf,SAActZ,MACpB,OAAOhG,SAAqD,WAATsf,GAA8B,aAATA,CACzE,2DCMO,SAAmBC,EAAWC,GACpC,OAAItM,GAAQqM,KAAcrM,GAAQsM,KAG9BD,EAAUxe,KACNye,aAAqBD,EAEzBC,EAAUze,KACNwe,aAAqBC,EAEtBA,EAAUvZ,cAAgBsZ,EAAUtZ,YAC5C,0CChCO,SAAoBjG,EAAQyf,GAClC,MAAMzQ,EAAaF,GAAQ9O,GACrB0f,EAAY5Q,GAAQ2Q,GAC1B,OAAIzQ,IAAe0Q,GACd1Q,EAAWxI,OAASkZ,EAAUlZ,IAKpC,mDCKO,SAAgBxG,GACtB,OAAkB,IAAXA,CACR,qNCJO,SAAgBA,GACtB,OAAkB,IAAXA,CACR,cpFAO,SAAmBA,EAAQ2f,GACjC,GAAI3f,EACH,OAAOwW,GAAWoJ,MAAM5f,EAAQ2f,EAElC,cpCJO,SAAmB3f,GACzB,OAAOA,EAAOoF,QAAQ,YAAa,OACjCA,QAAQwM,GAAe,KACvBzL,OACA6M,cACA5N,QAAQyM,GAAO,IAClB,qBvEPO,SAAiB5N,GACvB,OAAOmD,KAAiBnD,EACzB,SgMFO,SAAcA,EAAO4b,GAC3B,MAAMhf,EAAcoD,EAAMhE,OAC1B,OAAO,EAAcgE,EAAMmC,MAAMvF,EAAcgf,EAAWhf,GAAeoD,EAAMpD,EAAc,EAC9F,ctHHO,SAAmBb,GACzB,OAAOA,EACLoF,QAAQ,YAAa,OACrBA,QAAQwM,GAAe,KACvBzL,OACA6M,aACH,6FuHCO,SAAuBhT,EAAQU,EAAUO,EAAU,GAAIqD,GAC7D,IAAIwb,EAAY,EAChB,MAAMjf,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQD,EAAc,EAAEC,GAAS,EAAEA,IAC3CG,EAAQ6e,GAAapf,EAASV,EAAOc,GAAQA,EAAOd,EAAQa,EAAayD,GACzEwb,IAED,OAAO7e,CACR,aCRO,SAAkBjB,EAAQU,EAAUO,EAAU,GAAIqD,GACxD,MAAMzD,EAAcb,EAAOC,OAC3B,IAAK,IAAIa,EAAQ,EAAEA,EAAQD,EAAYC,IAAS,CAC/C,MAAMI,EAAOlB,EAAOc,GAEpB,IAAiB,IADAJ,EAASQ,EAAMJ,EAAOG,EAASjB,EAAQa,EAAayD,GAEpE,MAEDrD,EAAQH,GAASI,CACjB,CACD,OAAOD,CACR,UCdO,SAAS8e,EAAMhd,KAAWK,GAWhC,OAVAwJ,GAAKxJ,GAAU4c,IACdpT,GAAKoT,GAAe,CAACC,EAAYC,KAChC,GAAInd,EAAOmd,KACNna,EAAcka,IAAe3d,EAAQ2d,IAAeA,EAAW7d,SAClE,OAAO2d,EAAMhd,EAAOmd,GAAYD,GAGlCld,EAAOmd,GAAaD,CAAU,GAC7B,IAEIld,CACR,U3EMO,SAAe0V,EAAWC,GAChC,OAAInY,EAASmY,GACL5V,EAAUyV,GAAO,CAACE,EAAWC,IAE9B7U,EAAI4U,EAAWF,GAAMI,OAC7B,a4E3BO,SAAkB3Y,EAAQgG,GAChC,OAAOhG,EAASgG,CACjB,WCHO,SAAgBgI,GACtB,MAAO,IAAI9K,KACF8K,KAAY9K,EAEtB,gDCJO,SAAgBpC,EAAQ,GAC9B,MAAO,IAAIoC,IACHA,EAAKpC,EAEd,8DCMO,SAAcd,EAAQmgB,GAC5B,GAAKngB,EAAL,CAGA,GAAIsC,EAAQ6d,GAAY,CACvB,MAAMC,EAAiB7O,GAAa4O,GACpC,OAAOlP,GAAajR,GAAQ,CAACkB,EAAMiG,KAC1BiZ,EAAezV,KAAKxD,IAE7B,CACD,GAAIiK,GAAQ+O,GACX,OAAOlP,GAAajR,GAAQ,CAACkB,EAAMiG,KAC1BgZ,EAAUxV,KAAKxD,KAGzB,GAAIiD,GAAS+V,GACZ,OAAOlP,GAAajR,GAAQ,CAACkB,EAAMiG,IAC3BA,IAAQgZ,IAGjB,GAAIhW,GAASgW,GAAY,CACxB,MAAME,EAAiBF,EAAUja,WACjC,OAAO+K,GAAajR,GAAQ,CAACkB,EAAMiG,IAC3BA,IAAQkZ,GAEhB,CACD,OAAIxU,GAAWsU,GACPlP,GAAajR,GAAQ,CAACkB,EAAMiG,KAC1BgZ,EAAUjf,EAAMiG,UAF1B,CAvBC,CA4BF,SChCqB6G,IACpB,IAAIhI,EAOJ,MANiB,IAAI9C,KACf3C,EAASyF,KACbA,EAAQgI,KAAY9K,IAEd8C,EAEO,yBChBT,SAAcsa,GACpB,MAAO,IAAIpd,IACHwM,GAAI4Q,GAAYpf,GACfA,KAAQgC,IAGlB,cCNO,SAAmBqd,GACzB,OAAQ1I,GACA9H,GAAMwQ,GAAaC,GAClBA,EAAU3I,IAGpB,SCNO,SAAcrL,EAAWC,GAC/B,MAAO,CAACD,EAAWC,EACpB,cCMO,SAAmBxI,EAAOuc,GAChC,MAAMC,EAAW,GACjB,MAAO,CACNzf,EAAgBiD,GAAO,CAAC/C,EAAMJ,KAC7B,GAAI0f,EAAUtf,EAAMJ,GACnB,OAAOI,EAERuf,EAASpf,KAAKH,EAAK,IAEpBuf,EAEF,SCjBoB,CAACzgB,EAAQ0gB,EAAW3d,EAAS,CAAA,KAChD,GAAK/C,EAML,OAHAS,EAAUigB,GAAYxf,IACrB6B,EAAO7B,GAAQlB,EAAOkB,EAAK,IAErB6B,CAAM,UCNP,SAAe6G,EAAYW,GACjC,OAAOjD,EAASsC,GAAa1I,GACrBoJ,GAAYpJ,EAAMqJ,IAE3B,6BCFO,SAAiBlI,GACvB,OAAO,IAAI2S,QAAQ3S,EACpB,kBCG6B,CAACrC,EAAQ2gB,EAAUjb,EAAaX,EAAK/E,KAC1DwE,EAAWkB,GAAamT,GACvB7R,EAAQhH,EAAO6Y,GAAW8H,EAAS9H,oBvJVrC,SAAqBxR,EAAKU,EAAM,GACtC,OAAOF,MAAYR,EAAMU,GAAOA,CACjC,yBhFcO,SAAejG,EAAOC,EAAKC,EAAO,EAAGC,EAAc,IACzD,OAAIL,EAAWI,GACPC,EAEJH,EAAQC,EACJF,EAAQC,EAAOC,EAAKC,EAAMC,GAE1BE,EAAUL,EAAOC,EAAKC,EAAMC,EAErC,sDwOzBO,SAAe+L,EAAU6Q,GAC/B,MAAO,IAAI3b,IACH8K,KAAY6Q,EAAQnP,KAAKxO,GACxBgC,EAAKhC,KAGf,oCCNO,SAAmBlB,EAAQgG,GACjC,OAAOhG,EAASgG,CACjB,WCFO,SAAgB/B,EAAO2c,GAC7B,IAAI/f,EAAcoD,EAAMhE,OACxB,IAAK,IAAIa,EAAQ,EAAGA,EAAQD,EAAaC,IAAS,CACjD,MAAMI,EAAO+C,EAAMnD,GACf8f,EAAYxC,SAASld,KACxB+C,EAAMG,OAAOtD,EAAO,GACpBA,IACAD,IAED,CACD,OAAOoD,CACR,aAcO,SAAkBjE,EAAQU,GAChC,IAAIG,EAAcb,EAAOC,OACzB,IAAK,IAAIa,EAAQ,EAAGA,EAAQD,EAAaC,IAAS,CAE7CJ,EADSV,EAAOc,GACDA,KAClBd,EAAOoE,OAAOtD,EAAO,GACrBA,IACAD,IAED,CACD,OAAOb,CACR,gBCrCO,SAAqB+R,EAAQ8O,EAAO7a,GAC1C,OAAO+L,EAAO3M,QAAQ,IAAIqM,OAAO,MAAMoP,EAAMnP,KAAK,UAAW,MAAO1L,EACrE,SCJO,SAAc/B,GACpB,OAAOA,EAAMmC,MAAM,EAAGnC,EAAMhE,OAC7B,0CCDO,SAAeD,EAAQkE,GAC7B,OAAOlE,EAAOA,EAAOC,OAAS,EAAIiE,EACnC,gB3IiBO,SAAqB6N,EAAQjR,EAAQ,GAC3C,OAAOiR,EAAOA,EAAO9R,OAASa,EAC/B,W4IdO,SAAgBd,EAAQkE,GAC9B,IAAKlE,EACJ,OAAO,EAER,MAAMa,EAAcb,EAAOC,OAC3B,GAAIY,IAAgBqD,GAAUA,EAASrD,EACtC,OAAOyH,GAAQtI,GAEhB,GAAe,IAAXkE,EACH,MAAO,CAAClE,EAAO8H,GAAUjH,EAAc,EAAG,KAE3C,MAAMigB,EAAc,GACdC,EAAO,CAAA,EACb,IACIjgB,EADAgD,EAAQ,EAEZ,KAAOA,EAAQI,GACdpD,EAAQgH,GAAU9H,EAAOC,OAAS,EAAG,GAChC8gB,EAAKjgB,KACTggB,EAAYzf,KAAKrB,EAAOc,IACxBigB,EAAKjgB,IAAS,EACdgD,KAGF,OAAOgd,CACR,a3IWO,SAAkB/O,GACxB,OAAOS,GAAaF,GAAaP,GAClC,W4ItDO,SAAgB/R,EAAQmH,EAAKnB,GAcnC,OAbImB,GAAOpB,EAAc/F,IAEdmK,GAAShD,IAAQ7E,EAAQtC,GADnCA,EAAOmH,GAAOnB,EAGJhG,EAAO+D,IACjB/D,EAAO+D,IAAIoD,EAAKnB,GACNhG,EAAOqB,KACjBrB,EAAOqB,KAAK2E,GACFhG,EAAOoP,IACjBpP,EAAOoP,IAAIpJ,GAEXhG,EAAOmH,GAAOnB,EAERhG,CACR,aCfO,SAAkBA,EAAQgG,EAAOmB,GAUvC,OATIgD,GAAShD,IAAQ7E,EAAQtC,GAC5BA,EAAOmH,GAAOnB,EACJhG,EAAOqB,KACjBrB,EAAOqB,KAAK2E,GACFhG,EAAOoP,IACjBpP,EAAOoP,IAAIpJ,GAEXhG,EAAOmH,GAAOnB,EAERhG,CACR,0BjNDO,SAAkBiE,GACxB,OAAOuE,MAAiBvE,EACzB,cgEDO,SAAmBjE,GACzB,OAAOA,EAAOoF,QAAQ,YAAa,OACjCA,QAAQwM,GAAe,KACvBzL,OACA6M,cACA5N,QAAQyM,GAAO,IAClB,iC3DaO,SAAsCjI,EAAYR,EAAe,KAAMI,GAC7E,OAAOI,EAAWC,MAAK,CAACP,EAAUC,IAC1BO,GAA0BR,EAAUC,EAAMH,EAAcI,IAEjE,wCKZO,SAA6CI,EAAYR,EAAe,KAAMI,GACpF,OAAOI,EAAWC,MAAK,CAACP,EAAUC,IAC1BiB,GAAiClB,EAAUC,EAAMH,EAAcI,IAExE,0JwMjBO,SAA6BwX,GACnC,OAAOA,EAAWnX,KAAKrC,EACxB,wBCFO,SAA6BwZ,GACnC,OAAOA,EAAWnX,KAAKlC,GACxB,kHCHyB,IACjB,evLCiB,IACjB2F,gBwLFkB,KAClB,iBCDkB,IAClB,c1LAgB,IAChBD,8B2LFD,SAAqBrN,GAC3B,OAAOA,EAAOyd,QAAO,CAACwD,EAAGC,IACjBD,EAAIC,GACT,EACJ,gCCJO,SAAgBlhB,GACtB,OAAOA,EAAOyd,QAAO,CAACwD,EAAGC,IACjBD,EAAIC,GACT,EACJ,SCHO,SAAclhB,EAAQmhB,EAAW,GACvC,OAAOnhB,EAAOoG,MAAM,EAAG+a,EACxB,cCFO,SAAmBnhB,EAAQohB,EAAa,GAC9C,MAAMvgB,EAAcb,EAAOC,OAC3B,OAAOD,EAAOoG,MAAMvF,EAAcugB,EAAYvgB,EAC/C,aCCO,SAAkBmN,EAAUC,GAClC,SAASoT,KAAane,GACjBme,EAAUzT,GACbyT,EAAUC,eAAiBjU,IAG5BgU,EAAUrT,YAAY9K,GACtBme,EAAUzT,GAAKU,IAAM,KAChB+S,EAAUC,gBACbD,EAAUrT,YAAY9K,GAEvBme,EAAUzT,GAAKN,EAAK,GAClBW,GACH,CAOD,OANAoT,EAAUzT,GAAKN,GACf+T,EAAUrT,SAAWA,EAASsB,KAAK+R,GACnCA,EAAUjT,MAAQ,KACjBC,GAAOV,OAAO0T,EAAUzT,IACxByT,EAAUzT,GAAKN,EAAK,EAEd+T,CACR,iDClBO/f,eAA0B4C,EAAQxD,GACxC,IAAK,IAAII,EAAQ,EAAGA,EAAQoD,EAAQpD,UAC7BJ,EAASwD,EAEjB,a7LkBO,SAAkBA,EAAQxD,EAAUO,EAAU,IACpD,IAAK,IAAIH,EAAQ,EAAGA,EAAQoD,EAAQpD,IACnCG,EAAQH,GAASJ,EAASwD,GAE3B,OAAOjD,CACR,kB6LHOK,eAA6B4C,EAAQxD,EAAUO,EAAU,IAC/D,IAAK,IAAIH,EAAQ,EAAGA,EAAQoD,EAAQpD,IACnCG,EAAQH,SAAeJ,EAASwD,GAEjC,OAAOjD,CACR,mCChCO,SAAgB+E,EAAOub,GAAK,EAAMC,GAAM,GAC9C,OAAQxa,EAAQua,EAAIvb,GAAUwb,EAAMD,CACrC,axJLO,SAAkBxP,GACxB,OAAOA,EAAO+I,MAAMrI,KAAkB,EACvC,ayJuBO,SAAkBV,EAAQ0P,GAChC,MAAMC,EAAe3P,EAAO9R,OAC5B,OAAQyhB,EAAeD,EA1CH,EAAC1P,EAAQ0P,EAAWC,KACxC,MAAMC,EAAW5P,EAAO1M,MAAM,IACxBuc,EAAiBD,EAAS1hB,OAChC,IAAIiB,EACAJ,EAAQ4gB,EAAeD,EAC3B,KAAO3gB,EAAQ8gB,GAAkB9gB,GAAS,IACzCI,EAAOygB,EAAS7gB,GACH,MAATI,GAFwCJ,KAM7C,OAAOiR,EAAO3L,MAAM,EAAGtF,GAAOqF,MAAM,EA+BA0b,CAAa9P,EAAQ0P,EAAWC,GAAgB3P,CACrF,kBAeO,SAAuBA,EAAQ0P,GACrC,MAAMC,EAAe3P,EAAO9R,OAC5B,OAAQyhB,EAAeD,EA/CL,EAAC1P,EAAQ0P,EAAWC,KACtC,MAAMC,EAAW5P,EAAO1M,MAAM,IACxBuc,EAAiBD,EAAS1hB,OAChC,IAAIiB,EACAJ,EAAQ2gB,EACZ,KAAO3gB,EAAQ8gB,GAAkB9gB,EAAQ,IACxCI,EAAOygB,EAAS7gB,GACH,MAATI,GAFuCJ,KAM5C,OAAOiR,EAAOC,UAAUlR,EAAO4gB,GAAcvb,MAAM,EAoCf2b,CAAW/P,EAAQ0P,EAAWC,GAAgB3P,CACnF,qBC5BO,SAAe/R,GACrB,OAAOA,EAAO,GAAG0P,KAAI,CAACxO,EAAMJ,IACpBd,EAAO0P,KAAKqS,GACXA,EAASjhB,MAGnB,gBlKH4Bsa,IAC3B,MAAM4G,EAAe,GACfnE,EAAS,GAKf,OAJAzS,GAAWgQ,GAAQ,CAACla,EAAMiG,KACzB6a,EAAa3gB,KAAK8F,GAClB0W,EAAOxc,KAAKH,EAAK,IAEX,CAAC8gB,EAAcnE,EAAO,UmK5BvB,YAAkBa,GACxB,OAAO9V,GAAOnG,EAAYic,GAC3B,4CCKO,SAAyB1e,EAAQU,GACvC,MAAM+D,EAAezE,EAAOC,OAC5B,IAAK,IAAIa,EAAQ,EAAEA,EAAQ2D,EAAa3D,IACvC,IAAuC,IAAnCJ,EAASV,EAAOc,GAAQA,GAC3B,OAAO,EAGT,OAAO,CACR,mBCRO,SAAwBd,EAAQU,GACtC,MAAM+D,EAAezE,EAAOC,OAC5B,IAAK,IAAIa,EAAQ,EAAEA,EAAQ2D,EAAa3D,IACvC,IAAuC,IAAnCJ,EAASV,EAAOc,GAAQA,GAC3B,OAAO,EAGT,OAAO,CACR,cjKfO,SAAmBd,GACzB,OAAOA,EACLoF,QAAQ,YAAa,OACrBA,QAAQwM,GAAe,KACvBzL,OACA0M,aACH,kCK4CO,SAAuBd,GAC7B,OAAOA,EAAO3M,QAAQuN,IAAWmI,GACzBhI,GAAWgI,IAEpB,gEAcO,SAA2B/I,GACjC,OAAOA,EAAO3M,QAAQuN,IAAWmI,GACzB/H,GAAe+H,IAExB,mB6CWO,SAAwBhB,GAC9B,OAAO,IAAID,GAAeC,EAC3B,oBgH9EO,SAAyB9Z,EAAQU,EAAUO,EAAU,GAAIqD,GAC/D,IAAIxD,EAAQ,EACZ,KAAOA,EAAQd,EAAOC,QAAQ,CAC7B,MAAMwB,EAASR,EAAQI,KAAKX,EAASV,EAAOc,GAAQA,EAAOd,EAAQA,EAAOC,OAAQqE,IAClFxD,IACIP,EAASkB,IACZR,EAAQI,KAAKI,EAEd,CACD,OAAOzB,CACR,mBCXO,SAAwBA,EAAQU,EAAU4D,GAChD,IAAIxD,EAAQ,EACZ,KAAOA,EAAQd,EAAOC,QACrBS,EAASV,EAAOc,GAAQA,EAAOd,EAAQA,EAAOC,OAAQqE,GACtDxD,IAED,OAAOd,CACR,kBCJO,SAAuBA,EAAQU,EAAUO,EAAU,GAAIqD,GAC7D,IAAIxD,EAAQ,EACZ,KAAOA,EAAQd,EAAOC,QACrBgB,EAAQI,KAAKX,EAASV,EAAOc,GAAQA,EAAOd,EAAQA,EAAOC,OAAQqE,IACnExD,IAED,OAAOd,CACR,YChBO,SAAiB+C,EAAQK,GAC/B,IAAKA,EACJ,OAAOL,EAER,MAAMkf,EAAanf,EAAUof,IAAK9e,GAClC,OAAOL,EAAO+F,QAAQ5H,IACb+gB,EAAWlU,IAAI7M,IAEzB,UjKOO,SAAe6Q,GACrB,OAAOA,EAAO+I,MAAMpI,KAAe,EACpC,SkKhBO,SAAc1M,EAAOmc,GAC3B,MAAO,IAAItK,IACHsK,EAAQnc,KAAU6R,EAE3B,QCHO,YAAgBzU,GACtB,MAAMgf,EAAStf,EAAUQ,KACnB+e,EAAQ,GAEd,OAAsB,IADAjf,EAAQnD,OAEtBkD,EAAWC,EAAQ,GAAIA,EAAQ,KAEvC3C,EAAU2C,GAAS,CAACI,EAAcC,KACjChD,EAAU+C,GAAc,CAACE,EAAOC,KAC/B,IAAIC,EAAYwe,EAAOve,IAAIH,GAC3B,GAAKE,EAOE,IAAIA,EAAUH,cAAgBA,EACpC,OAEAG,EAAUE,OACV,MAVAF,EAAY,CACXE,MAAO,EACPL,cACAC,SAED0e,EAAOre,IAAIL,EAAOE,EAKlB,GACA,IAEHxB,EAAQggB,GAASlhB,IACG,IAAfA,EAAK4C,OACRue,EAAMhhB,KAAKH,EAAKwC,MAChB,IAEK2e,EACR,QTlCO,YAAgB3D,GACtB,OAAOA,EAAO,GAAGhP,KAAI,CAACxO,EAAMJ,IACpB4d,EAAOhP,KAAKzL,GACXA,EAAMnD,MAGhB,clKHyB,CAAC4E,EAAYmY,KACrC,MAAMyE,EAAc,CAAA,EAIpB,OAHA7hB,EAAUiF,GAAY,CAACxE,EAAMiG,KAC5Bmb,EAAYphB,GAAQ2c,EAAO1W,EAAI,IAEzBmb,CAAW"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../source/arrays/clear.js","../source/types/isUndefined.js","../source/utilities/hasLength.js","../source/types/isNull.js","../source/types/hasValue.js","../source/utilities/returnValue.js","../source/arrays/each.js","../source/arrays/compactMap.js","../source/arrays/eachAsync.js","../source/arrays/compactMapAsync.js","../source/numbers/isNegative.js","../source/arrays/range.js","../source/utilities/forEach.js","../source/types/isArray.js","../source/arrays/ensure.js","../source/arrays/flattenDeep.js","../source/classes/construct.js","../source/arrays/difference.js","../source/arrays/drop.js","../source/arrays/eachRight.js","../source/arrays/eachRightAsync.js","../source/arrays/every.js","../source/arrays/everyAsync.js","../source/arrays/filter.js","../source/arrays/filterAsync.js","../source/objects/keys.js","../source/utilities/toPath.js","../source/utilities/get.js","../source/objects/hasKeys.js","../source/types/isPlainObject.js","../source/types/isConstructor.js","../source/types/isTypeFactory.js","../source/types/isBuffer.js","../source/utilities/isEqual.js","../source/arrays/largest.js","../source/arrays/map.js","../source/arrays/mapAsync.js","../source/math/subtract.js","../source/math/subtractReverse.js","../source/math/randomInt.js","../source/internal/array.js","../source/arrays/shuffle.js","../source/arrays/smallest.js","../source/arrays/unique.js","../source/buffers/clear.js","../source/collection/findIndexCache.js","../source/collection/sortCollectionDescending.js","../source/collection/sortCollectionAlphabetically.js","../source/collection/sortCollectionAscending.js","../source/types/isNumber.js","../source/types/isString.js","../source/objects/pluckObject.js","../source/collection/sortCollectionAlphabeticallyReverse.js","../source/internal/regexTestFactory.js","../source/files/isFileCSS.js","../source/files/isFileHTML.js","../source/files/isFileJS.js","../source/files/isFileJSON.js","../source/objects/assign.js","../source/objects/eachAsync.js","../source/objects/each.js","../source/types/isSet.js","../source/utilities/forOf.js","../source/types/isGenerator.js","../source/utilities/forOfAsync.js","../source/types/isFunction.js","../source/types/isAsync.js","../source/utilities/generateLoop.js","../source/utilities/each.js","../source/functions/chain.js","../source/utilities/stubTrue.js","../source/utilities/stubFalse.js","../source/utilities/noop.js","../source/utilities/times.js","../source/utilities/timer.js","../source/internal/apply.js","../source/objects/mapAsync.js","../source/objects/map.js","../source/types/getType.js","../source/types/cloneType.js","../source/utilities/forOfMap.js","../source/utilities/forOfMapAsync.js","../source/utilities/map.js","../source/objects/everyAsync.js","../source/objects/every.js","../source/utilities/forOfEvery.js","../source/utilities/forOfEveryAsync.js","../source/utilities/every.js","../source/utilities/cacheNativeMethod.js","../source/internal/object.js","../source/internal/isSame.js","../source/math/randomFloat.js","../source/numbers/isPositive.js","../source/objects/getEntries.js","../source/objects/compactMapAsync.js","../source/objects/compactMap.js","../source/objects/filter.js","../source/objects/filterAsync.js","../source/objects/isMatch.js","../source/types/isRegex.js","../source/regexps/escapeRegex.js","../source/regexps/arrayToRegex.js","../source/objects/size.js","../source/objects/zip.js","../source/strings/camelCase.js","../source/strings/kebabCase.js","../source/strings/snakeCase.js","../source/strings/upperCase.js","../source/strings/lowerCase.js","../source/strings/range.js","../source/strings/sanitize.js","../source/strings/tokenize.js","../source/strings/typography.js","../source/types/getTypeName.js","../source/types/noValue.js","../source/types/isMap.js","../source/types/isTypedArray.js","../source/types/isBigInt.js","../source/types/isBoolean.js","../source/types/isArrayBuffer.js","../source/types/isCloneable.js","../source/types/isDate.js","../source/types/isFalse.js","../source/types/isF32.js","../source/types/isF64.js","../source/types/isFloat.js","../source/types/isI16.js","../source/types/isI32.js","../source/types/isI8.js","../source/types/isPromise.js","../source/types/isKindAsync.js","../source/types/isSafeInt.js","../source/types/isU16.js","../source/types/isU32.js","../source/types/isU8.js","../source/types/isU8C.js","../source/types/isWeakMap.js","../source/types/isDeno.js","../source/types/isNode.js","../source/types/isTruthy.js","../source/utilities/notEqual.js","../source/utilities/json.js","../source/utilities/assert.js","../source/utilities/clone.js","../source/utilities/forOfCompactMapAsync.js","../source/utilities/forOfCompactMap.js","../source/utilities/compactMap.js","../source/utilities/forOfFilter.js","../source/utilities/forOfFilterAsync.js","../source/utilities/filter.js","../source/utilities/flow.js","../source/utilities/flowAsync.js","../source/utilities/hasDot.js","../source/utilities/interval.js","../source/utilities/model.js","../source/utilities/store.js","../source/utilities/uid.js","../source/utilities/virtualStorage.js","../source/math/add.js","../source/functions/after.js","../source/utilities/arraysToObject.js","../source/functions/ary.js","../source/functions/before.js","../source/utilities/bindAll.js","../source/math/progress.js","../source/arrays/chunk.js","../source/utilities/clear.js","../source/arrays/clone.js","../source/utilities/compact.js","../source/objects/compactKeys.js","../source/utilities/concurrent.js","../source/utilities/concurrentStatus.js","../source/filesystem/copyFolder.js","../source/collection/countBy.js","../source/collection/countKey.js","../source/collection/countWithoutKey.js","../source/filesystem/directory.js","../source/functions/curry.js","../source/functions/curryRight.js","../source/functions/debounce.js","../source/math/deduct.js","../source/math/divide.js","../source/arrays/dropRight.js","../source/buffers/ensure.js","../source/utilities/everyArg.js","../source/collection/findIndex.js","../source/collection/findItem.js","../source/arrays/first.js","../source/arrays/flatten.js","../source/utilities/forEachAsync.js","../source/utilities/forMap.js","../source/files/getExtension.js","../source/files/getFilename.js","../source/collection/getHighest.js","../source/collection/getLowest.js","../source/arrays/getNumberInsertIndex.js","../source/collection/groupBy.js","../source/utilities/has.js","../source/functions/ifInvoke.js","../source/utilities/ifNotAssign.js","../source/utilities/ifValue.js","../source/functions/inAsync.js","../source/functions/inSync.js","../source/math/increment.js","../source/collection/indexBy.js","../source/arrays/initial.js","../source/arrays/intersect.js","../source/objects/invert.js","../source/arrays/invoke.js","../source/collection/invoke.js","../source/collection/invokeAsync.js","../source/types/isArguments.js","../source/types/isArrayLike.js","../source/types/isChild.js","../source/types/isEmpty.js","../source/types/isFalsy.js","../source/types/isIterable.js","../source/arrays/isMatch.js","../source/numbers/isNumberEqual.js","../source/numbers/isNumberInRange.js","../source/numbers/isNumberNotInRange.js","../source/types/isParent.js","../source/types/isPrimitive.js","../source/types/isRelated.js","../source/types/isSameType.js","../source/types/isTrue.js","../source/numbers/isZero.js","../source/arrays/last.js","../source/arrays/mapRight.js","../source/arrays/mapWhile.js","../source/utilities/merge.js","../source/math/multiple.js","../source/functions/negate.js","../source/functions/nthArg.js","../source/objects/omit.js","../source/functions/once.js","../source/functions/over.js","../source/functions/overEvery.js","../source/utilities/pair.js","../source/arrays/partition.js","../source/objects/pick.js","../source/collection/pluck.js","../source/utilities/promise.js","../source/utilities/propertyMatch.js","../source/functions/rearged.js","../source/math/remainder.js","../source/arrays/remove.js","../source/strings/replace.js","../source/arrays/rest.js","../source/arrays/right.js","../source/arrays/sample.js","../source/utilities/setKey.js","../source/utilities/setValue.js","../source/arrays/sortNumberAscending.js","../source/arrays/sortNumberDescening.js","../source/utilities/stubArray.js","../source/utilities/stubObject.js","../source/utilities/stubString.js","../source/math/subtractAll.js","../source/math/sumAll.js","../source/arrays/take.js","../source/arrays/takeRight.js","../source/functions/throttle.js","../source/utilities/timesAsync.js","../source/utilities/toggle.js","../source/strings/truncate.js","../source/arrays/zip.js","../source/arrays/union.js","../source/arrays/untilFalse.js","../source/arrays/untilTrue.js","../source/arrays/whileCompactMap.js","../source/arrays/whileEach.js","../source/arrays/whileMap.js","../source/arrays/without.js","../source/functions/wrap.js","../source/arrays/xor.js"],"sourcesContent":["/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","import {\n\treaddir, copyFile, mkdir, stat\n} from 'fs/promises';\nimport path from 'path';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nasync function copyToPath(sourceFolder, destinationFolder, file) {\n\tconst sourcePath = path.join(sourceFolder, file);\n\tconst destinationPath = path.join(destinationFolder, file);\n\tawait copyFile(sourcePath, destinationPath);\n}\nexport async function copyFolder(sourceFolder, destinationFolder) {\n\tconst files = await readdir(sourceFolder);\n\tawait eachAsyncArray(files, async (file) => {\n\t\tconst sourcePath = path.join(sourceFolder, file);\n\t\tconst filestats = await stat(sourcePath);\n\t\tif (filestats.isDirectory()) {\n\t\t\tconst folderDestination = path.join(destinationFolder, file.replace(sourceFolder, ''));\n\t\t\tawait mkdir(folderDestination, {\n\t\t\t\trecursive: true\n\t\t\t});\n\t\t\tawait copyFolder(sourcePath, folderDestination);\n\t\t} else {\n\t\t\tawait copyToPath(sourceFolder, destinationFolder, file);\n\t\t}\n\t});\n\treturn true;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import path from 'path';\nimport { fileURLToPath } from 'url';\nexport function currentFile(importMeta) {\n\tif (globalThis.__filename) {\n\t\treturn __filename;\n\t}\n\treturn fileURLToPath(importMeta.url);\n}\nexport function currentPath(importMeta) {\n\tif (globalThis.__dirname) {\n\t\treturn __dirname;\n\t}\n\treturn path.dirname(fileURLToPath(importMeta.url));\n}\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Invoke each function in the given array.\n *\n * @function invokeArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { invokeArray, assert } from '@universalweb/acid';\n * function test(arg){\n * \treturn [this, arg];\n * }\n * const results = invokeArray([test], 1, test);\n * assert(results, [test, 1]);\n */\nexport function invokeArray(source, arg, thisCall) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index].call(thisCall, arg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index](arg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollection\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * import { invokeCollection, assert } from '@universalweb/acid';\n * const results = invokeCollection([{\n *\ttest(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollection(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapArray(collection, (item, index) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollectionAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * import { invokeCollectionAsync, assert } from '@universalweb/acid';\n * const results = await invokeCollectionAsync([{\n *\tasync test(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollectionAsync(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapAsyncArray(collection, (item) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapAsyncArray(collection, async (item) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n"],"names":["clearArray","source","length","isUndefined","undefined","hasLength","Boolean","isNull","hasValue","returnValue","eachArray","iteratee","thisCall","additionalArg","arrayLength","index","call","compactMapArray","results","item","arrayOriginal","returned","push","async","eachAsyncArray","compactMapAsyncArray","result","sign","Math","isNegative","rangeUp","start","end","step","sourceArray","position","rangeDown","forEach","callback","isArray","Array","ensureArray","flattenDeep","flat","Infinity","reflectConstruct","Reflect","construct","target","argumentsList","newTarget","args","difference","sources","differencesMap","Map","differences","currentArray","parentIndex","child","childIndex","childRoot","get","count","set","drop","array","amount","upTo","splice","eachRight","thisBind","eachRightAsync","everyArray","sourceLength","everyAsyncArray","filterArray","filterAsyncArray","objectKeys","Object","keys","regexToPath","regexCloseBracket","emptyString","toPath","replace","split","propertyString","link","hasOwn","hasKeys","properties","pathArray","lastPath","pop","initialPathObject","isPlainObject","value","constructor","toString","trim","slice","isConstructor","isConstructorFactory","constructorName","name","isConstructorNameFactory","isTypeFactory","method","primarySource","otherSources","isBufferCall","isBuffer","isEqual","equals","sourceProperties","key","mathNativeMax","max","mapArray","mapAsyncArray","subtract","minuend","subtrahend","subtractReverse","floor","random","randomInt","min","arrayFrom","from","toArray","arrayLike","mapFn","thisArg","shuffle","shuffleArray","mathNativeMin","onlyUnique","indexOf","sortUnique","unique","isSorted","filter","clearBuffer","fill","findIndexCache","element","indexMatch","propertyName","sortCollectionDescendingFilter","previous","next","ifMatch","previousKey","nextKey","sortCollectionDescending","collection","sort","sortObjectsAlphabetically","localeCompare","sortCollectionAscendingFilter","sortCollectionAscending","isNumberCall","isNumber","isString","String","pluckObject","targets","sortObjectsAlphabeticallyReverse","regexTestFactory","regexType","test","isFileCSS","isFileHTML","isFileJS","isFileJSON","objectAssign","assign","eachAsyncObject","propertyCount","eachObject","objectKeysArray","isSetCall","isSet","forOf","isGeneratorCall","isGenerator","forOfAsync","generatorArgs","isFunction","Function","isAsyncCall","isAsync","generateLoop","arrayLoop","arrayLoopAsync","objectLoop","objectLoopAsync","forOfLoop","forOfLoopAsync","argument1","argument2","argument3","isIterateeAsync","each","Chain","methods","this","addChainMethod","thisChain","methodName","setValue","done","truth","falsy","noop","times","Timers","list","remove","id","clearTimeout","delete","has","callable","time","currentThis","setTimeout","clear","timers","timer","applyNative","apply","thisArgument","mapAsyncObject","thisObject","mapObject","original","getType","cloneType","sourceType","forOfMap","resultsObject","methodPush","add","methodPushBound","bind","methodSet","forOfMapAsync","resultsGenerator","map","everyAsyncObject","everyObject","forOfEvery","forOfEveryAsync","every","functionPrototype","prototype","cacheNativeMethod","getPropNames","getOwnPropertyNames","getPropDesc","getOwnPropertyDescriptor","defProp","defineProperty","hasProp","hasOwnProperty","isSame","is","objectEntries","entries","compactMapAsyncObject","compactMapObject","filterObject","filterAsyncObject","isRegexCall","isRegex","escapeRegexRegex","escapeRegex","arrayToRegex","makeSafe","RegExp","join","objectSize","normalizeCase","space","restString","string","substring","rawURLDecodeRegex","andRegex","lessThanRegex","moreThanRegex","doubleQuoteRegex","rawURLDecode","decodeURIComponent","htmlEntities","tokenizeRegEx","wordsRegEx","getWords","upperFirstLetter","toUpperCase","upperFirst","upperFirstOnly","toLowerCase","getTypeName","noValue","isMapCall","isMap","typedArrayRegex","arrayConstructorName","isTypedArray","isBigIntCall","isBigInt","isBooleanCall","isBoolean","isArrayBufferCall","isArrayBuffer","constructorNames","isDateCall","isDate","isFalse","isF32Call","isF32","isF64Call","isF64","isInteger","Number","isFloat","isI16Call","isI16","isI32Call","isI32","isI8Call","isI8","isPromise","Promise","isKindAsync","isSafeInteger","isSafeInt","isU16Call","isU16","isU32Call","isU32","isU8Call","isU8","isU8CCall","isU8C","isWeakMapCall","isWeakMap","isDeno","globalThis","Deno","isNodejs","process","versions","node","isTruthy","returnIfTrue","notEqual","jsonNative","JSON","stringify","createAssertError","expected","localOptions","options","errorTitle","title","file","Error","assertAsync","sourceArg","structuredCloneSafe","structuredClone","forOfCompactMapAsync","forOfCompactMap","compactMap","forOfFilter","forOfFilterAsync","returnFlow","arg","flow","flowRight","flowAsync","flowAsyncRight","hasDot","Intervals","clearInterval","setInterval","intervals","Model","static","modelName","modelValue","models","Store","property","data","Proxy","proxySource","console","log","UniqID","totalActive","freed","totalFree","shift","free","isActive","shouldReset","reset","uniqID","VirtualStorage","initialObject","items","getItem","setItem","removeItem","augend","addend","point","sortedObject","bindThis","targetAssign","total","currentAmount","config","size","chunked","match","sourceKeys","sourceKeysLength","targetObject","i","keyName","object","compactedKeys","queue","all","allSettled","copyFolder","sourceFolder","destinationFolder","files","readdir","sourcePath","path","stat","isDirectory","folderDestination","mkdir","recursive","destinationPath","copyFile","copyToPath","importMeta","__filename","fileURLToPath","url","__dirname","dirname","arity","curries","curried","curryArgs","unshift","debounced","Buffer","alloc","findIndex","find","level","reduce","previousValue","currentValue","concat","values","valuesLength","cloned","methodBound","lastIndexOf","insertIndex","search","includes","rootObject","equalThis","optional","firstArgument","text","arrays","otherItem","strictFlag","indexes","sourceChild","targetParent","Symbol","iterator","compareArray","targetKeys","sourceParent","targetChild","type","targetOne","targetTwo","other","otherType","reviver","parse","indexFrom","trueIndex","merge","currentSource","sourceItem","sourceKey","blacklist","blacklistRegex","numberToString","iteratees","predicates","predicate","rejected","whitelist","compared","removeThese","words","sampleArray","used","numberList","a","b","endIndex","indexRight","throttled","shouldThrottle","on","off","maxLength","stringLength","breakAll","breakAllLength","truncateDown","truncateUp","arraySet","unZippedKeys","sourcesSet","Set","wrapper","xorMap","xored","zipedObject"],"mappings":"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"} \ No newline at end of file diff --git a/build/module/basic.js b/build/module/basic.js index f1407d70..917ac48a 100644 --- a/build/module/basic.js +++ b/build/module/basic.js @@ -1,2 +1,2 @@ -function n(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function t(n){return n.length=0,n}function r(n){return n.slice()}function e(n){return void 0===n}function o(n){return Boolean(n.length)}function u(n){return null===n}function c(n){return!e(n)&&!u(n)}function i(n){return n}function s(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const f=t.call(e,n,u,r,i,s,o);c(f)&&r.push(f)})):s(n,((n,u,i,s)=>{const f=t(n,u,r,i,s,e,o);c(f)&&r.push(f)})),r}async function a(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const u=await t(n,e,r,o);c(u)&&r.push(u)})),r}const{sign:h}=Math;function g(n){return-1===h(n)}function p(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function m(n,t,r=1,e=[]){return g(r)?e:n{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function O(n,t=1,r=n.length){return n.splice(t,r)}const $=(n,t=1,r=n.length)=>O(n,0,r-t);function j(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function B(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function C(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function F(n,t,r=[],e){return await a(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function R(n,t){return t?n.slice(0,t):n[0]}function T(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(v(t))),[]);return r}function P(n){return n.slice(0,n.length-1)}function U(n,...t){return f(n,(n=>{if(C(t,(t=>t.includes(n))))return n}))}const N=Object.keys;function L(n){if(n)return N(n)}const _=/\.|\[/,D=/]/g,Z="";function k(n){return n.replace(D,Z).split(_)}function q(n,t){if(!t)return!1;let r=t;return C(y(n)?n:k(n),(n=>(r=r[n],c(r)))),r}const V=Object.hasOwn;function G(n,...t){if(n)return C(t,(t=>{const r=k(t);if(1===r.length)return V(n,t);{const t=r.pop(),e=q(r,n);return!!e&&V(e,t)}}))}function J(n,...t){if(n)return Boolean(t.find((t=>{const r=k(t);if(1===r.length)return V(n,t);{const t=r.pop(),e=q(r,n);return!!e&&V(e,t)}})))}const W=n=>!!c(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function z(n,t){return n?.constructor===t||!1}function H(n){return t=>z(t,n)}function K(n){return n?.constructor?.name}function Q(n){return t=>K(t)===n||!1}function X(n){return function(t,...r){return r?n(t)&&C(r,n):n(t)}}const Y=Q("Buffer"),nn=X(Y),tn=(n,t)=>{if(n===t)return!0;if(nn(n))return n.equals(t);if(n.toString()===t.toString())if(W(n)){const r=L(n);if(G(t,r))return C(r,(r=>tn(n[r],t[r])))}else if(y(n)&&n.length===t.length)return C(n,((n,r)=>tn(n,t[r])));return!1};function rn(n,t){return n.length===t.length&&C(n,((n,r)=>tn(t[r],n)))}const en=Math.max;function on(n){return en(...n)}function un(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function cn(n,t,r=[],e,o){return c(e)?s(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):s(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function sn(n,t){const r=[];return await a(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function fn(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function an(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function pn(n,t){return t-n}function dn(n){return n.sort(pn)}function mn(n,t){let r=n.length;for(let e=0;er)return $n(n);if(1===t)return[n[En(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Mn(n,t=1){return n.slice(0,t)}function Fn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Rn(n,t,r){return r.indexOf(n)===t}function Tn(n,t,r){return n!==r[t-1]}function Pn(n,t){return t?n.filter(Tn):n.filter(Rn)}function Un(...n){return Pn(A(n))}function Nn(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function qn(...n){const t=I(Map),r=[];return 2===n.length?x(n[0],n[1]):(s(n,((n,r)=>{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Vn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Gn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Jn(n){return nn(n)&&n||c(n)&&Buffer.from(n)||Buffer.alloc(0)}function Wn(n){return n.fill(0),n}function zn(n,t){const r={};let e;return s(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function Hn(n,t){let r=0;return s(n,(n=>{n[t]&&r++})),r}function Kn(n,t){let r=0;return s(n,(n=>{n[t]||r++})),r}function Qn(n,t,r,e,o){if(n[o]===e)return!0}function Xn(n,t,r="id"){const e=n.findIndex(((n,e)=>Qn(n,0,0,t,r)));return-1!==e&&e}function Yn(n,t,r="id"){const e=n.find(((n,e)=>Qn(n,0,0,t,r)));return-1!==e&&e}function nt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function tt(n,t="id",r){return n.sort(((n,e)=>nt(n,e,t,r)))}function rt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function et(n,t="id",r){return n.sort(((n,e)=>rt(n,e,t,r)))}function ot(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function ut(n,t="id",r){return n.sort(((n,e)=>ot(n,e,t,r)))}function ct(n,t="id"){return ut(n,t)[0]}function it(n,t){return tt(n,t,!1)[0]}function st(n,t){const r={};return s(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function ft(n,t="id"){const r={};return s(n,(n=>{r[n[t]]=n})),r}function at(n,t,r){return cn(n,((n,e)=>n[t](r,e)))}function lt(n,t,r){return sn(n,(async(n,e)=>n[t](r,e)))}const ht=Q("Number"),gt=X(ht);function pt(n){return!gt(n)}const dt=H(String);function mt(n){return!dt(n)}function wt(n,t){if(n)return dt(t)?n[t]:cn(t,(t=>n[t]))}function yt(n,t){return cn(n,(n=>wt(n,t)))}function bt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function vt(n,t="id",r){return n.sort(((n,e)=>bt(n,e,t,r)))}function At(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function Et(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function It(n){return t=>!!c(t)&&n.test(t)}const xt=It(/\.css$/),Ot=It(/\.html$/),$t=It(/\.js$/),jt=It(/\.json$/);function Bt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function Ct(n,t){return(...r)=>n(...r.splice(0,t))}function St(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Mt=Object.assign;function Ft(n,...t){if(c(n))return Mt(n,...t)}const Rt=async(n,t,r,e)=>{if(!n)return;const o=L(n);return c(r)?await a(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await a(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Tt(n,t,r,e){if(!n)return;const o=L(n);return c(r)?s(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):s(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function Pt(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!c(n)&&n instanceof Function,qt=Q("AsyncFunction"),Vt=X(qt);function Gt(n,t,r,e,o,u){return(i,s,f,a,l)=>{let h;const g=Vt(s);if(c(i)&&s)return h=y(i)?g?t:n:W(i)||kt(i)?g?e:r:o?g?u:o:Dt(i)?u:g?e:r,h(i,s,f,a,l)}}const Jt=Gt(s,a,Tt,Rt,Lt,Zt);class Wt{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Jt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function zt(n){return I(Wt,[n])}function Ht(n,r=n.length){const e=[],o=(...u)=>{if(e.push(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}function Kt(n,r=n.length){const e=[],o=(...u)=>{if(e.unshift(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}const Qt=!0,Xt=()=>Qt,Yt=!1,nr=()=>Yt,tr=()=>{};function rr(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,Qt),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const ur=I(or);function cr(n,t){return ur.set(n,t)}function ir(){rr(setTimeout(tr,0),(n=>{ur.remove(n)}))}const sr=Reflect.apply;function fr(n,t,r){if(kt(n))return sr(n,t,r)}function ar(n,t){function r(...n){r.id!==Yt&&ur.remove(r.id),r.id=cr((()=>{r.callable(...n),r.id=Yt}),t)}return r.id=Yt,r.callable=n.bind(r),r.clear=()=>{r.id!==Yt&&(ur.remove(r.id),r.id=Yt)},r}function lr(n,...t){if(kt(n))return n(...t)}async function hr(n,t){const r=n.length;for(let e=0;eJt(n,(n=>{n(t)}));function pr(n){return(...t)=>!n(...t)}function dr(n=0){return(...t)=>t[n]}const mr=n=>{let t;return(...r)=>(c(t)||(t=n(...r)),t)};async function wr(n,t,r={}){if(n)return await Rt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function yr(n,t,r={},e,o){if(n)return c(e)?Tt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Tt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function br(n){return n?.constructor}function vr(n,t=[]){const r=br(n);return r===Function&&"function"===r.name?function(){}:I(r,t)}function Ar(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=kt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Er(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=kt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const Ir=Gt(cn,sn,yr,wr,Ar,Er);function xr(n){return(...t)=>Ir(n,(n=>n(...t)))}async function Or(n,t){if(!n)return;return S(L(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function $r(n,t){if(!n)return;return C(L(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function jr(n,t=i){if(y(n)||Nt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Br(n,t=i,r){if(Dt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(y(n)||Nt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Cr=Gt(C,S,$r,Or,jr,Br);function Sr(n){return t=>Cr(n,(n=>n(t)))}function Mr(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Fr(n,t){function r(...n){r.id?r.shouldThrottle=Qt:(r.callable(...n),r.id=cr((()=>{r.shouldThrottle&&r.callable(...n),r.id=Yt}),t))}return r.id=Yt,r.callable=n.bind(r),r.clear=()=>{ur.remove(r.id),r.id=Yt},r}function Rr(n,t){return(...r)=>t(n,...r)}const Tr=Function.prototype;function Pr(n){return Tr.call.bind(n)}const Ur=Object.getOwnPropertyNames,Nr=Object.getOwnPropertyDescriptor,Lr=Object.defineProperty,_r=Pr(Object.hasOwnProperty),Dr=Object.is;function Zr(n,t){return n+t}function kr(n){return n-1}function qr(n,t){return n/t}function Vr(n){return n+1}function Gr(n,t){return n*t}function Jr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:Wr}=Math;function zr(n,t=0){return Wr()*(n-t)+t}function Hr(n,t){return n%t}function Kr(n){return n.reduce(((n,t)=>n-t),0)}function Qr(n){return n.reduce(((n,t)=>n+t),0)}function Xr(n,t,r){return n>t&&nr}const{sign:ne}=Math;function te(n){return 1===ne(n)}function re(n){return 0===n}const ee=Object.entries;function oe(n){if(c(n))return ee(n)}function ue(n){const t=[];return Tt(n,((n,r)=>{c(n)&&t.push(r)})),t}async function ce(n,t=i,r={}){return await Rt(n,(async(n,e,o,u,i)=>{const s=await t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function ie(n,t=i,r={}){return Tt(n,((n,e,o,u,i)=>{const s=t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function se(n,t,r={}){return Tt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function fe(n,t,r={}){return await Rt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function ae(n,t={}){if(n)return Tt(n,((n,r)=>{t[n]=r})),t}const le=(n,t)=>{if(n===t)return!0;const r=L(n),e=L(t);return r.length===e.length&&C(r,(r=>n[r]===t[r]))},he=Q("RegExp"),ge=X(he),pe=/[()[\]{}*+?^$|#.,/\\\s-]/g;function de(n){return n.replace(pe,"\\$&")}function me(n,t){return t?me(cn(n,de)):RegExp(n.join("|"))}function we(n,t){if(n){if(y(t)){const r=me(t);return se(n,((n,t)=>!r.test(t)))}if(ge(t))return se(n,((n,r)=>!t.test(r)));if(dt(t))return se(n,((n,r)=>r!==t));if(gt(t)){const r=t.toString();return se(n,((n,t)=>t!==r))}return kt(t)?se(n,((n,r)=>!t(n,r))):void 0}}const ye=(n,t,r={})=>{if(n)return s(t,(t=>{r[t]=n[t]})),r};function be(n){if(n)return L(n).length}const ve=(n,t)=>{const r={};return s(n,((n,e)=>{r[n]=t[e]})),r},Ae=n=>{const t=[],r=[];return Tt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Ee=/[ _-]+/g;function Ie(n){let t="";return n.replace(Ee," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const xe=/[ _-]+/g,Oe=/[ ]+/g;function $e(n){return n.replace(/([A-Z]+)/g," $1").replace(xe," ").trim().toLowerCase().replace(Oe,"-")}const je=/[ _-]+/g,Be=/[ ]+/g;function Ce(n){return n.replace(/([A-Z]+)/g," $1").replace(je," ").trim().toLowerCase().replace(Be,"_")}const Se=/[ _-]+/g;function Me(n){return n.replace(/([A-Z]+)/g," $1").replace(Se," ").trim().toUpperCase()}const Fe=/[ _-]+/g;function Re(n){return n.replace(/([A-Z]+)/g," $1").replace(Fe," ").trim().toLowerCase()}function Te(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function Pe(n,t=1){return n[n.length-t]}function Ue(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function Ne(n,t=1){return n.slice(0,-1*t)}function Le(n,t=1){return n.substring(t)}function _e(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function De(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function Ze(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const ke=/%(?![\da-f]{2})/gi,qe=/&/g,Ve=//g,Je=/"/g;function We(n){return decodeURIComponent(n.replace(ke,(()=>"%25")))}function ze(n){return n.replace(qe,"&").replace(Ve,"<").replace(Ge,">").replace(Je,""")}function He(n){return ze(We(n))}const Ke=/\S+/g,Qe=/\w+/g;function Xe(n){return n.match(Ke)||[]}function Ye(n){return n.match(Qe)||[]}const no=/\w+/g;function to(n){return n[0].toUpperCase()}function ro(n){return to(n)+Le(n)}function eo(n){return to(n)+Le(n).toLowerCase()}function oo(n){return n.replace(no,(n=>ro(n)))}function uo(n){return n.replace(no,(n=>eo(n)))}function co(n){return br(n)?.name}function io(n){return!!c(n)&&"[object Arguments]"===n.toString()}function so(n){return!c(n)}const fo=Q("Map"),ao=X(fo),lo=/Array/,ho="Array";function go(n){if(n){const t=co(n);if(lo.test(t)&&t!==ho)return!0}return!1}function po(n,t){if(so(n)||kt(n))return!1;if(y(n)||go(n))return!0;const r=n.length;if(!so(r)||!gt(r)||r<0)return!1;if(t){const t=L(n);return!!t&&Cr(t,((n,t)=>t>=0&>(t)))}return!0}const mo=Q("BigInt"),wo=X(mo),yo=Q("Boolean"),bo=X(yo),vo=Q("ArrayBuffer"),Ao=X(vo);function Eo(n,t){return!(!n||!t)&&n instanceof t}const Io=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function xo(n){if(c(n)){const t=n?.constructor?.name;return Io.test(t)}return!1}const Oo=Q("Date"),$o=X(Oo);function jo(n){return dt(n)||y(n)?!o(n):W(n)?!be(n):!c(n)}function Bo(n){return!1===n}const Co=Q("Float32Array"),So=X(Co),Mo=Q("Float64Array"),Fo=X(Mo),{isInteger:Ro}=Number,To=Ro,Po=Q("Int16Array"),Uo=X(Po),No=Q("Int32Array"),Lo=X(No),_o=Q("Int8Array"),Do=X(_o);function Zo(n){return c(n)&&"function"==typeof n[Symbol.iterator]}function ko(n){return!!n&&n instanceof Promise}function qo(n){return!!n&&(ko(n)||Vt(n)||Dt(n))}function Vo(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Go(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Jo(n,t){return!so(n)&&!so(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:Wo}=Number,zo=Wo;function Ho(n,t){const r=br(n),e=br(t);return r===e&&r.name===e.name}function Ko(n){return!0===n}const Qo=Q("Uint16Array"),Xo=X(Qo),Yo=Q("Uint32Array"),nu=X(Yo),tu=Q("Uint8Array"),ru=X(tu),eu=Q("Uint8ClampedArray"),ou=X(eu),uu=Q("WeakMap"),cu=X(uu),iu=void 0!==globalThis.Deno,su=void 0!==globalThis.process&&process.versions&&process.versions.node;function fu(n,t=!0){return Boolean(n)&&t}function au(n,t=!0){return!1===Boolean(n)&&t}function lu(n,t,r,e){if(c(n)){if(kt(t))return r?fr(t,r,e):t(...e);if(W(t))return t[r]=n,t}}function hu(n,t){return Bo(tn(n,t))}const gu=JSON;function pu(n,t){if(n)return gu.parse(n,t)}const du=gu.stringify;function mu(n,t,r){const e=globalThis.options||r;let o;return kt(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${du(n)}\n\t\tExpected: ${du(t)}`,e)}async function wu(n,t,r){const e=await n;return!(kt(t)&&!1===await t(e,r))&&!hu(e,t)||mu(e,t,r)}function yu(n,t,r){if(qo(n)||qo(t))return wu(n,t,r);return!(kt(t)&&!1===t(n,r))&&!hu(n,t)||mu(n,t,r)}function bu(n,t,r){const e=Ir(n,(n=>kt(n)?n.bind(t):n));return r?Ft(r,e):e}function vu(n){if(n){if(nn(n))return Wn(n);if(y(n))return t(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const Au=globalThis.structuredClone;function Eu(n){return Au(n)}function Iu(n){if(W(n)){const t=L(n),r=t.length,e={};for(let o=0;ofu(n)))}async function xu(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);c(e)&&r.push(e)}return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);c(u)&&e(u)}return o}const u=kt(o.set);for await(const[r,e]of n){const i=await t(e,r,o,n);c(i)&&(u?o.set(r,i):o[r]=i)}return o}function Ou(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);c(u)&&o(u)}return e}const o=kt(e.set);for(const[r,u]of n){const i=t(u,r,e,n);c(i)&&(o?e.set(r,i):e[r]=i)}return e}const $u=Gt(f,l,ie,ce,Ou,xu);function ju(...n){return Vt(n[0])?async function(...t){return Cr(n,(async n=>Cr(t,(async t=>n(t)))))}:function(...t){return Cr(n,(n=>Cr(t,(t=>n(t)))))}}function Bu(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=kt(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Cu(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=kt(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Su=Gt(M,F,se,fe,Bu,Cu);function Mu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Fu=Mu(s),Ru=Mu(j);function Tu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const Pu=Tu(a),Uu=Tu(B);function Nu(n,t){const r=vr(n),e=r.push||r.add;if(e&&kt(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else kt(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function Lu(n,t){const r={};return s(n,((n,e)=>{r[t[e]]=n})),r}function _u(n,t,r){if(so(n)||so(t))return!1;if(dt(n))return dt(t)?n.includes(t,r):ge(t)?t.test(n):kt(t)?Boolean(t(n)):Cr(t,(t=>Boolean(_u(n,t))));if(y(n)){if(dt(t))return n.includes(t,r);if(ge(t))return Cr(n,(n=>n.test(t)));if(y(t))return Cr(t,(t=>Boolean(_u(n,t))))}return!1}const Du=It(/\./),Zu=(n,t,r)=>(t&&!c(n[t])&&(n[t]=r),n);class ku{list=I(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,Qt),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const qu=I(ku);function Vu(n,t){return qu.set(n,t)}function Gu(){rr(setTimeout(tr,0),(n=>{qu.remove(n)}))}function Ju(n,...t){return Jt(t,(t=>{Jt(t,((t,r)=>{if(n[r]&&(W(t)||y(t)||t.forEach))return Ju(n[r],t);n[r]=t}))})),n}class Wu{static models={};constructor(n,t){c(t)?(Ft(this,t),this.modelName=n,Wu.models.set(n,t)):Ft(this,n)}}function zu(n,t){return c(t)?I(Wu,[n,t]):q(n,Wu.models)}function Hu(n,t){return[n,t]}function Ku(n,t,r){const e=n.length,o=[];for(let u=0;uC(r,(r=>tn(n[r],t[r])));function nc(n,t,r){return t&&W(n)||gt(t)&&y(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function tc(n,t,r){return gt(r)&&y(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class rc{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Tt(n,(t=>{n[t]=new rc(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new rc(r),!0)})}}const ec=()=>[],oc=()=>({}),uc=()=>"";async function cc(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ac=I(fc);class lc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function hc(n){return new lc(n)}export{Wt as Chain,ku as Intervals,Wu as Model,rc as Store,or as Timers,fc as UniqID,lc as VirtualStorage,Zr as add,Bt as after,fr as apply,me as arrayToRegex,Lu as arraysToObject,Ct as ary,yu as assert,wu as assertAsync,Ft as assign,St as before,bu as bindAll,Pr as cacheNativeMethod,Jr as calcProgress,Ie as camelCase,zt as chain,n as chunk,Ue as chunkString,vu as clear,t as clearArray,Wn as clearBuffer,Gu as clearIntervals,ir as clearTimers,Eu as clone,r as cloneArray,vr as cloneType,Iu as compact,ue as compactKeys,$u as compactMap,f as compactMapArray,l as compactMapAsyncArray,ce as compactMapAsyncObject,ie as compactMapObject,Ku as concurrent,Qu as concurrentStatus,I as construct,K as constructorName,zn as countBy,Hn as countKey,Kn as countWithoutKey,Ht as curry,Kt as curryRight,ar as debounce,kr as deduct,Lr as defProp,x as difference,qr as divide,O as drop,$ as dropRight,Jt as each,s as eachArray,a as eachAsyncArray,Rt as eachAsyncObject,Tt as eachObject,j as eachRight,B as eachRightAsync,v as ensureArray,Jn as ensureBuffer,de as escapeRegex,pe as escapeRegexRegex,Cr as every,ju as everyArg,C as everyArray,S as everyAsyncArray,Or as everyAsyncObject,$r as everyObject,Yt as falsy,Su as filter,M as filterArray,F as filterAsyncArray,fe as filterAsyncObject,se as filterObject,Xn as findIndex,Qn as findIndexCache,Yn as findItem,R as first,T as flatten,A as flattenDeep,Fu as flow,Pu as flowAsync,Uu as flowAsyncRight,Ru as flowRight,w as forEach,Pt as forEachAsync,Nu as forMap,Lt as forOf,Zt as forOfAsync,Ou as forOfCompactMap,xu as forOfCompactMapAsync,jr as forOfEvery,Br as forOfEveryAsync,Bu as forOfFilter,Cu as forOfFilterAsync,Ar as forOfMap,Er as forOfMapAsync,Gt as generateLoop,q as get,oe as getEntries,At as getFileExtension,Et as getFilename,ct as getHighest,it as getLowest,Sn as getNumberInsertIndex,Nr as getPropDesc,Ur as getPropNames,br as getType,co as getTypeName,st as groupBy,_u as has,J as hasAnyKeys,Du as hasDot,G as hasKeys,o as hasLength,_r as hasProp,c as hasValue,ze as htmlEntities,lr as ifInvoke,Zu as ifNotAssign,lu as ifValue,hr as inAsync,gr as inSync,Vr as increment,ft as indexBy,P as initial,Ne as initialString,Te as insertInRange,U as intersection,Vu as interval,qu as intervals,ae as invert,at as invoke,lt as invokeAsync,io as isArguments,y as isArray,Ao as isArrayBuffer,vo as isArrayBufferCall,po as isArrayLike,Vt as isAsync,qt as isAsyncCall,wo as isBigInt,mo as isBigIntCall,bo as isBoolean,yo as isBooleanCall,nn as isBuffer,Y as isBufferCall,Eo as isChild,xo as isCloneable,z as isConstructor,H as isConstructorFactory,Q as isConstructorNameFactory,$o as isDate,Oo as isDateCall,iu as isDeno,jo as isEmpty,tn as isEqual,So as isF32,Co as isF32Call,Fo as isF64,Mo as isF64Call,Bo as isFalse,au as isFalsy,xt as isFileCSS,Ot as isFileHTML,$t as isFileJS,jt as isFileJSON,To as isFloat,kt as isFunction,Dt as isGenerator,_t as isGeneratorCall,Uo as isI16,Po as isI16Call,Lo as isI32,No as isI32Call,Do as isI8,_o as isI8Call,Zo as isIterable,qo as isKindAsync,ao as isMap,fo as isMapCall,rn as isMatchArray,le as isMatchObject,g as isNegative,su as isNodejs,b as isNotArray,pt as isNotNumber,mt as isNotString,u as isNull,gt as isNumber,ht as isNumberCall,On as isNumberEqual,Xr as isNumberInRange,Yr as isNumberNotInRange,Vo as isParent,W as isPlainObject,te as isPositive,Go as isPrimitive,ko as isPromise,ge as isRegex,he as isRegexCall,Jo as isRelated,zo as isSafeInt,Dr as isSame,Ho as isSameType,Nt as isSet,Ut as isSetCall,dt as isString,Ko as isTrue,fu as isTruthy,X as isTypeFactory,go as isTypedArray,Xo as isU16,Qo as isU16Call,nu as isU32,Yo as isU32Call,ru as isU8,ou as isU8C,eu as isU8CCall,tu as isU8Call,e as isUndefined,cu as isWeakMap,uu as isWeakMapCall,re as isZero,pu as jsonParse,$e as kebabCase,L as keys,on as largest,un as last,Re as lowerCase,Ir as map,cn as mapArray,sn as mapAsyncArray,wr as mapAsyncObject,yr as mapObject,fn as mapRightArray,an as mapWhile,Ju as merge,zu as model,Gr as multiply,pr as negate,so as noValue,tr as noop,hu as notEqual,dr as nthArg,Mt as objectAssign,ee as objectEntries,be as objectSize,we as omit,mr as once,Rn as onlyUnique,xr as over,Sr as overEvery,Hu as pair,gn as partition,ye as pick,yt as pluck,wt as pluckObject,Xu as promise,Yu as propertyMatch,zr as randomFloat,En as randomInt,m as range,d as rangeDown,p as rangeUp,We as rawURLDecode,Mr as reArg,It as regexTestFactory,Hr as remainder,mn as remove,wn as removeBy,_e as replaceList,yn as rest,Le as restString,i as returnValue,bn as right,Pe as rightString,jn as sample,He as sanitize,nc as setKey,tc as setValue,$n as shuffle,Cn as smallest,Ce as snakeCase,et as sortCollectionAlphabetically,vt as sortCollectionAlphabeticallyReverse,ut as sortCollectionAscending,ot as sortCollectionAscendingFilter,tt as sortCollectionDescending,nt as sortCollectionDescendingFilter,hn as sortNumberAscending,dn as sortNumberDescening,rt as sortObjectsAlphabetically,bt as sortObjectsAlphabeticallyReverse,Tn as sortUnique,du as stringify,ec as stubArray,nr as stubFalse,oc as stubObject,uc as stubString,Xt as stubTrue,ln as subtract,Kr as subtractAll,pn as subtractReverse,Qr as sumAll,Mn as take,Fn as takeRight,Fr as throttle,cr as timer,ur as timers,rr as times,cc as timesAsync,er as timesMap,ic as timesMapAsync,xn as toArray,k as toPath,sc as toggle,Xe as tokenize,De as truncate,Ze as truncateRight,Qt as truth,Gn as unZip,Ae as unZipObject,Un as union,ac as uniqID,Pn as unique,Nn as untilFalseArray,Ln as untilTrueArray,Me as upperCase,ro as upperFirst,oo as upperFirstAll,to as upperFirstLetter,eo as upperFirstOnly,uo as upperFirstOnlyAll,hc as virtualStorage,_n as whileCompactMap,Dn as whileEachArray,Zn as whileMapArray,kn as without,Ye as words,Rr as wrap,qn as xor,Vn as zip,ve as zipObject}; +function n(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function t(n){return n.length=0,n}function r(n){return n.slice()}function e(n){return void 0===n}function o(n){return Boolean(n.length)}function u(n){return null===n}function c(n){return!e(n)&&!u(n)}function i(n){return n}function s(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const f=t.call(e,n,u,r,i,s,o);c(f)&&r.push(f)})):s(n,((n,u,i,s)=>{const f=t(n,u,r,i,s,e,o);c(f)&&r.push(f)})),r}async function a(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const u=await t(n,e,r,o);c(u)&&r.push(u)})),r}const{sign:h}=Math;function g(n){return-1===h(n)}function p(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function m(n,t,r=1,e=[]){return g(r)?e:n{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function O(n,t=1,r=n.length){return n.splice(t,r)}const $=(n,t=1,r=n.length)=>O(n,0,r-t);function j(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function B(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function C(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function F(n,t,r=[],e){return await a(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function R(n,t){return t?n.slice(0,t):n[0]}function T(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(v(t))),[]);return r}function P(n){return n.slice(0,n.length-1)}function U(n,...t){return f(n,(n=>{if(C(t,(t=>t.includes(n))))return n}))}function N(n,t,r){if(!n)return;const e=n.length;if(c(r))for(let o=0;o(r=r[n],c(r)))),r}const G=Object.hasOwn;function J(n,...t){if(n)return C(t,(t=>{const r=q(t);if(1===r.length)return G(n,t);{const t=r.pop(),e=V(r,n);return!!e&&G(e,t)}}))}function W(n,...t){if(n)return Boolean(t.find((t=>{const r=q(t);if(1===r.length)return G(n,t);{const t=r.pop(),e=V(r,n);return!!e&&G(e,t)}})))}const z=n=>!!c(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function H(n,t){return n?.constructor===t||!1}function K(n){return t=>H(t,n)}function Q(n){return n?.constructor?.name}function X(n){return t=>Q(t)===n||!1}function Y(n){return function(t,...r){return r?n(t)&&C(r,n):n(t)}}const nn=X("Buffer"),tn=Y(nn),rn=(n,t)=>{if(n===t)return!0;if(tn(n))return n.equals(t);if(n.toString()===t.toString())if(z(n)){const r=_(n);if(J(t,r))return C(r,(r=>rn(n[r],t[r])))}else if(y(n)&&n.length===t.length)return C(n,((n,r)=>rn(n,t[r])));return!1};function en(n,t){return n.length===t.length&&C(n,((n,r)=>rn(t[r],n)))}const on=Math.max;function un(n){return on(...n)}function cn(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function sn(n,t,r=[],e,o){return c(e)?s(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):s(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function fn(n,t){const r=[];return await a(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function an(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function ln(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function dn(n,t){return t-n}function mn(n){return n.sort(dn)}function wn(n,t){let r=n.length;for(let e=0;er)return jn(n);if(1===t)return[n[In(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Fn(n,t=1){return n.slice(0,t)}function Rn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Tn(n,t,r){return r.indexOf(n)===t}function Pn(n,t,r){return n!==r[t-1]}function Un(n,t){return t?n.filter(Pn):n.filter(Tn)}function Nn(...n){return Un(A(n))}function Ln(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function Vn(...n){const t=I(Map),r=[];return 2===n.length?x(n[0],n[1]):(s(n,((n,r)=>{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Gn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Jn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Wn(n){return tn(n)&&n||c(n)&&Buffer.from(n)||Buffer.alloc(0)}function zn(n){return n.fill(0),n}function Hn(n,t){const r={};let e;return s(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function Kn(n,t){let r=0;return s(n,(n=>{n[t]&&r++})),r}function Qn(n,t){let r=0;return s(n,(n=>{n[t]||r++})),r}function Xn(n,t,r,e,o){if(n[o]===e)return!0}function Yn(n,t,r="id"){const e=n.findIndex(((n,e)=>Xn(n,0,0,t,r)));return-1!==e&&e}function nt(n,t,r="id"){const e=n.find(((n,e)=>Xn(n,0,0,t,r)));return-1!==e&&e}function tt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function rt(n,t="id",r){return n.sort(((n,e)=>tt(n,e,t,r)))}function et(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function ot(n,t="id",r){return n.sort(((n,e)=>et(n,e,t,r)))}function ut(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function ct(n,t="id",r){return n.sort(((n,e)=>ut(n,e,t,r)))}function it(n,t="id"){return ct(n,t)[0]}function st(n,t){return rt(n,t,!1)[0]}function ft(n,t){const r={};return s(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function at(n,t="id"){const r={};return s(n,(n=>{r[n[t]]=n})),r}function lt(n,t,r,e){return sn(n,e?(n,o)=>n[t].call(e,r):(n,e)=>n[t](r))}function ht(n,t,r,e){return fn(n,e?n=>n[t].call(e,r):async n=>n[t](r))}const gt=X("Number"),pt=Y(gt);function dt(n){return!pt(n)}const mt=K(String);function wt(n){return!mt(n)}function yt(n,t){if(n)return mt(t)?n[t]:sn(t,(t=>n[t]))}function bt(n,t){return sn(n,(n=>yt(n,t)))}function vt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function At(n,t="id",r){return n.sort(((n,e)=>vt(n,e,t,r)))}function Et(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function It(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function xt(n){return t=>!!c(t)&&n.test(t)}const Ot=xt(/\.css$/),$t=xt(/\.html$/),jt=xt(/\.js$/),Bt=xt(/\.json$/);function Ct(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function St(n,t){return(...r)=>n(...r.splice(0,t))}function Mt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Ft=Object.assign;function Rt(n,...t){if(c(n))return Ft(n,...t)}const Tt=async(n,t,r,e)=>{if(!n)return;const o=_(n);return c(r)?await a(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await a(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Pt(n,t,r,e){if(!n)return;const o=_(n);return c(r)?s(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):s(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function Ut(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!c(n)&&n instanceof Function,Vt=X("AsyncFunction"),Gt=Y(Vt);function Jt(n,t,r,e,o,u){return(i,s,f,a,l)=>{let h;const g=Gt(s);if(c(i)&&s)return h=y(i)?g?t:n:z(i)||qt(i)?g?e:r:o?g?u:o:Zt(i)?u:g?e:r,h(i,s,f,a,l)}}const Wt=Jt(s,a,Pt,Tt,_t,kt);class zt{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Wt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function Ht(n){return I(zt,[n])}function Kt(n,r=n.length){const e=[],o=(...u)=>{if(e.push(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}function Qt(n,r=n.length){const e=[],o=(...u)=>{if(e.unshift(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}const Xt=!0,Yt=()=>Xt,nr=!1,tr=()=>nr,rr=()=>{};function er(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,Xt),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const cr=I(ur);function ir(n,t){return cr.set(n,t)}function sr(){er(setTimeout(rr,0),(n=>{cr.remove(n)}))}const fr=Reflect.apply;function ar(n,t,r){if(qt(n))return fr(n,t,r)}function lr(n,t){function r(...n){r.id!==nr&&cr.remove(r.id),r.id=ir((()=>{r.callable(...n),r.id=nr}),t)}return r.id=nr,r.callable=n.bind(r),r.clear=()=>{r.id!==nr&&(cr.remove(r.id),r.id=nr)},r}function hr(n,...t){if(qt(n))return n(...t)}async function gr(n,t){const r=n.length;for(let e=0;eWt(n,(n=>{n(t)}));function dr(n){return(...t)=>!n(...t)}function mr(n=0){return(...t)=>t[n]}const wr=n=>{let t;return(...r)=>(c(t)||(t=n(...r)),t)};async function yr(n,t,r={}){if(n)return await Tt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function br(n,t,r={},e,o){if(n)return c(e)?Pt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Pt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function vr(n){return n?.constructor}function Ar(n,t=[]){const r=vr(n);return r===Function&&"function"===r.name?function(){}:I(r,t)}function Er(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=qt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Ir(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=qt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const xr=Jt(sn,fn,br,yr,Er,Ir);function Or(n){return(...t)=>xr(n,(n=>n(...t)))}async function $r(n,t){if(!n)return;return S(_(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function jr(n,t){if(!n)return;return C(_(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function Br(n,t=i){if(y(n)||Lt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Cr(n,t=i,r){if(Zt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(y(n)||Lt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Sr=Jt(C,S,jr,$r,Br,Cr);function Mr(n){return t=>Sr(n,(n=>n(t)))}function Fr(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Rr(n,t){function r(...n){r.id?r.shouldThrottle=Xt:(r.callable(...n),r.id=ir((()=>{r.shouldThrottle&&r.callable(...n),r.id=nr}),t))}return r.id=nr,r.callable=n.bind(r),r.clear=()=>{cr.remove(r.id),r.id=nr},r}function Tr(n,t){return(...r)=>t(n,...r)}const Pr=Function.prototype;function Ur(n){return Pr.call.bind(n)}const Nr=Object.getOwnPropertyNames,Lr=Object.getOwnPropertyDescriptor,_r=Object.defineProperty,Dr=Ur(Object.hasOwnProperty),Zr=Object.is;function kr(n,t){return n+t}function qr(n){return n-1}function Vr(n,t){return n/t}function Gr(n){return n+1}function Jr(n,t){return n*t}function Wr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:zr}=Math;function Hr(n,t=0){return zr()*(n-t)+t}function Kr(n,t){return n%t}function Qr(n){return n.reduce(((n,t)=>n-t),0)}function Xr(n){return n.reduce(((n,t)=>n+t),0)}function Yr(n,t,r){return n>t&&nr}const{sign:te}=Math;function re(n){return 1===te(n)}function ee(n){return 0===n}const oe=Object.entries;function ue(n){if(c(n))return oe(n)}function ce(n){const t=[];return Pt(n,((n,r)=>{c(n)&&t.push(r)})),t}async function ie(n,t=i,r={}){return await Tt(n,(async(n,e,o,u,i)=>{const s=await t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function se(n,t=i,r={}){return Pt(n,((n,e,o,u,i)=>{const s=t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function fe(n,t,r={}){return Pt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function ae(n,t,r={}){return await Tt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function le(n,t={}){if(n)return Pt(n,((n,r)=>{t[n]=r})),t}const he=(n,t)=>{if(n===t)return!0;const r=_(n),e=_(t);return r.length===e.length&&C(r,(r=>n[r]===t[r]))},ge=X("RegExp"),pe=Y(ge),de=/[()[\]{}*+?^$|#.,/\\\s-]/g;function me(n){return n.replace(de,"\\$&")}function we(n,t){return t?we(sn(n,me)):RegExp(n.join("|"))}function ye(n,t){if(n){if(y(t)){const r=we(t);return fe(n,((n,t)=>!r.test(t)))}if(pe(t))return fe(n,((n,r)=>!t.test(r)));if(mt(t))return fe(n,((n,r)=>r!==t));if(pt(t)){const r=t.toString();return fe(n,((n,t)=>t!==r))}return qt(t)?fe(n,((n,r)=>!t(n,r))):void 0}}const be=(n,t,r={})=>{if(n)return s(t,(t=>{r[t]=n[t]})),r};function ve(n){if(n)return _(n).length}const Ae=(n,t)=>{const r={};return s(n,((n,e)=>{r[n]=t[e]})),r},Ee=n=>{const t=[],r=[];return Pt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Ie=/[ _-]+/g;function xe(n){let t="";return n.replace(Ie," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const Oe=/[ _-]+/g,$e=/[ ]+/g;function je(n){return n.replace(/([A-Z]+)/g," $1").replace(Oe," ").trim().toLowerCase().replace($e,"-")}const Be=/[ _-]+/g,Ce=/[ ]+/g;function Se(n){return n.replace(/([A-Z]+)/g," $1").replace(Be," ").trim().toLowerCase().replace(Ce,"_")}const Me=/[ _-]+/g;function Fe(n){return n.replace(/([A-Z]+)/g," $1").replace(Me," ").trim().toUpperCase()}const Re=/[ _-]+/g;function Te(n){return n.replace(/([A-Z]+)/g," $1").replace(Re," ").trim().toLowerCase()}function Pe(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function Ue(n,t=1){return n[n.length-t]}function Ne(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function Le(n,t=1){return n.slice(0,-1*t)}function _e(n,t=1){return n.substring(t)}function De(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function Ze(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function ke(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const qe=/%(?![\da-f]{2})/gi,Ve=/&/g,Ge=//g,We=/"/g;function ze(n){return decodeURIComponent(n.replace(qe,(()=>"%25")))}function He(n){return n.replace(Ve,"&").replace(Ge,"<").replace(Je,">").replace(We,""")}function Ke(n){return He(ze(n))}const Qe=/\S+/g,Xe=/\w+/g;function Ye(n){return n.match(Qe)||[]}function no(n){return n.match(Xe)||[]}const to=/\w+/g;function ro(n){return n[0].toUpperCase()}function eo(n){return ro(n)+_e(n)}function oo(n){return ro(n)+_e(n).toLowerCase()}function uo(n){return n.replace(to,(n=>eo(n)))}function co(n){return n.replace(to,(n=>oo(n)))}function io(n){return vr(n)?.name}function so(n){return!!c(n)&&"[object Arguments]"===n.toString()}function fo(n){return!c(n)}const ao=X("Map"),lo=Y(ao),ho=/Array/,go="Array";function po(n){if(n){const t=io(n);if(ho.test(t)&&t!==go)return!0}return!1}function mo(n,t){if(fo(n)||qt(n))return!1;if(y(n)||po(n))return!0;const r=n.length;if(!fo(r)||!pt(r)||r<0)return!1;if(t){const t=_(n);return!!t&&Sr(t,((n,t)=>t>=0&&pt(t)))}return!0}const wo=X("BigInt"),yo=Y(wo),bo=X("Boolean"),vo=Y(bo),Ao=X("ArrayBuffer"),Eo=Y(Ao);function Io(n,t){return!(!n||!t)&&n instanceof t}const xo=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function Oo(n){if(c(n)){const t=n?.constructor?.name;return xo.test(t)}return!1}const $o=X("Date"),jo=Y($o);function Bo(n){return mt(n)||y(n)?!o(n):z(n)?!ve(n):!c(n)}function Co(n){return!1===n}const So=X("Float32Array"),Mo=Y(So),Fo=X("Float64Array"),Ro=Y(Fo),{isInteger:To}=Number,Po=To,Uo=X("Int16Array"),No=Y(Uo),Lo=X("Int32Array"),_o=Y(Lo),Do=X("Int8Array"),Zo=Y(Do);function ko(n){return c(n)&&"function"==typeof n[Symbol.iterator]}function qo(n){return!!n&&n instanceof Promise}function Vo(n){return!!n&&(qo(n)||Gt(n)||Zt(n))}function Go(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Jo(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Wo(n,t){return!fo(n)&&!fo(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:zo}=Number,Ho=zo;function Ko(n,t){const r=vr(n),e=vr(t);return r===e&&r.name===e.name}function Qo(n){return!0===n}const Xo=X("Uint16Array"),Yo=Y(Xo),nu=X("Uint32Array"),tu=Y(nu),ru=X("Uint8Array"),eu=Y(ru),ou=X("Uint8ClampedArray"),uu=Y(ou),cu=X("WeakMap"),iu=Y(cu),su=void 0!==globalThis.Deno,fu=void 0!==globalThis.process&&process.versions&&process.versions.node;function au(n,t=!0){return Boolean(n)&&t}function lu(n,t=!0){return!1===Boolean(n)&&t}function hu(n,t,r,e){if(c(n)){if(qt(t))return r?ar(t,r,e):t(...e);if(z(t))return t[r]=n,t}}function gu(n,t){return Co(rn(n,t))}const pu=JSON;function du(n,t){if(n)return pu.parse(n,t)}const mu=pu.stringify;function wu(n,t,r){const e=globalThis.options||r;let o;return qt(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${mu(n)}\n\t\tExpected: ${mu(t)}`,e)}async function yu(n,t,r){const e=await n;return!(qt(t)&&!1===await t(e,r))&&!gu(e,t)||wu(e,t,r)}function bu(n,t,r){if(Vo(n)||Vo(t))return yu(n,t,r);return!(qt(t)&&!1===t(n,r))&&!gu(n,t)||wu(n,t,r)}function vu(n,t,r){const e=xr(n,(n=>qt(n)?n.bind(t):n));return r?Rt(r,e):e}function Au(n){if(n){if(tn(n))return zn(n);if(y(n))return t(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const Eu=globalThis.structuredClone;function Iu(n){return Eu(n)}function xu(n){if(z(n)){const t=_(n),r=t.length,e={};for(let o=0;oau(n)))}async function Ou(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);c(e)&&r.push(e)}return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);c(u)&&e(u)}return o}const u=qt(o.set);for await(const[r,e]of n){const i=await t(e,r,o,n);c(i)&&(u?o.set(r,i):o[r]=i)}return o}function $u(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);c(u)&&o(u)}return e}const o=qt(e.set);for(const[r,u]of n){const i=t(u,r,e,n);c(i)&&(o?e.set(r,i):e[r]=i)}return e}const ju=Jt(f,l,se,ie,$u,Ou);function Bu(...n){return Gt(n[0])?async function(...t){return Sr(n,(async n=>Sr(t,(async t=>n(t)))))}:function(...t){return Sr(n,(n=>Sr(t,(t=>n(t)))))}}function Cu(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=qt(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Su(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=qt(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Mu=Jt(M,F,fe,ae,Cu,Su);function Fu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Ru=Fu(s),Tu=Fu(j);function Pu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const Uu=Pu(a),Nu=Pu(B);function Lu(n,t){const r=Ar(n),e=r.push||r.add;if(e&&qt(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else qt(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function _u(n,t){const r={};return s(n,((n,e)=>{r[t[e]]=n})),r}function Du(n,t,r){if(fo(n)||fo(t))return!1;if(mt(n))return mt(t)?n.includes(t,r):pe(t)?t.test(n):qt(t)?Boolean(t(n)):Sr(t,(t=>Boolean(Du(n,t))));if(y(n)){if(mt(t))return n.includes(t,r);if(pe(t))return Sr(n,(n=>n.test(t)));if(y(t))return Sr(t,(t=>Boolean(Du(n,t))))}return!1}const Zu=xt(/\./),ku=(n,t,r)=>(t&&!c(n[t])&&(n[t]=r),n);class qu{list=I(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,Xt),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const Vu=I(qu);function Gu(n,t){return Vu.set(n,t)}function Ju(){er(setTimeout(rr,0),(n=>{Vu.remove(n)}))}function Wu(n,...t){return Wt(t,(t=>{Wt(t,((t,r)=>{if(n[r]&&(z(t)||y(t)||t.forEach))return Wu(n[r],t);n[r]=t}))})),n}class zu{static models={};constructor(n,t){c(t)?(Rt(this,t),this.modelName=n,zu.models.set(n,t)):Rt(this,n)}}function Hu(n,t){return c(t)?I(zu,[n,t]):V(n,zu.models)}function Ku(n,t){return[n,t]}function Qu(n,t,r){const e=n.length,o=[];for(let u=0;uC(r,(r=>rn(n[r],t[r])));function tc(n,t,r){return t&&z(n)||pt(t)&&y(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function rc(n,t,r){return pt(r)&&y(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class ec{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Pt(n,(t=>{n[t]=new ec(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new ec(r),!0)})}}const oc=()=>[],uc=()=>({}),cc=()=>"";async function ic(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const lc=I(ac);class hc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function gc(n){return new hc(n)}export{zt as Chain,qu as Intervals,zu as Model,ec as Store,ur as Timers,ac as UniqID,hc as VirtualStorage,kr as add,Ct as after,ar as apply,we as arrayToRegex,_u as arraysToObject,St as ary,bu as assert,yu as assertAsync,Rt as assign,Mt as before,vu as bindAll,Ur as cacheNativeMethod,Wr as calcProgress,xe as camelCase,Ht as chain,n as chunk,Ne as chunkString,Au as clear,t as clearArray,zn as clearBuffer,Ju as clearIntervals,sr as clearTimers,Iu as clone,r as cloneArray,Ar as cloneType,xu as compact,ce as compactKeys,ju as compactMap,f as compactMapArray,l as compactMapAsyncArray,ie as compactMapAsyncObject,se as compactMapObject,Qu as concurrent,Xu as concurrentStatus,I as construct,Q as constructorName,Hn as countBy,Kn as countKey,Qn as countWithoutKey,Kt as curry,Qt as curryRight,lr as debounce,qr as deduct,_r as defProp,x as difference,Vr as divide,O as drop,$ as dropRight,Wt as each,s as eachArray,a as eachAsyncArray,Tt as eachAsyncObject,Pt as eachObject,j as eachRight,B as eachRightAsync,v as ensureArray,Wn as ensureBuffer,me as escapeRegex,de as escapeRegexRegex,Sr as every,Bu as everyArg,C as everyArray,S as everyAsyncArray,$r as everyAsyncObject,jr as everyObject,nr as falsy,Mu as filter,M as filterArray,F as filterAsyncArray,ae as filterAsyncObject,fe as filterObject,Yn as findIndex,Xn as findIndexCache,nt as findItem,R as first,T as flatten,A as flattenDeep,Ru as flow,Uu as flowAsync,Nu as flowAsyncRight,Tu as flowRight,w as forEach,Ut as forEachAsync,Lu as forMap,_t as forOf,kt as forOfAsync,$u as forOfCompactMap,Ou as forOfCompactMapAsync,Br as forOfEvery,Cr as forOfEveryAsync,Cu as forOfFilter,Su as forOfFilterAsync,Er as forOfMap,Ir as forOfMapAsync,Jt as generateLoop,V as get,ue as getEntries,Et as getFileExtension,It as getFilename,it as getHighest,st as getLowest,Mn as getNumberInsertIndex,Lr as getPropDesc,Nr as getPropNames,vr as getType,io as getTypeName,ft as groupBy,Du as has,W as hasAnyKeys,Zu as hasDot,J as hasKeys,o as hasLength,Dr as hasProp,c as hasValue,He as htmlEntities,hr as ifInvoke,ku as ifNotAssign,hu as ifValue,gr as inAsync,pr as inSync,Gr as increment,at as indexBy,P as initial,Le as initialString,Pe as insertInRange,U as intersection,Gu as interval,Vu as intervals,le as invert,N as invokeArray,lt as invokeCollection,ht as invokeCollectionAsync,so as isArguments,y as isArray,Eo as isArrayBuffer,Ao as isArrayBufferCall,mo as isArrayLike,Gt as isAsync,Vt as isAsyncCall,yo as isBigInt,wo as isBigIntCall,vo as isBoolean,bo as isBooleanCall,tn as isBuffer,nn as isBufferCall,Io as isChild,Oo as isCloneable,H as isConstructor,K as isConstructorFactory,X as isConstructorNameFactory,jo as isDate,$o as isDateCall,su as isDeno,Bo as isEmpty,rn as isEqual,Mo as isF32,So as isF32Call,Ro as isF64,Fo as isF64Call,Co as isFalse,lu as isFalsy,Ot as isFileCSS,$t as isFileHTML,jt as isFileJS,Bt as isFileJSON,Po as isFloat,qt as isFunction,Zt as isGenerator,Dt as isGeneratorCall,No as isI16,Uo as isI16Call,_o as isI32,Lo as isI32Call,Zo as isI8,Do as isI8Call,ko as isIterable,Vo as isKindAsync,lo as isMap,ao as isMapCall,en as isMatchArray,he as isMatchObject,g as isNegative,fu as isNodejs,b as isNotArray,dt as isNotNumber,wt as isNotString,u as isNull,pt as isNumber,gt as isNumberCall,$n as isNumberEqual,Yr as isNumberInRange,ne as isNumberNotInRange,Go as isParent,z as isPlainObject,re as isPositive,Jo as isPrimitive,qo as isPromise,pe as isRegex,ge as isRegexCall,Wo as isRelated,Ho as isSafeInt,Zr as isSame,Ko as isSameType,Lt as isSet,Nt as isSetCall,mt as isString,Qo as isTrue,au as isTruthy,Y as isTypeFactory,po as isTypedArray,Yo as isU16,Xo as isU16Call,tu as isU32,nu as isU32Call,eu as isU8,uu as isU8C,ou as isU8CCall,ru as isU8Call,e as isUndefined,iu as isWeakMap,cu as isWeakMapCall,ee as isZero,du as jsonParse,je as kebabCase,_ as keys,un as largest,cn as last,Te as lowerCase,xr as map,sn as mapArray,fn as mapAsyncArray,yr as mapAsyncObject,br as mapObject,an as mapRightArray,ln as mapWhile,Wu as merge,Hu as model,Jr as multiply,dr as negate,fo as noValue,rr as noop,gu as notEqual,mr as nthArg,Ft as objectAssign,oe as objectEntries,ve as objectSize,ye as omit,wr as once,Tn as onlyUnique,Or as over,Mr as overEvery,Ku as pair,pn as partition,be as pick,bt as pluck,yt as pluckObject,Yu as promise,nc as propertyMatch,Hr as randomFloat,In as randomInt,m as range,d as rangeDown,p as rangeUp,ze as rawURLDecode,Fr as reArg,xt as regexTestFactory,Kr as remainder,wn as remove,yn as removeBy,De as replaceList,bn as rest,_e as restString,i as returnValue,vn as right,Ue as rightString,Bn as sample,Ke as sanitize,tc as setKey,rc as setValue,jn as shuffle,Sn as smallest,Se as snakeCase,ot as sortCollectionAlphabetically,At as sortCollectionAlphabeticallyReverse,ct as sortCollectionAscending,ut as sortCollectionAscendingFilter,rt as sortCollectionDescending,tt as sortCollectionDescendingFilter,gn as sortNumberAscending,mn as sortNumberDescening,et as sortObjectsAlphabetically,vt as sortObjectsAlphabeticallyReverse,Pn as sortUnique,mu as stringify,oc as stubArray,tr as stubFalse,uc as stubObject,cc as stubString,Yt as stubTrue,hn as subtract,Qr as subtractAll,dn as subtractReverse,Xr as sumAll,Fn as take,Rn as takeRight,Rr as throttle,ir as timer,cr as timers,er as times,ic as timesAsync,or as timesMap,sc as timesMapAsync,On as toArray,q as toPath,fc as toggle,Ye as tokenize,Ze as truncate,ke as truncateRight,Xt as truth,Jn as unZip,Ee as unZipObject,Nn as union,lc as uniqID,Un as unique,Ln as untilFalseArray,_n as untilTrueArray,Fe as upperCase,eo as upperFirst,uo as upperFirstAll,ro as upperFirstLetter,oo as upperFirstOnly,co as upperFirstOnlyAll,gc as virtualStorage,Dn as whileCompactMap,Zn as whileEachArray,kn as whileMapArray,qn as without,no as words,Tr as wrap,Vn as xor,Gn as zip,Ae as zipObject}; //# sourceMappingURL=basic.js.map diff --git a/build/module/basic.js.map b/build/module/basic.js.map index 900c41df..c514de93 100644 --- a/build/module/basic.js.map +++ b/build/module/basic.js.map @@ -1 +1 @@ -{"version":3,"file":"basic.js","sources":["../../source/arrays/chunk.js","../../source/arrays/clear.js","../../source/arrays/clone.js","../../source/types/isUndefined.js","../../source/utilities/hasLength.js","../../source/types/isNull.js","../../source/types/hasValue.js","../../source/utilities/returnValue.js","../../source/arrays/each.js","../../source/arrays/compactMap.js","../../source/arrays/eachAsync.js","../../source/arrays/compactMapAsync.js","../../source/numbers/isNegative.js","../../source/arrays/range.js","../../source/utilities/forEach.js","../../source/types/isArray.js","../../source/arrays/ensure.js","../../source/arrays/flattenDeep.js","../../source/classes/construct.js","../../source/arrays/difference.js","../../source/arrays/drop.js","../../source/arrays/dropRight.js","../../source/arrays/eachRight.js","../../source/arrays/eachRightAsync.js","../../source/arrays/every.js","../../source/arrays/everyAsync.js","../../source/arrays/filter.js","../../source/arrays/filterAsync.js","../../source/arrays/first.js","../../source/arrays/flatten.js","../../source/arrays/initial.js","../../source/arrays/intersect.js","../../source/objects/keys.js","../../source/utilities/toPath.js","../../source/utilities/get.js","../../source/objects/hasKeys.js","../../source/types/isPlainObject.js","../../source/types/isConstructor.js","../../source/types/isTypeFactory.js","../../source/types/isBuffer.js","../../source/utilities/isEqual.js","../../source/arrays/isMatch.js","../../source/arrays/largest.js","../../source/arrays/last.js","../../source/arrays/map.js","../../source/arrays/mapAsync.js","../../source/arrays/mapRight.js","../../source/arrays/mapWhile.js","../../source/math/subtract.js","../../source/arrays/sortNumberAscending.js","../../source/arrays/partition.js","../../source/math/subtractReverse.js","../../source/arrays/sortNumberDescening.js","../../source/arrays/remove.js","../../source/arrays/rest.js","../../source/arrays/right.js","../../source/math/randomInt.js","../../source/internal/array.js","../../source/numbers/isNumberEqual.js","../../source/arrays/shuffle.js","../../source/arrays/sample.js","../../source/arrays/smallest.js","../../source/arrays/getNumberInsertIndex.js","../../source/arrays/take.js","../../source/arrays/takeRight.js","../../source/arrays/unique.js","../../source/arrays/union.js","../../source/arrays/untilFalse.js","../../source/arrays/untilTrue.js","../../source/arrays/whileCompactMap.js","../../source/arrays/whileEach.js","../../source/arrays/whileMap.js","../../source/arrays/without.js","../../source/arrays/xor.js","../../source/arrays/zip.js","../../source/buffers/ensure.js","../../source/buffers/clear.js","../../source/collection/countBy.js","../../source/collection/countKey.js","../../source/collection/countWithoutKey.js","../../source/collection/findIndexCache.js","../../source/collection/findIndex.js","../../source/collection/findItem.js","../../source/collection/sortCollectionDescending.js","../../source/collection/sortCollectionAlphabetically.js","../../source/collection/sortCollectionAscending.js","../../source/collection/getHighest.js","../../source/collection/getLowest.js","../../source/collection/groupBy.js","../../source/collection/indexBy.js","../../source/collection/invoke.js","../../source/collection/invokeAsync.js","../../source/types/isNumber.js","../../source/types/isString.js","../../source/objects/pluckObject.js","../../source/collection/pluck.js","../../source/collection/sortCollectionAlphabeticallyReverse.js","../../source/files/getExtension.js","../../source/files/getFilename.js","../../source/internal/regexTestFactory.js","../../source/files/isFileCSS.js","../../source/files/isFileHTML.js","../../source/files/isFileJS.js","../../source/files/isFileJSON.js","../../source/functions/after.js","../../source/functions/ary.js","../../source/functions/before.js","../../source/objects/assign.js","../../source/objects/eachAsync.js","../../source/objects/each.js","../../source/utilities/forEachAsync.js","../../source/types/isSet.js","../../source/utilities/forOf.js","../../source/types/isGenerator.js","../../source/utilities/forOfAsync.js","../../source/types/isFunction.js","../../source/types/isAsync.js","../../source/utilities/generateLoop.js","../../source/utilities/each.js","../../source/functions/chain.js","../../source/functions/curry.js","../../source/functions/curryRight.js","../../source/utilities/stubTrue.js","../../source/utilities/stubFalse.js","../../source/utilities/noop.js","../../source/utilities/times.js","../../source/utilities/timer.js","../../source/internal/apply.js","../../source/functions/debounce.js","../../source/functions/ifInvoke.js","../../source/functions/inAsync.js","../../source/functions/inSync.js","../../source/functions/negate.js","../../source/functions/nthArg.js","../../source/functions/once.js","../../source/objects/mapAsync.js","../../source/objects/map.js","../../source/types/getType.js","../../source/types/cloneType.js","../../source/utilities/forOfMap.js","../../source/utilities/forOfMapAsync.js","../../source/utilities/map.js","../../source/functions/over.js","../../source/objects/everyAsync.js","../../source/objects/every.js","../../source/utilities/forOfEvery.js","../../source/utilities/forOfEveryAsync.js","../../source/utilities/every.js","../../source/functions/overEvery.js","../../source/functions/rearged.js","../../source/functions/throttle.js","../../source/functions/wrap.js","../../source/utilities/cacheNativeMethod.js","../../source/internal/object.js","../../source/internal/isSame.js","../../source/math/add.js","../../source/math/deduct.js","../../source/math/divide.js","../../source/math/increment.js","../../source/math/multiple.js","../../source/math/progress.js","../../source/math/randomFloat.js","../../source/math/remainder.js","../../source/math/subtractAll.js","../../source/math/sumAll.js","../../source/numbers/isNumberInRange.js","../../source/numbers/isNumberNotInRange.js","../../source/numbers/isPositive.js","../../source/numbers/isZero.js","../../source/objects/getEntries.js","../../source/objects/compactKeys.js","../../source/objects/compactMapAsync.js","../../source/objects/compactMap.js","../../source/objects/filter.js","../../source/objects/filterAsync.js","../../source/objects/invert.js","../../source/objects/isMatch.js","../../source/types/isRegex.js","../../source/regexps/escapeRegex.js","../../source/regexps/arrayToRegex.js","../../source/objects/omit.js","../../source/objects/pick.js","../../source/objects/size.js","../../source/objects/zip.js","../../source/strings/camelCase.js","../../source/strings/kebabCase.js","../../source/strings/snakeCase.js","../../source/strings/upperCase.js","../../source/strings/lowerCase.js","../../source/strings/range.js","../../source/strings/replace.js","../../source/strings/truncate.js","../../source/strings/sanitize.js","../../source/strings/tokenize.js","../../source/strings/typography.js","../../source/types/getTypeName.js","../../source/types/isArguments.js","../../source/types/noValue.js","../../source/types/isMap.js","../../source/types/isTypedArray.js","../../source/types/isArrayLike.js","../../source/types/isBigInt.js","../../source/types/isBoolean.js","../../source/types/isArrayBuffer.js","../../source/types/isChild.js","../../source/types/isCloneable.js","../../source/types/isDate.js","../../source/types/isEmpty.js","../../source/types/isFalse.js","../../source/types/isF32.js","../../source/types/isF64.js","../../source/types/isFloat.js","../../source/types/isI16.js","../../source/types/isI32.js","../../source/types/isI8.js","../../source/types/isIterable.js","../../source/types/isPromise.js","../../source/types/isKindAsync.js","../../source/types/isParent.js","../../source/types/isPrimitive.js","../../source/types/isRelated.js","../../source/types/isSafeInt.js","../../source/types/isSameType.js","../../source/types/isTrue.js","../../source/types/isU16.js","../../source/types/isU32.js","../../source/types/isU8.js","../../source/types/isU8C.js","../../source/types/isWeakMap.js","../../source/types/isDeno.js","../../source/types/isNode.js","../../source/types/isTruthy.js","../../source/types/isFalsy.js","../../source/utilities/ifValue.js","../../source/utilities/notEqual.js","../../source/utilities/json.js","../../source/utilities/assert.js","../../source/utilities/bindAll.js","../../source/utilities/clear.js","../../source/utilities/clone.js","../../source/utilities/compact.js","../../source/utilities/forOfCompactMapAsync.js","../../source/utilities/forOfCompactMap.js","../../source/utilities/compactMap.js","../../source/utilities/everyArg.js","../../source/utilities/forOfFilter.js","../../source/utilities/forOfFilterAsync.js","../../source/utilities/filter.js","../../source/utilities/flow.js","../../source/utilities/flowAsync.js","../../source/utilities/forMap.js","../../source/utilities/arraysToObject.js","../../source/utilities/has.js","../../source/utilities/hasDot.js","../../source/utilities/ifNotAssign.js","../../source/utilities/interval.js","../../source/utilities/merge.js","../../source/utilities/model.js","../../source/utilities/pair.js","../../source/utilities/concurrent.js","../../source/utilities/concurrentStatus.js","../../source/utilities/promise.js","../../source/utilities/propertyMatch.js","../../source/utilities/setKey.js","../../source/utilities/setValue.js","../../source/utilities/store.js","../../source/utilities/stubArray.js","../../source/utilities/stubObject.js","../../source/utilities/stubString.js","../../source/utilities/timesAsync.js","../../source/utilities/toggle.js","../../source/utilities/uid.js","../../source/utilities/virtualStorage.js"],"sourcesContent":["/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invoke\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invoke(collection, property, value) {\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * (async () => {\n * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]);\n * });\n *\n * @example\n * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invokeAsync(collection, property, value) {\n\treturn mapAsyncArray(collection, async (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n"],"names":["chunk","array","size","chunked","index","forEach","item","key","push","clearArray","source","length","cloneArray","slice","isUndefined","undefined","hasLength","Boolean","isNull","hasValue","returnValue","eachArray","iteratee","thisCall","additionalArg","arrayLength","call","compactMapArray","results","arrayOriginal","returned","async","eachAsyncArray","compactMapAsyncArray","result","sign","Math","isNegative","rangeUp","start","end","step","sourceArray","position","rangeDown","range","callback","isArray","Array","isNotArray","ensureArray","flattenDeep","flat","Infinity","reflectConstruct","Reflect","construct","target","argumentsList","newTarget","args","difference","sources","differencesMap","Map","differences","currentArray","parentIndex","child","childIndex","childRoot","get","count","set","drop","amount","upTo","splice","dropRight","eachRight","thisBind","eachRightAsync","everyArray","sourceLength","everyAsyncArray","filterArray","filterAsyncArray","first","flatten","level","i","reduce","previousValue","currentValue","concat","initial","intersection","arrays","otherItem","includes","objectKeys","Object","keys","regexToPath","regexCloseBracket","emptyString","toPath","replace","split","propertyString","link","hasOwn","hasKeys","properties","pathArray","lastPath","pop","initialPathObject","hasAnyKeys","find","isPlainObject","value","constructor","toString","trim","isConstructor","isConstructorFactory","constructorName","name","isConstructorNameFactory","isTypeFactory","method","primarySource","otherSources","isBufferCall","isBuffer","isEqual","equals","sourceProperties","isMatchArray","compareArray","mathNativeMax","max","largest","last","indexFrom","mapArray","mapAsyncArray","mapRightArray","trueIndex","mapWhile","subtract","minuend","subtrahend","sortNumberAscending","numberList","sort","partition","predicate","rejected","subtractReverse","sortNumberDescening","remove","removeThese","removeBy","rest","right","floor","random","randomInt","min","arrayFrom","from","toArray","arrayLike","mapFn","thisArg","isNumberEqual","shuffle","shuffleArray","sample","sampleArray","used","mathNativeMin","smallest","getNumberInsertIndex","insertIndex","take","endIndex","takeRight","indexRight","onlyUnique","indexOf","sortUnique","unique","isSorted","filter","union","untilFalseArray","untilTrueArray","whileCompactMap","whileEachArray","whileMapArray","without","sourcesSet","Set","has","xor","xorMap","xored","zip","map","unZip","arraySet","ensureBuffer","Buffer","alloc","clearBuffer","fill","countBy","collection","object","countKey","propertyName","countWithoutKey","findIndexCache","element","indexMatch","findIndex","id","findItem","sortCollectionDescendingFilter","previous","next","ifMatch","previousKey","nextKey","sortCollectionDescending","sortObjectsAlphabetically","localeCompare","sortCollectionAlphabetically","sortCollectionAscendingFilter","sortCollectionAscending","getHighest","getLowest","groupBy","sortedObject","indexBy","invoke","property","invokeAsync","isNumberCall","isNumber","isNotNumber","isString","String","isNotString","pluckObject","targets","pluck","sortObjectsAlphabeticallyReverse","sortCollectionAlphabeticallyReverse","getFileExtension","substring","lastIndexOf","getFilename","regexTestFactory","regexType","test","isFileCSS","isFileHTML","isFileJS","isFileJSON","after","callable","point","ary","before","objectAssign","assign","eachAsyncObject","propertyCount","eachObject","objectKeysArray","forEachAsync","values","valuesLength","isSetCall","isSet","forOf","isGeneratorCall","isGenerator","forOfAsync","generatorArgs","isFunction","Function","isAsyncCall","isAsync","generateLoop","arrayLoop","arrayLoopAsync","objectLoop","objectLoopAsync","forOfLoop","forOfLoopAsync","argument1","argument2","argument3","isIterateeAsync","each","Chain","methods","this","addChainMethod","thisChain","methodName","setValue","done","chain","config","curry","arity","curries","curried","curryArgs","curryRight","unshift","truth","stubTrue","falsy","stubFalse","noop","times","timesMap","Timers","list","clearTimeout","delete","time","currentThis","setTimeout","clear","timers","timer","clearTimers","applyNative","apply","thisArgument","debounce","debounced","bind","ifInvoke","inAsync","firstArgument","inSync","negate","nthArg","once","mapAsyncObject","thisObject","mapObject","original","getType","cloneType","sourceType","forOfMap","resultsObject","methodPush","add","methodPushBound","methodSet","forOfMapAsync","resultsGenerator","over","iteratees","everyAsyncObject","everyObject","forOfEvery","forOfEveryAsync","every","overEvery","predicates","arg","reArg","indexes","throttle","throttled","shouldThrottle","wrap","wrapper","functionPrototype","prototype","cacheNativeMethod","getPropNames","getOwnPropertyNames","getPropDesc","getOwnPropertyDescriptor","defProp","defineProperty","hasProp","hasOwnProperty","isSame","is","augend","addend","deduct","divide","increment","multiply","calcProgress","total","currentAmount","randomFloat","remainder","subtractAll","a","b","sumAll","isNumberInRange","isNumberNotInRange","isPositive","isZero","objectEntries","entries","getEntries","compactKeys","compactedKeys","compactMapAsyncObject","compactMapObject","filterObject","filterAsyncObject","invert","isMatchObject","sourceKeys","targetKeys","isRegexCall","isRegex","escapeRegexRegex","escapeRegex","arrayToRegex","makeSafe","RegExp","join","omit","blacklist","blacklistRegex","numberToString","pick","whitelist","objectSize","zipObject","zipedObject","unZipObject","unZippedKeys","normalizeCase","camelCase","toLowerCase","toUpperCase","space","kebabCase","snakeCase","upperCase","lowerCase","insertInRange","string","text","rightString","chunkString","match","initialString","restString","replaceList","words","truncate","maxLength","stringLength","breakAll","breakAllLength","truncateDown","truncateRight","truncateUp","rawURLDecodeRegex","andRegex","lessThanRegex","moreThanRegex","doubleQuoteRegex","rawURLDecode","decodeURIComponent","htmlEntities","sanitize","tokenizeRegEx","wordsRegEx","tokenize","getWords","upperFirstLetter","upperFirst","upperFirstOnly","upperFirstAll","upperFirstOnlyAll","getTypeName","isArguments","noValue","isMapCall","isMap","typedArrayRegex","arrayConstructorName","isTypedArray","isArrayLike","strictFlag","isBigIntCall","isBigInt","isBooleanCall","isBoolean","isArrayBufferCall","isArrayBuffer","isChild","sourceChild","targetParent","constructorNames","isCloneable","isDateCall","isDate","isEmpty","isFalse","isF32Call","isF32","isF64Call","isF64","isInteger","Number","isFloat","isI16Call","isI16","isI32Call","isI32","isI8Call","isI8","isIterable","Symbol","iterator","isPromise","Promise","isKindAsync","isParent","sourceParent","targetChild","isPrimitive","type","isRelated","targetOne","targetTwo","isSafeInteger","isSafeInt","isSameType","other","otherType","isTrue","isU16Call","isU16","isU32Call","isU32","isU8Call","isU8","isU8CCall","isU8C","isWeakMapCall","isWeakMap","isDeno","globalThis","Deno","isNodejs","process","versions","node","isTruthy","returnIfTrue","isFalsy","ifValue","optional","notEqual","jsonNative","JSON","jsonParse","reviver","parse","stringify","createAssertError","expected","localOptions","options","errorTitle","title","file","Error","assertAsync","sourceArg","assert","bindAll","bindThis","targetAssign","structuredCloneSafe","structuredClone","clone","compact","sourceKeysLength","targetObject","keyName","forOfCompactMapAsync","forOfCompactMap","compactMap","everyArg","forOfFilter","forOfFilterAsync","returnFlow","flow","flowRight","flowAsync","flowAsyncRight","forMap","cloned","methodBound","arraysToObject","search","hasDot","ifNotAssign","rootObject","equalThis","Intervals","clearInterval","setInterval","intervals","interval","clearIntervals","merge","currentSource","sourceItem","sourceKey","Model","static","modelName","modelValue","models","model","pair","concurrent","queue","all","concurrentStatus","allSettled","promise","propertyMatch","compared","setKey","Store","data","Proxy","proxySource","console","log","stubArray","stubObject","stubString","timesAsync","timesMapAsync","toggle","on","off","UniqID","totalActive","freed","totalFree","shift","free","isActive","shouldReset","reset","uniqID","VirtualStorage","initialObject","items","getItem","setItem","removeItem","virtualStorage"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"basic.js","sources":["../../source/arrays/chunk.js","../../source/arrays/clear.js","../../source/arrays/clone.js","../../source/types/isUndefined.js","../../source/utilities/hasLength.js","../../source/types/isNull.js","../../source/types/hasValue.js","../../source/utilities/returnValue.js","../../source/arrays/each.js","../../source/arrays/compactMap.js","../../source/arrays/eachAsync.js","../../source/arrays/compactMapAsync.js","../../source/numbers/isNegative.js","../../source/arrays/range.js","../../source/utilities/forEach.js","../../source/types/isArray.js","../../source/arrays/ensure.js","../../source/arrays/flattenDeep.js","../../source/classes/construct.js","../../source/arrays/difference.js","../../source/arrays/drop.js","../../source/arrays/dropRight.js","../../source/arrays/eachRight.js","../../source/arrays/eachRightAsync.js","../../source/arrays/every.js","../../source/arrays/everyAsync.js","../../source/arrays/filter.js","../../source/arrays/filterAsync.js","../../source/arrays/first.js","../../source/arrays/flatten.js","../../source/arrays/initial.js","../../source/arrays/intersect.js","../../source/arrays/invoke.js","../../source/objects/keys.js","../../source/utilities/toPath.js","../../source/utilities/get.js","../../source/objects/hasKeys.js","../../source/types/isPlainObject.js","../../source/types/isConstructor.js","../../source/types/isTypeFactory.js","../../source/types/isBuffer.js","../../source/utilities/isEqual.js","../../source/arrays/isMatch.js","../../source/arrays/largest.js","../../source/arrays/last.js","../../source/arrays/map.js","../../source/arrays/mapAsync.js","../../source/arrays/mapRight.js","../../source/arrays/mapWhile.js","../../source/math/subtract.js","../../source/arrays/sortNumberAscending.js","../../source/arrays/partition.js","../../source/math/subtractReverse.js","../../source/arrays/sortNumberDescening.js","../../source/arrays/remove.js","../../source/arrays/rest.js","../../source/arrays/right.js","../../source/math/randomInt.js","../../source/internal/array.js","../../source/numbers/isNumberEqual.js","../../source/arrays/shuffle.js","../../source/arrays/sample.js","../../source/arrays/smallest.js","../../source/arrays/getNumberInsertIndex.js","../../source/arrays/take.js","../../source/arrays/takeRight.js","../../source/arrays/unique.js","../../source/arrays/union.js","../../source/arrays/untilFalse.js","../../source/arrays/untilTrue.js","../../source/arrays/whileCompactMap.js","../../source/arrays/whileEach.js","../../source/arrays/whileMap.js","../../source/arrays/without.js","../../source/arrays/xor.js","../../source/arrays/zip.js","../../source/buffers/ensure.js","../../source/buffers/clear.js","../../source/collection/countBy.js","../../source/collection/countKey.js","../../source/collection/countWithoutKey.js","../../source/collection/findIndexCache.js","../../source/collection/findIndex.js","../../source/collection/findItem.js","../../source/collection/sortCollectionDescending.js","../../source/collection/sortCollectionAlphabetically.js","../../source/collection/sortCollectionAscending.js","../../source/collection/getHighest.js","../../source/collection/getLowest.js","../../source/collection/groupBy.js","../../source/collection/indexBy.js","../../source/collection/invoke.js","../../source/collection/invokeAsync.js","../../source/types/isNumber.js","../../source/types/isString.js","../../source/objects/pluckObject.js","../../source/collection/pluck.js","../../source/collection/sortCollectionAlphabeticallyReverse.js","../../source/files/getExtension.js","../../source/files/getFilename.js","../../source/internal/regexTestFactory.js","../../source/files/isFileCSS.js","../../source/files/isFileHTML.js","../../source/files/isFileJS.js","../../source/files/isFileJSON.js","../../source/functions/after.js","../../source/functions/ary.js","../../source/functions/before.js","../../source/objects/assign.js","../../source/objects/eachAsync.js","../../source/objects/each.js","../../source/utilities/forEachAsync.js","../../source/types/isSet.js","../../source/utilities/forOf.js","../../source/types/isGenerator.js","../../source/utilities/forOfAsync.js","../../source/types/isFunction.js","../../source/types/isAsync.js","../../source/utilities/generateLoop.js","../../source/utilities/each.js","../../source/functions/chain.js","../../source/functions/curry.js","../../source/functions/curryRight.js","../../source/utilities/stubTrue.js","../../source/utilities/stubFalse.js","../../source/utilities/noop.js","../../source/utilities/times.js","../../source/utilities/timer.js","../../source/internal/apply.js","../../source/functions/debounce.js","../../source/functions/ifInvoke.js","../../source/functions/inAsync.js","../../source/functions/inSync.js","../../source/functions/negate.js","../../source/functions/nthArg.js","../../source/functions/once.js","../../source/objects/mapAsync.js","../../source/objects/map.js","../../source/types/getType.js","../../source/types/cloneType.js","../../source/utilities/forOfMap.js","../../source/utilities/forOfMapAsync.js","../../source/utilities/map.js","../../source/functions/over.js","../../source/objects/everyAsync.js","../../source/objects/every.js","../../source/utilities/forOfEvery.js","../../source/utilities/forOfEveryAsync.js","../../source/utilities/every.js","../../source/functions/overEvery.js","../../source/functions/rearged.js","../../source/functions/throttle.js","../../source/functions/wrap.js","../../source/utilities/cacheNativeMethod.js","../../source/internal/object.js","../../source/internal/isSame.js","../../source/math/add.js","../../source/math/deduct.js","../../source/math/divide.js","../../source/math/increment.js","../../source/math/multiple.js","../../source/math/progress.js","../../source/math/randomFloat.js","../../source/math/remainder.js","../../source/math/subtractAll.js","../../source/math/sumAll.js","../../source/numbers/isNumberInRange.js","../../source/numbers/isNumberNotInRange.js","../../source/numbers/isPositive.js","../../source/numbers/isZero.js","../../source/objects/getEntries.js","../../source/objects/compactKeys.js","../../source/objects/compactMapAsync.js","../../source/objects/compactMap.js","../../source/objects/filter.js","../../source/objects/filterAsync.js","../../source/objects/invert.js","../../source/objects/isMatch.js","../../source/types/isRegex.js","../../source/regexps/escapeRegex.js","../../source/regexps/arrayToRegex.js","../../source/objects/omit.js","../../source/objects/pick.js","../../source/objects/size.js","../../source/objects/zip.js","../../source/strings/camelCase.js","../../source/strings/kebabCase.js","../../source/strings/snakeCase.js","../../source/strings/upperCase.js","../../source/strings/lowerCase.js","../../source/strings/range.js","../../source/strings/replace.js","../../source/strings/truncate.js","../../source/strings/sanitize.js","../../source/strings/tokenize.js","../../source/strings/typography.js","../../source/types/getTypeName.js","../../source/types/isArguments.js","../../source/types/noValue.js","../../source/types/isMap.js","../../source/types/isTypedArray.js","../../source/types/isArrayLike.js","../../source/types/isBigInt.js","../../source/types/isBoolean.js","../../source/types/isArrayBuffer.js","../../source/types/isChild.js","../../source/types/isCloneable.js","../../source/types/isDate.js","../../source/types/isEmpty.js","../../source/types/isFalse.js","../../source/types/isF32.js","../../source/types/isF64.js","../../source/types/isFloat.js","../../source/types/isI16.js","../../source/types/isI32.js","../../source/types/isI8.js","../../source/types/isIterable.js","../../source/types/isPromise.js","../../source/types/isKindAsync.js","../../source/types/isParent.js","../../source/types/isPrimitive.js","../../source/types/isRelated.js","../../source/types/isSafeInt.js","../../source/types/isSameType.js","../../source/types/isTrue.js","../../source/types/isU16.js","../../source/types/isU32.js","../../source/types/isU8.js","../../source/types/isU8C.js","../../source/types/isWeakMap.js","../../source/types/isDeno.js","../../source/types/isNode.js","../../source/types/isTruthy.js","../../source/types/isFalsy.js","../../source/utilities/ifValue.js","../../source/utilities/notEqual.js","../../source/utilities/json.js","../../source/utilities/assert.js","../../source/utilities/bindAll.js","../../source/utilities/clear.js","../../source/utilities/clone.js","../../source/utilities/compact.js","../../source/utilities/forOfCompactMapAsync.js","../../source/utilities/forOfCompactMap.js","../../source/utilities/compactMap.js","../../source/utilities/everyArg.js","../../source/utilities/forOfFilter.js","../../source/utilities/forOfFilterAsync.js","../../source/utilities/filter.js","../../source/utilities/flow.js","../../source/utilities/flowAsync.js","../../source/utilities/forMap.js","../../source/utilities/arraysToObject.js","../../source/utilities/has.js","../../source/utilities/hasDot.js","../../source/utilities/ifNotAssign.js","../../source/utilities/interval.js","../../source/utilities/merge.js","../../source/utilities/model.js","../../source/utilities/pair.js","../../source/utilities/concurrent.js","../../source/utilities/concurrentStatus.js","../../source/utilities/promise.js","../../source/utilities/propertyMatch.js","../../source/utilities/setKey.js","../../source/utilities/setValue.js","../../source/utilities/store.js","../../source/utilities/stubArray.js","../../source/utilities/stubObject.js","../../source/utilities/stubString.js","../../source/utilities/timesAsync.js","../../source/utilities/toggle.js","../../source/utilities/uid.js","../../source/utilities/virtualStorage.js"],"sourcesContent":["/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Invoke each function in the given array.\n *\n * @function invokeArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { invokeArray, assert } from '@universalweb/acid';\n * function test(arg){\n * \treturn [this, arg];\n * }\n * const results = invokeArray([test], 1, test);\n * assert(results, [test, 1]);\n */\nexport function invokeArray(source, arg, thisCall) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index].call(thisCall, arg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index](arg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollection\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * import { invokeCollection, assert } from '@universalweb/acid';\n * const results = invokeCollection([{\n *\ttest(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollection(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapArray(collection, (item, index) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollectionAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * import { invokeCollectionAsync, assert } from '@universalweb/acid';\n * const results = await invokeCollectionAsync([{\n *\tasync test(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollectionAsync(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapAsyncArray(collection, (item) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapAsyncArray(collection, async (item) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n"],"names":["chunk","array","size","chunked","index","forEach","item","key","push","clearArray","source","length","cloneArray","slice","isUndefined","undefined","hasLength","Boolean","isNull","hasValue","returnValue","eachArray","iteratee","thisCall","additionalArg","arrayLength","call","compactMapArray","results","arrayOriginal","returned","async","eachAsyncArray","compactMapAsyncArray","result","sign","Math","isNegative","rangeUp","start","end","step","sourceArray","position","rangeDown","range","callback","isArray","Array","isNotArray","ensureArray","flattenDeep","flat","Infinity","reflectConstruct","Reflect","construct","target","argumentsList","newTarget","args","difference","sources","differencesMap","Map","differences","currentArray","parentIndex","child","childIndex","childRoot","get","count","set","drop","amount","upTo","splice","dropRight","eachRight","thisBind","eachRightAsync","everyArray","sourceLength","everyAsyncArray","filterArray","filterAsyncArray","first","flatten","level","i","reduce","previousValue","currentValue","concat","initial","intersection","arrays","otherItem","includes","invokeArray","arg","objectKeys","Object","keys","regexToPath","regexCloseBracket","emptyString","toPath","replace","split","propertyString","link","hasOwn","hasKeys","properties","pathArray","lastPath","pop","initialPathObject","hasAnyKeys","find","isPlainObject","value","constructor","toString","trim","isConstructor","isConstructorFactory","constructorName","name","isConstructorNameFactory","isTypeFactory","method","primarySource","otherSources","isBufferCall","isBuffer","isEqual","equals","sourceProperties","isMatchArray","compareArray","mathNativeMax","max","largest","last","indexFrom","mapArray","mapAsyncArray","mapRightArray","trueIndex","mapWhile","subtract","minuend","subtrahend","sortNumberAscending","numberList","sort","partition","predicate","rejected","subtractReverse","sortNumberDescening","remove","removeThese","removeBy","rest","right","floor","random","randomInt","min","arrayFrom","from","toArray","arrayLike","mapFn","thisArg","isNumberEqual","shuffle","shuffleArray","sample","sampleArray","used","mathNativeMin","smallest","getNumberInsertIndex","insertIndex","take","endIndex","takeRight","indexRight","onlyUnique","indexOf","sortUnique","unique","isSorted","filter","union","untilFalseArray","untilTrueArray","whileCompactMap","whileEachArray","whileMapArray","without","sourcesSet","Set","has","xor","xorMap","xored","zip","map","unZip","arraySet","ensureBuffer","Buffer","alloc","clearBuffer","fill","countBy","collection","object","countKey","propertyName","countWithoutKey","findIndexCache","element","indexMatch","findIndex","id","findItem","sortCollectionDescendingFilter","previous","next","ifMatch","previousKey","nextKey","sortCollectionDescending","sortObjectsAlphabetically","localeCompare","sortCollectionAlphabetically","sortCollectionAscendingFilter","sortCollectionAscending","getHighest","getLowest","groupBy","sortedObject","indexBy","invokeCollection","property","invokeCollectionAsync","isNumberCall","isNumber","isNotNumber","isString","String","isNotString","pluckObject","targets","pluck","sortObjectsAlphabeticallyReverse","sortCollectionAlphabeticallyReverse","getFileExtension","substring","lastIndexOf","getFilename","regexTestFactory","regexType","test","isFileCSS","isFileHTML","isFileJS","isFileJSON","after","callable","point","ary","before","objectAssign","assign","eachAsyncObject","propertyCount","eachObject","objectKeysArray","forEachAsync","values","valuesLength","isSetCall","isSet","forOf","isGeneratorCall","isGenerator","forOfAsync","generatorArgs","isFunction","Function","isAsyncCall","isAsync","generateLoop","arrayLoop","arrayLoopAsync","objectLoop","objectLoopAsync","forOfLoop","forOfLoopAsync","argument1","argument2","argument3","isIterateeAsync","each","Chain","methods","this","addChainMethod","thisChain","methodName","setValue","done","chain","config","curry","arity","curries","curried","curryArgs","curryRight","unshift","truth","stubTrue","falsy","stubFalse","noop","times","timesMap","Timers","list","clearTimeout","delete","time","currentThis","setTimeout","clear","timers","timer","clearTimers","applyNative","apply","thisArgument","debounce","debounced","bind","ifInvoke","inAsync","firstArgument","inSync","negate","nthArg","once","mapAsyncObject","thisObject","mapObject","original","getType","cloneType","sourceType","forOfMap","resultsObject","methodPush","add","methodPushBound","methodSet","forOfMapAsync","resultsGenerator","over","iteratees","everyAsyncObject","everyObject","forOfEvery","forOfEveryAsync","every","overEvery","predicates","reArg","indexes","throttle","throttled","shouldThrottle","wrap","wrapper","functionPrototype","prototype","cacheNativeMethod","getPropNames","getOwnPropertyNames","getPropDesc","getOwnPropertyDescriptor","defProp","defineProperty","hasProp","hasOwnProperty","isSame","is","augend","addend","deduct","divide","increment","multiply","calcProgress","total","currentAmount","randomFloat","remainder","subtractAll","a","b","sumAll","isNumberInRange","isNumberNotInRange","isPositive","isZero","objectEntries","entries","getEntries","compactKeys","compactedKeys","compactMapAsyncObject","compactMapObject","filterObject","filterAsyncObject","invert","isMatchObject","sourceKeys","targetKeys","isRegexCall","isRegex","escapeRegexRegex","escapeRegex","arrayToRegex","makeSafe","RegExp","join","omit","blacklist","blacklistRegex","numberToString","pick","whitelist","objectSize","zipObject","zipedObject","unZipObject","unZippedKeys","normalizeCase","camelCase","toLowerCase","toUpperCase","space","kebabCase","snakeCase","upperCase","lowerCase","insertInRange","string","text","rightString","chunkString","match","initialString","restString","replaceList","words","truncate","maxLength","stringLength","breakAll","breakAllLength","truncateDown","truncateRight","truncateUp","rawURLDecodeRegex","andRegex","lessThanRegex","moreThanRegex","doubleQuoteRegex","rawURLDecode","decodeURIComponent","htmlEntities","sanitize","tokenizeRegEx","wordsRegEx","tokenize","getWords","upperFirstLetter","upperFirst","upperFirstOnly","upperFirstAll","upperFirstOnlyAll","getTypeName","isArguments","noValue","isMapCall","isMap","typedArrayRegex","arrayConstructorName","isTypedArray","isArrayLike","strictFlag","isBigIntCall","isBigInt","isBooleanCall","isBoolean","isArrayBufferCall","isArrayBuffer","isChild","sourceChild","targetParent","constructorNames","isCloneable","isDateCall","isDate","isEmpty","isFalse","isF32Call","isF32","isF64Call","isF64","isInteger","Number","isFloat","isI16Call","isI16","isI32Call","isI32","isI8Call","isI8","isIterable","Symbol","iterator","isPromise","Promise","isKindAsync","isParent","sourceParent","targetChild","isPrimitive","type","isRelated","targetOne","targetTwo","isSafeInteger","isSafeInt","isSameType","other","otherType","isTrue","isU16Call","isU16","isU32Call","isU32","isU8Call","isU8","isU8CCall","isU8C","isWeakMapCall","isWeakMap","isDeno","globalThis","Deno","isNodejs","process","versions","node","isTruthy","returnIfTrue","isFalsy","ifValue","optional","notEqual","jsonNative","JSON","jsonParse","reviver","parse","stringify","createAssertError","expected","localOptions","options","errorTitle","title","file","Error","assertAsync","sourceArg","assert","bindAll","bindThis","targetAssign","structuredCloneSafe","structuredClone","clone","compact","sourceKeysLength","targetObject","keyName","forOfCompactMapAsync","forOfCompactMap","compactMap","everyArg","forOfFilter","forOfFilterAsync","returnFlow","flow","flowRight","flowAsync","flowAsyncRight","forMap","cloned","methodBound","arraysToObject","search","hasDot","ifNotAssign","rootObject","equalThis","Intervals","clearInterval","setInterval","intervals","interval","clearIntervals","merge","currentSource","sourceItem","sourceKey","Model","static","modelName","modelValue","models","model","pair","concurrent","queue","all","concurrentStatus","allSettled","promise","propertyMatch","compared","setKey","Store","data","Proxy","proxySource","console","log","stubArray","stubObject","stubString","timesAsync","timesMapAsync","toggle","on","off","UniqID","totalActive","freed","totalFree","shift","free","isActive","shouldReset","reset","uniqID","VirtualStorage","initialObject","items","getItem","setItem","removeItem","virtualStorage"],"mappings":"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"} \ No newline at end of file diff --git a/build/module/browser/bundle.js b/build/module/browser/bundle.js index a85b05db..9d3549f5 100644 --- a/build/module/browser/bundle.js +++ b/build/module/browser/bundle.js @@ -790,6 +790,43 @@ function intersection(array, ...arrays) { }); } +/** + * Invoke each function in the given array. + * + * @function invokeArray + * @category array + * @type {Function} + * @param {Array} source - Array that will be looped through. + * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg. + * @param {*} thisCall - Iteratee called with thisCall as this. + * @param {*} additionalArg - An object to be given each time to the iteratee. + * @returns {Array} - The originally given array. + * + * @example + * import { invokeArray, assert } from '@universalweb/acid'; + * function test(arg){ + * return [this, arg]; + * } + * const results = invokeArray([test], 1, test); + * assert(results, [test, 1]); + */ +function invokeArray(source, arg, thisCall) { + if (!source) { + return; + } + const arrayLength = source.length; + if (hasValue(thisCall)) { + for (let index = 0; index < arrayLength; index++) { + source[index].call(thisCall, arg); + } + } else { + for (let index = 0; index < arrayLength; index++) { + source[index](arg); + } + } + return source; +} + /** * Get object's keys. * @@ -2307,7 +2344,7 @@ function indexBy(collection, propertyName = 'id') { /** * Invokes a function on the provided property name in each object in the collection. * - * @function invoke + * @function invokeCollection * @category collection * @type {Function} * @param {Array} collection - Collection from which method will be taken. @@ -2316,19 +2353,27 @@ function indexBy(collection, propertyName = 'id') { * @returns {Array} - Returns the results of the invoked method. * * @example - * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] + * import { invokeCollection, assert } from '@universalweb/acid'; + * const results = invokeCollection([{ + * test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); */ -function invoke(collection, property, value) { +function invokeCollection(collection, property, value, thisBind) { + if (thisBind) { + return mapArray(collection, (item, index) => { + return item[property].call(thisBind, value); + }); + } return mapArray(collection, (item, index) => { - return item[property](value, index); + return item[property](value); }); } /** * Asynchronously awaits & invokes a function on the provided property name in each object in the collection. * - * @function invokeAsync + * @function invokeCollectionAsync * @category collection * @type {Function} * @async @@ -2338,18 +2383,20 @@ function invoke(collection, property, value) { * @returns {Array} - Returns the results of the invoked method. * * @test - * (async () => { - * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]); - * }); - * - * @example - * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] - */ -function invokeAsync(collection, property, value) { - return mapAsyncArray(collection, async (item, index) => { - return item[property](value, index); + * import { invokeCollectionAsync, assert } from '@universalweb/acid'; + * const results = await invokeCollectionAsync([{ + * async test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); + */ +function invokeCollectionAsync(collection, property, value, thisBind) { + if (thisBind) { + return mapAsyncArray(collection, (item) => { + return item[property].call(thisBind, value); + }); + } + return mapAsyncArray(collection, async (item) => { + return item[property](value); }); } @@ -7765,5 +7812,5 @@ function isNodeList(source) { return (hasValue(source)) ? source.toString() === objectNodeList : false; } -export { Chain, Crate, Intervals, Model, Store, Timers, UniqID, VirtualStorage, add, after, append, apply, arrayToRegex, arraysToObject, ary, assert, assertAsync, assign, before, bindAll, cacheNativeMethod, calcProgress, camelCase, chain, chunk, chunkString, clear, clearArray, clearBuffer, clearIntervals, clearTimers, clone, cloneArray, cloneType, cnsl, cnslTheme, compact, compactKeys, compactMap, compactMapArray, compactMapAsyncArray, compactMapAsyncObject, compactMapObject, concurrent, concurrentStatus, construct, constructorName, countBy, countKey, countWithoutKey, crate, createFragment, curry, curryRight, debounce, deduct, defProp, difference, divide, drop, dropRight, each, eachArray, eachAsyncArray, eachAsyncObject, eachObject, eachRight, eachRightAsync, ensureArray, ensureBuffer, escapeRegex, escapeRegexRegex, eventAdd, eventRemove, every, everyArg, everyArray, everyAsyncArray, everyAsyncObject, everyObject, falsy, filter, filterArray, filterAsyncArray, filterAsyncObject, filterObject, findIndex, findIndexCache, findItem, first, flatten, flattenDeep, flow, flowAsync, flowAsyncRight, flowRight, forEach, forEachAsync, forMap, forOf, forOfAsync, forOfCompactMap, forOfCompactMapAsync, forOfEvery, forOfEveryAsync, forOfFilter, forOfFilterAsync, forOfMap, forOfMapAsync, generateLoop, get, getByClass, getById, getByTag, getEntries, getFileExtension, getFilename, getHighest, getLowest, getNumberInsertIndex, getPropDesc, getPropNames, getType, getTypeName, groupBy, has, hasAnyKeys, hasDot, hasKeys, hasLength, hasLocal, hasProp, hasValue, htmlEntities, ifInvoke, ifNotAssign, ifValue, importjs, inAsync, inSync, increment, indexBy, info, initial, initialString, insertInRange, intersection, interval, intervals, invert, invoke, invokeAsync, isAgent, isArguments, isArray, isArrayBuffer, isArrayBufferCall, isArrayLike, isAsync, isAsyncCall, isBigInt, isBigIntCall, isBoolean, isBooleanCall, isBuffer, isBufferCall, isChild, isCloneable, isConstructor, isConstructorFactory, isConstructorNameFactory, isDate, isDateCall, isDeno, isDocumentReady, isDom, isEmpty, isEnter, isEqual, isF32, isF32Call, isF64, isF64Call, isFalse, isFalsy, isFileCSS, isFileHTML, isFileJS, isFileJSON, isFloat, isFunction, isGenerator, isGeneratorCall, isHTMLCollection, isI16, isI16Call, isI32, isI32Call, isI8, isI8Call, isIterable, isKindAsync, isMap, isMapCall, isMatchArray, isMatchObject, isNegative, isNodeList, isNodejs, isNotArray, isNotNumber, isNotString, isNull, isNumber, isNumberCall, isNumberEqual, isNumberInRange, isNumberNotInRange, isParent, isPlainObject, isPositive, isPrimitive, isPromise, isRegex, isRegexCall, isRelated, isSafeInt, isSame, isSameType, isSet, isSetCall, isString, isTrue, isTruthy, isTypeFactory, isTypedArray, isU16, isU16Call, isU32, isU32Call, isU8, isU8C, isU8CCall, isU8Call, isUndefined, isWeakMap, isWeakMapCall, isZero, jsonParse, kebabCase, keys, largest, last, lowerCase, map, mapArray, mapAsyncArray, mapAsyncObject, mapObject, mapRightArray, mapWhile, merge, model, multiply, negate, noValue, nodeAttribute, noop, notEqual, nthArg, objectAssign, objectEntries, objectSize, omit, once, onlyUnique, over, overEvery, pair, partition, pick, pluck, pluckObject, promise, propertyMatch, querySelector, querySelectorAll, randomFloat, randomInt, range, rangeDown, rangeUp, rawURLDecode, reArg, regexTestFactory, remainder, remove, removeBy, replaceList, rest, restString, returnValue, right, rightString, sample, sanitize, saveDimensions, selector, setKey, setValue, shuffle, smallest, snakeCase, sortCollectionAlphabetically, sortCollectionAlphabeticallyReverse, sortCollectionAscending, sortCollectionAscendingFilter, sortCollectionDescending, sortCollectionDescendingFilter, sortNumberAscending, sortNumberDescening, sortObjectsAlphabetically, sortObjectsAlphabeticallyReverse, sortUnique, stringify, stubArray, stubFalse, stubObject, stubString, stubTrue, subtract, subtractAll, subtractReverse, sumAll, take, takeRight, themes, throttle, timer, timers, times, timesAsync, timesMap, timesMapAsync, toArray, toPath, toggle, tokenize, truncate, truncateRight, truth, unZip, unZipObject, union, uniqID, unique, untilFalseArray, untilTrueArray, updateDimensions, upperCase, upperFirst, upperFirstAll, upperFirstLetter, upperFirstOnly, upperFirstOnlyAll, virtualStorage, whileCompactMap, whileEachArray, whileMapArray, without, words, wrap, xor, zip, zipObject }; +export { Chain, Crate, Intervals, Model, Store, Timers, UniqID, VirtualStorage, add, after, append, apply, arrayToRegex, arraysToObject, ary, assert, assertAsync, assign, before, bindAll, cacheNativeMethod, calcProgress, camelCase, chain, chunk, chunkString, clear, clearArray, clearBuffer, clearIntervals, clearTimers, clone, cloneArray, cloneType, cnsl, cnslTheme, compact, compactKeys, compactMap, compactMapArray, compactMapAsyncArray, compactMapAsyncObject, compactMapObject, concurrent, concurrentStatus, construct, constructorName, countBy, countKey, countWithoutKey, crate, createFragment, curry, curryRight, debounce, deduct, defProp, difference, divide, drop, dropRight, each, eachArray, eachAsyncArray, eachAsyncObject, eachObject, eachRight, eachRightAsync, ensureArray, ensureBuffer, escapeRegex, escapeRegexRegex, eventAdd, eventRemove, every, everyArg, everyArray, everyAsyncArray, everyAsyncObject, everyObject, falsy, filter, filterArray, filterAsyncArray, filterAsyncObject, filterObject, findIndex, findIndexCache, findItem, first, flatten, flattenDeep, flow, flowAsync, flowAsyncRight, flowRight, forEach, forEachAsync, forMap, forOf, forOfAsync, forOfCompactMap, forOfCompactMapAsync, forOfEvery, forOfEveryAsync, forOfFilter, forOfFilterAsync, forOfMap, forOfMapAsync, generateLoop, get, getByClass, getById, getByTag, getEntries, getFileExtension, getFilename, getHighest, getLowest, getNumberInsertIndex, getPropDesc, getPropNames, getType, getTypeName, groupBy, has, hasAnyKeys, hasDot, hasKeys, hasLength, hasLocal, hasProp, hasValue, htmlEntities, ifInvoke, ifNotAssign, ifValue, importjs, inAsync, inSync, increment, indexBy, info, initial, initialString, insertInRange, intersection, interval, intervals, invert, invokeArray, invokeCollection, invokeCollectionAsync, isAgent, isArguments, isArray, isArrayBuffer, isArrayBufferCall, isArrayLike, isAsync, isAsyncCall, isBigInt, isBigIntCall, isBoolean, isBooleanCall, isBuffer, isBufferCall, isChild, isCloneable, isConstructor, isConstructorFactory, isConstructorNameFactory, isDate, isDateCall, isDeno, isDocumentReady, isDom, isEmpty, isEnter, isEqual, isF32, isF32Call, isF64, isF64Call, isFalse, isFalsy, isFileCSS, isFileHTML, isFileJS, isFileJSON, isFloat, isFunction, isGenerator, isGeneratorCall, isHTMLCollection, isI16, isI16Call, isI32, isI32Call, isI8, isI8Call, isIterable, isKindAsync, isMap, isMapCall, isMatchArray, isMatchObject, isNegative, isNodeList, isNodejs, isNotArray, isNotNumber, isNotString, isNull, isNumber, isNumberCall, isNumberEqual, isNumberInRange, isNumberNotInRange, isParent, isPlainObject, isPositive, isPrimitive, isPromise, isRegex, isRegexCall, isRelated, isSafeInt, isSame, isSameType, isSet, isSetCall, isString, isTrue, isTruthy, isTypeFactory, isTypedArray, isU16, isU16Call, isU32, isU32Call, isU8, isU8C, isU8CCall, isU8Call, isUndefined, isWeakMap, isWeakMapCall, isZero, jsonParse, kebabCase, keys, largest, last, lowerCase, map, mapArray, mapAsyncArray, mapAsyncObject, mapObject, mapRightArray, mapWhile, merge, model, multiply, negate, noValue, nodeAttribute, noop, notEqual, nthArg, objectAssign, objectEntries, objectSize, omit, once, onlyUnique, over, overEvery, pair, partition, pick, pluck, pluckObject, promise, propertyMatch, querySelector, querySelectorAll, randomFloat, randomInt, range, rangeDown, rangeUp, rawURLDecode, reArg, regexTestFactory, remainder, remove, removeBy, replaceList, rest, restString, returnValue, right, rightString, sample, sanitize, saveDimensions, selector, setKey, setValue, shuffle, smallest, snakeCase, sortCollectionAlphabetically, sortCollectionAlphabeticallyReverse, sortCollectionAscending, sortCollectionAscendingFilter, sortCollectionDescending, sortCollectionDescendingFilter, sortNumberAscending, sortNumberDescening, sortObjectsAlphabetically, sortObjectsAlphabeticallyReverse, sortUnique, stringify, stubArray, stubFalse, stubObject, stubString, stubTrue, subtract, subtractAll, subtractReverse, sumAll, take, takeRight, themes, throttle, timer, timers, times, timesAsync, timesMap, timesMapAsync, toArray, toPath, toggle, tokenize, truncate, truncateRight, truth, unZip, unZipObject, union, uniqID, unique, untilFalseArray, untilTrueArray, updateDimensions, upperCase, upperFirst, upperFirstAll, upperFirstLetter, upperFirstOnly, upperFirstOnlyAll, virtualStorage, whileCompactMap, whileEachArray, whileMapArray, without, words, wrap, xor, zip, zipObject }; //# sourceMappingURL=bundle.js.map diff --git a/build/module/browser/bundle.js.map b/build/module/browser/bundle.js.map index a66e3ff7..2ea6e115 100644 --- a/build/module/browser/bundle.js.map +++ b/build/module/browser/bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"bundle.js","sources":["../../../source/arrays/chunk.js","../../../source/arrays/clear.js","../../../source/arrays/clone.js","../../../source/types/isUndefined.js","../../../source/utilities/hasLength.js","../../../source/types/isNull.js","../../../source/types/hasValue.js","../../../source/utilities/returnValue.js","../../../source/arrays/each.js","../../../source/arrays/compactMap.js","../../../source/arrays/eachAsync.js","../../../source/arrays/compactMapAsync.js","../../../source/numbers/isNegative.js","../../../source/arrays/range.js","../../../source/utilities/forEach.js","../../../source/types/isArray.js","../../../source/arrays/ensure.js","../../../source/arrays/flattenDeep.js","../../../source/classes/construct.js","../../../source/arrays/difference.js","../../../source/arrays/drop.js","../../../source/arrays/dropRight.js","../../../source/arrays/eachRight.js","../../../source/arrays/eachRightAsync.js","../../../source/arrays/every.js","../../../source/arrays/everyAsync.js","../../../source/arrays/filter.js","../../../source/arrays/filterAsync.js","../../../source/arrays/first.js","../../../source/arrays/flatten.js","../../../source/arrays/initial.js","../../../source/arrays/intersect.js","../../../source/objects/keys.js","../../../source/utilities/toPath.js","../../../source/utilities/get.js","../../../source/objects/hasKeys.js","../../../source/types/isPlainObject.js","../../../source/types/isConstructor.js","../../../source/types/isTypeFactory.js","../../../source/types/isBuffer.js","../../../source/utilities/isEqual.js","../../../source/arrays/isMatch.js","../../../source/arrays/largest.js","../../../source/arrays/last.js","../../../source/arrays/map.js","../../../source/arrays/mapAsync.js","../../../source/arrays/mapRight.js","../../../source/arrays/mapWhile.js","../../../source/math/subtract.js","../../../source/arrays/sortNumberAscending.js","../../../source/arrays/partition.js","../../../source/math/subtractReverse.js","../../../source/arrays/sortNumberDescening.js","../../../source/arrays/remove.js","../../../source/arrays/rest.js","../../../source/arrays/right.js","../../../source/math/randomInt.js","../../../source/internal/array.js","../../../source/numbers/isNumberEqual.js","../../../source/arrays/shuffle.js","../../../source/arrays/sample.js","../../../source/arrays/smallest.js","../../../source/arrays/getNumberInsertIndex.js","../../../source/arrays/take.js","../../../source/arrays/takeRight.js","../../../source/arrays/unique.js","../../../source/arrays/union.js","../../../source/arrays/untilFalse.js","../../../source/arrays/untilTrue.js","../../../source/arrays/whileCompactMap.js","../../../source/arrays/whileEach.js","../../../source/arrays/whileMap.js","../../../source/arrays/without.js","../../../source/arrays/xor.js","../../../source/arrays/zip.js","../../../source/buffers/ensure.js","../../../source/buffers/clear.js","../../../source/collection/countBy.js","../../../source/collection/countKey.js","../../../source/collection/countWithoutKey.js","../../../source/collection/findIndexCache.js","../../../source/collection/findIndex.js","../../../source/collection/findItem.js","../../../source/collection/sortCollectionDescending.js","../../../source/collection/sortCollectionAlphabetically.js","../../../source/collection/sortCollectionAscending.js","../../../source/collection/getHighest.js","../../../source/collection/getLowest.js","../../../source/collection/groupBy.js","../../../source/collection/indexBy.js","../../../source/collection/invoke.js","../../../source/collection/invokeAsync.js","../../../source/types/isNumber.js","../../../source/types/isString.js","../../../source/objects/pluckObject.js","../../../source/collection/pluck.js","../../../source/collection/sortCollectionAlphabeticallyReverse.js","../../../source/files/getExtension.js","../../../source/files/getFilename.js","../../../source/internal/regexTestFactory.js","../../../source/files/isFileCSS.js","../../../source/files/isFileHTML.js","../../../source/files/isFileJS.js","../../../source/files/isFileJSON.js","../../../source/functions/after.js","../../../source/functions/ary.js","../../../source/functions/before.js","../../../source/objects/assign.js","../../../source/objects/eachAsync.js","../../../source/objects/each.js","../../../source/utilities/forEachAsync.js","../../../source/types/isSet.js","../../../source/utilities/forOf.js","../../../source/types/isGenerator.js","../../../source/utilities/forOfAsync.js","../../../source/types/isFunction.js","../../../source/types/isAsync.js","../../../source/utilities/generateLoop.js","../../../source/utilities/each.js","../../../source/functions/chain.js","../../../source/functions/curry.js","../../../source/functions/curryRight.js","../../../source/utilities/stubTrue.js","../../../source/utilities/stubFalse.js","../../../source/utilities/noop.js","../../../source/utilities/times.js","../../../source/utilities/timer.js","../../../source/internal/apply.js","../../../source/functions/debounce.js","../../../source/functions/ifInvoke.js","../../../source/functions/inAsync.js","../../../source/functions/inSync.js","../../../source/functions/negate.js","../../../source/functions/nthArg.js","../../../source/functions/once.js","../../../source/objects/mapAsync.js","../../../source/objects/map.js","../../../source/types/getType.js","../../../source/types/cloneType.js","../../../source/utilities/forOfMap.js","../../../source/utilities/forOfMapAsync.js","../../../source/utilities/map.js","../../../source/functions/over.js","../../../source/objects/everyAsync.js","../../../source/objects/every.js","../../../source/utilities/forOfEvery.js","../../../source/utilities/forOfEveryAsync.js","../../../source/utilities/every.js","../../../source/functions/overEvery.js","../../../source/functions/rearged.js","../../../source/functions/throttle.js","../../../source/functions/wrap.js","../../../source/utilities/cacheNativeMethod.js","../../../source/internal/object.js","../../../source/internal/isSame.js","../../../source/math/add.js","../../../source/math/deduct.js","../../../source/math/divide.js","../../../source/math/increment.js","../../../source/math/multiple.js","../../../source/math/progress.js","../../../source/math/randomFloat.js","../../../source/math/remainder.js","../../../source/math/subtractAll.js","../../../source/math/sumAll.js","../../../source/numbers/isNumberInRange.js","../../../source/numbers/isNumberNotInRange.js","../../../source/numbers/isPositive.js","../../../source/numbers/isZero.js","../../../source/objects/getEntries.js","../../../source/objects/compactKeys.js","../../../source/objects/compactMapAsync.js","../../../source/objects/compactMap.js","../../../source/objects/filter.js","../../../source/objects/filterAsync.js","../../../source/objects/invert.js","../../../source/objects/isMatch.js","../../../source/types/isRegex.js","../../../source/regexps/escapeRegex.js","../../../source/regexps/arrayToRegex.js","../../../source/objects/omit.js","../../../source/objects/pick.js","../../../source/objects/size.js","../../../source/objects/zip.js","../../../source/strings/camelCase.js","../../../source/strings/kebabCase.js","../../../source/strings/snakeCase.js","../../../source/strings/upperCase.js","../../../source/strings/lowerCase.js","../../../source/strings/range.js","../../../source/strings/replace.js","../../../source/strings/truncate.js","../../../source/strings/sanitize.js","../../../source/strings/tokenize.js","../../../source/strings/typography.js","../../../source/types/getTypeName.js","../../../source/types/isArguments.js","../../../source/types/noValue.js","../../../source/types/isMap.js","../../../source/types/isTypedArray.js","../../../source/types/isArrayLike.js","../../../source/types/isBigInt.js","../../../source/types/isBoolean.js","../../../source/types/isArrayBuffer.js","../../../source/types/isChild.js","../../../source/types/isCloneable.js","../../../source/types/isDate.js","../../../source/types/isEmpty.js","../../../source/types/isFalse.js","../../../source/types/isF32.js","../../../source/types/isF64.js","../../../source/types/isFloat.js","../../../source/types/isI16.js","../../../source/types/isI32.js","../../../source/types/isI8.js","../../../source/types/isIterable.js","../../../source/types/isPromise.js","../../../source/types/isKindAsync.js","../../../source/types/isParent.js","../../../source/types/isPrimitive.js","../../../source/types/isRelated.js","../../../source/types/isSafeInt.js","../../../source/types/isSameType.js","../../../source/types/isTrue.js","../../../source/types/isU16.js","../../../source/types/isU32.js","../../../source/types/isU8.js","../../../source/types/isU8C.js","../../../source/types/isWeakMap.js","../../../source/types/isDeno.js","../../../source/types/isNode.js","../../../source/types/isTruthy.js","../../../source/types/isFalsy.js","../../../source/utilities/ifValue.js","../../../source/utilities/notEqual.js","../../../source/utilities/json.js","../../../source/utilities/assert.js","../../../source/utilities/bindAll.js","../../../source/utilities/clear.js","../../../source/utilities/clone.js","../../../source/utilities/compact.js","../../../source/utilities/forOfCompactMapAsync.js","../../../source/utilities/forOfCompactMap.js","../../../source/utilities/compactMap.js","../../../source/utilities/everyArg.js","../../../source/utilities/forOfFilter.js","../../../source/utilities/forOfFilterAsync.js","../../../source/utilities/filter.js","../../../source/utilities/flow.js","../../../source/utilities/flowAsync.js","../../../source/utilities/forMap.js","../../../source/utilities/arraysToObject.js","../../../source/utilities/has.js","../../../source/utilities/hasDot.js","../../../source/utilities/ifNotAssign.js","../../../source/utilities/interval.js","../../../source/utilities/merge.js","../../../source/utilities/model.js","../../../source/utilities/pair.js","../../../source/utilities/concurrent.js","../../../source/utilities/concurrentStatus.js","../../../source/utilities/promise.js","../../../source/utilities/propertyMatch.js","../../../source/utilities/setKey.js","../../../source/utilities/setValue.js","../../../source/utilities/store.js","../../../source/utilities/stubArray.js","../../../source/utilities/stubObject.js","../../../source/utilities/stubString.js","../../../source/utilities/timesAsync.js","../../../source/utilities/toggle.js","../../../source/utilities/uid.js","../../../source/utilities/virtualStorage.js","../../../source/browser/agent.js","../../../source/browser/event.js","../../../source/browser/isEnter.js","../../../source/browser/frag.js","../../../source/browser/append.js","../../../source/browser/attribute.js","../../../source/browser/selector.js","../../../source/browser/importScript.js","../../../source/browser/ready.js","../../../source/browser/info.js","../../../source/browser/dimensions.js","../../../source/browser/storage.js","../../../source/browser/console.js","../../../source/browser/is.js"],"sourcesContent":["/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invoke\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invoke(collection, property, value) {\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * (async () => {\n * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]);\n * });\n *\n * @example\n * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invokeAsync(collection, property, value) {\n\treturn mapAsyncArray(collection, async (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from '../objects/each.js';\nimport { isBoolean } from '../types/isBoolean.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Checks to see of the browser agent has a string.\n *\n * @function isAgent\n * @category browser\n * @type {Function}\n * @param {String} source - The string to search for.\n * @returns {Boolean} - Returns true or false.\n * @example\n * isAgent('mobile');\n * // => false\n */\nexport function isAgent(source) {\n\treturn (source) ? isAgent[source] : keys(isAgent);\n}\nconst userAgent = globalThis.navigator?.userAgentData;\nif (userAgent) {\n\teachObject(userAgent, (value, key) => {\n\t\tif (isBoolean(value) && value) {\n\t\t\tisAgent[key] = value;\n\t\t}\n\t});\n\teachArray(userAgent.brands, (value) => {\n\t\tisAgent[value.brand] = value.version;\n\t});\n} else if (navigator.userAgent) {\n\tlet userAgentNormalized = navigator.userAgent.toLowerCase();\n\tuserAgentNormalized = userAgentNormalized.replace(/_/g, '.');\n\tuserAgentNormalized = userAgentNormalized.replace(/[#_,;()]/g, '');\n\tconst userAgentSplit = userAgentNormalized.split(/ |\\//);\n\teachArray(userAgentSplit, (item) => {\n\t\tisAgent[item] = true;\n\t});\n}\n\n","/**\n * Attaches an event listener to a node.\n *\n * @function eventAdd\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventAdd(document.body, 'click', () => {console.log('CLICKED');});\n * // = > document.body\n */\nexport function eventAdd(node, eventName, callback, useCapture) {\n\tnode.addEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n/**\n * Attaches an event listener to a node.\n *\n * @function eventRemove\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventRemove(document.body, () => {console.log('CLICKED');});\n * // = > Undefined\n */\nexport function eventRemove(node, eventName, callback, useCapture) {\n\tnode.removeEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n\n","/**\n * Checks if the keycode of the event is strictly equal to 13.\n *\n * @function isEnter\n * @category browser\n * @type {Function}\n * @param {Object} eventObject - Object to be checked.\n * @returns {Boolean} - Returns true if the keycode property of the object equals 13.\n *\n * @example\n * isEnter('click');\n * // => false\n */\nexport function isEnter(eventObject) {\n\treturn eventObject.keyCode === 13;\n}\n\n","/**\n * Create a document fragment.\n *\n * @function createFragment\n * @category browser\n * @type {Function}\n * @ignore\n * @returns {Fragment} - Returns a new document fragment.\n*/\nexport const createFragment = document.createDocumentFragment.bind(document);\n","/**\n * Append a DOM node.\n *\n * @function append\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @ignore\n * @param {Node} parentNode - The parent node.\n * @param {Node} child - The node to be appended.\n * @returns {undefined} - Returns the child.\n */\nexport function append(parentNode, child) {\n\tparentNode.appendChild(child);\n\treturn child;\n}\n","import { eachObject } from '../objects/each.js';\nimport { isArray } from '../types/isArray.js';\nimport { mapArray } from '../arrays/map.js';\nimport { zipObject } from '../objects/zip.js';\n/**\n * Assign attributes to a DOM node.\n *\n * @function nodeAttribute\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @async\n * @param {Node} node - The DOM node.\n * @param {Object|Array} object - Object with key being the attribute name and the value being the attribute value. If an array is given it will get the values corresponding to the array items.\n * @returns {Object|Node} - If using an array this returns an object of attribute names as keys and their values as the property value. If using an object this will return the provided node.\n *\n * @example\n * nodeAttribute(document.body, { 'data-example': 'test'});\n */\nexport function nodeAttribute(node, object) {\n\tif (isArray(object)) {\n\t\treturn zipObject(object, mapArray(object, (item) => {\n\t\t\treturn node.getAttribute(item);\n\t\t}));\n\t}\n\teachObject(object, (item, key) => {\n\t\tnode.setAttribute(key, item);\n\t});\n\treturn node;\n}\n\n","import { restString } from '../strings/range.js';\nconst dotString = '.';\nconst poundString = '#';\nconst classTest = /^.[\\w_-]+$/;\nconst tagTest = /^[A-Za-z]+$/;\nconst regexSpace = /\\s/;\n/**\n * Wrapper around getElementsByClassName.\n *\n * @function getByClass\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByClass = document.getElementsByClassName.bind(document);\n/**\n * Wrapper around getElementsByTagName.\n *\n * @function getByTag\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByTag = document.getElementsByTagName.bind(document);\n/**\n * Wrapper around getElementsByIdName.\n *\n * @function getById\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getById = document.getElementById.bind(document);\n/**\n * Wrapper around querySelector.\n *\n * @function querySelector\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelector = document.querySelector.bind(document);\n/**\n * Wrapper around querySelectorAll.\n *\n * @function querySelectorAll\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelectorAll = document.querySelectorAll.bind(document);\n/**\n * Returns relevant DOM node.\n *\n * @function selector\n * @category browser\n * @ignoreTest\n * @param {String} select - String to be evaluated.\n * @type {Function}\n * @returns {Node} - Returns a DOM node.\n *\n * @example\n * selector('#node');\n * // =>
\n */\nexport function selector(select) {\n\tconst firstLetter = select[0];\n\tswitch (firstLetter) {\n\tcase poundString:\n\t\tif (!regexSpace.test(select)) {\n\t\t\treturn getById(restString(select));\n\t\t}\n\t\tbreak;\n\tcase dotString:\n\t\tif (classTest.test(select)) {\n\t\t\treturn getByClass(restString(select));\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tif (tagTest.test(select)) {\n\t\t\treturn getByTag(select);\n\t\t}\n\t}\n\treturn querySelectorAll(select);\n}\n\n","import { append } from './append.js';\nimport { hasDot } from '../utilities/hasDot.js';\nimport { eventAdd } from './event.js';\nimport { nodeAttribute } from './attribute.js';\nimport { promise } from '../utilities/promise.js';\nimport { querySelector } from './selector.js';\nconst createElementCache = document.createElement.bind(document);\nconst nodeAttachLoadingEvents = (node) => {\n\treturn promise((accept) => {\n\t\teventAdd(node, 'load', accept, true);\n\t\teventAdd(node, 'error', accept, true);\n\t\tappend(querySelector('head'), node);\n\t});\n};\n/**\n * Asynchronously import a js file and append it to the head node.\n * If a script fails to load importjs won't reject the promise rather it'll return the error event to limit further complications & reduce code complexity.\n *\n * @function importjs\n * @category browser\n * @type {Function}\n * @async\n * @param {*} url - URL of the script to import. If not \".\" is found in the file name \".js\" will be appended.\n * @returns {Promise} - Returns a promise which returns a \"load\" or \"error\" event associated with the script.\n *\n * @example\n * importjs('core.js');\n * importjs('core');\n */\nexport function importjs(url) {\n\tconst src = hasDot(url) && url || `${url}.js`;\n\tconst node = nodeAttribute(createElementCache('script'), {\n\t\tasync: '',\n\t\tsrc\n\t});\n\treturn nodeAttachLoadingEvents(node);\n}\n\n","import { eventAdd } from './event.js';\nimport { importjs } from './importScript.js';\nimport { getById } from './selector.js';\n/**\n * Runs a function if the document has finished loading. If not, add an eventlistener.\n *\n * @function isDocumentReady\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Function} callable - Function to be run.\n * @returns {Boolean|Function} - If the document is ready, returns a function. If not, return false.\n *\n * @example\n * isDocumentReady(() => {return 1});\n * // => 1\n */\nexport function isDocumentReady(callable) {\n\tconst state = document.readyState;\n\tconst checkStatus = state === 'interactive' || state === 'completed' || state === 'complete';\n\tif (checkStatus) {\n\t\treturn (callable) ? callable() : true;\n\t}\n\tif (callable) {\n\t\teventAdd(document, 'DOMContentLoaded', callable);\n\t}\n\treturn false;\n}\nisDocumentReady(() => {\n\tconst scriptTag = getById('AcidLib');\n\tconst scriptName = (scriptTag && scriptTag.getAttribute('data-index')) || '/index';\n\timportjs(scriptName);\n});\n","const protocol = location.protocol;\nconst protocolSocket = (protocol === 'http:') ? 'ws' : 'wss';\nconst hostname = location.hostname;\n/**\n * Holds client hardware, browser, and host info.\n *\n * @memberof $\n * @category browser\n * @ignoreTest\n * @property {Object} info - Client hardware & host info.\n * @type {Object}\n */\nexport const info = {\n\thardware: {\n\t\tcores: navigator.hardwareConcurrency\n\t},\n\thost: {\n\t\tname: hostname,\n\t\tprotocol,\n\t\tprotocolSocket,\n\t}\n};\n\n","import { assign } from '../objects/assign.js';\nimport { eventAdd } from './event.js';\nimport { info } from './info.js';\nimport { isDocumentReady } from './ready.js';\nexport function saveDimensions() {\n\tassign(info, {\n\t\tbodyHeight: document.body.offsetHeight,\n\t\tbodyWidth: document.body.offsetWidth,\n\t\twindowHeight: window.innerHeight,\n\t\twindowWidth: window.innerWidth,\n\t});\n}\n/**\n * Save current document & window dimensions to the info property.\n *\n * @function updateDimensions\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * updateDimensions();\n */\nexport function updateDimensions() {\n\tsaveDimensions();\n}\nisDocumentReady(updateDimensions);\neventAdd(window, 'load', updateDimensions, true);\neventAdd(window, 'resize', updateDimensions, true);\n\n","/**\n * LocalStorage Module..\n *\n * @module browser/storage\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nimport { virtualStorage } from '../utilities/virtualStorage.js';\nexport let hasLocal;\nfunction hasStorage(storeCheck) {\n\ttry {\n\t\tstoreCheck().removeItem('TESTING');\n\t\thasLocal = true;\n\t} catch (e) {\n\t\thasLocal = false;\n\t}\n}\nhasStorage(() => {\n\treturn localStorage;\n});\n/**\n * Constructs a virtual storage container with localStorage support.\n * Crate will fallback to strictly virtual storage if localStorage isn't supported.\n * If localStorage is supported virtual storage will be used first & only fallback to localStorage when needed.\n * Crate is ideal as a seemless drop in replacement for localStorage when not supported or allowed.\n *\n * @class Crate\n * @category browser\n * @returns {Crate} - Returns a new instance of Crate.\n *\n * @example\n * import { Crate, construct, assert } from '@universalweb/acid';\n * const storageCrate = construct(Crate);\n * storageCrate.setItem('key', 'value');\n * assert(storageCrate.getItem('key'), 'value');\n */\nexport class Crate {\n\tconstructor(initialObject) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local = localStorage;\n\t\t}\n\t\tthis.storage = virtualStorage(initialObject);\n\t}\n\thasLocal = hasLocal;\n\t/**\n\t * Save an item to a crate.\n\t *\n\t * @function setItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.setItem(key, (isString(value)) ? value : stringify(value));\n\t\t}\n\t\treturn this.storage.setItem(key, value);\n\t}\n\t/**\n\t * Get an item from a crate.\n\t *\n\t * @function getItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tgetItem(key) {\n\t\tconst item = this.storage.getItem(key);\n\t\tif (hasValue(item)) {\n\t\t\treturn item;\n\t\t}\n\t\tif (!hasValue(item) && this.hasLocal) {\n\t\t\treturn this.local.getItem(key);\n\t\t}\n\t}\n\t/**\n\t * Clears all data for the crate including all of localStorage if supported.\n\t *\n\t * @function clear\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.clear();\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tclear() {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.clear();\n\t\t}\n\t\tthis.storage.clear();\n\t}\n\t/**\n\t * Remove an item from a crate.\n\t *\n\t * @class Crate\n\t * @category browser\n\t * @function removeItem\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.removeItem('key');\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tremoveItem(key) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.removeItem(key);\n\t\t}\n\t\tthis.storage.removeItem(key);\n\t}\n}\n/**\n * The crate function is a factory which wraps the Crate class constructor.\n *\n * @function crate\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new Crate Object.\n *\n * @example\n * const storageCrate = crate();\n * // => New Crate Object\n */\nexport function crate(virtualFlag) {\n\treturn new Crate(virtualFlag);\n}\n\n","import { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nconst generateTheme = (color, bg) => {\n\treturn `color:${color};background:${bg};`;\n};\nexport const themes = {\n\talert: generateTheme('#fff', '#f44336'),\n\timportant: generateTheme('#fff', '#E91E63'),\n\tnotify: generateTheme('#fff', '#651FFF'),\n\twarning: generateTheme('#000', '#FFEA00'),\n};\n/**\n * Console.trace wrapper with theme support.\n *\n * @function cnsl\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Object} value - The value to be logged.\n * @param {String} themeName - The name of the theme to be used.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnsl('Lucy', 'notify');\n * // 'Lucy'\n*/\nexport const cnsl = (value, themeName) => {\n\tconst data = isString(value) ? value : stringify(value);\n\tif (themeName === 'alert' || themeName === 'warning') {\n\t\treturn console.trace(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n\t}\n\tconsole.log(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n};\n/**\n * Create color themes for cnsl method.\n *\n * @function cnslTheme\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {String} themeName - The name of the theme.\n * @param {String} color - The text color.\n * @param {String} background - The background color of the block.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnslTheme('BlackNWhite', '#fff', '#000');\n*/\nexport const cnslTheme = (themeName, color, background) => {\n\tthemes[themeName] = generateTheme(color, background);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { difference } from '../arrays/difference.js';\n/**\n * Checks if value is a plain DOM Node.\n *\n * @function isDom\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDom, assert } from '@universalweb/acid';\n * assert(isDom(document.querySelectorAll('head')), true);\n */\nexport function isDom(source) {\n\treturn source && source.nodeType !== 9;\n}\n/**\n * Checks if the value is a HTMLCollection.\n *\n * @function isHTMLCollection\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isHTMLCollection, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isHTMLCollection(document.getElementsByClassName('test')), true);\n */\nconst objectHTMLCollection = '[object HTMLCollection]';\nexport function isHTMLCollection(source) {\n\treturn (hasValue(source)) ? source.toString() === objectHTMLCollection : false;\n}\n/**\n * Checks if the value is a NodeList.\n *\n * @function isNodeList\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNodeList, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isNodeList(document.querySelectorAll('.test')), true);\n */\nconst objectNodeList = '[object NodeList]';\nexport function isNodeList(source) {\n\treturn (hasValue(source)) ? source.toString() === objectNodeList : false;\n}\n"],"names":["sign","random","normalizeCase","space","returnFlow"],"mappings":"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CxB;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE;AAC/B,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;AACnB;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;AACtC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;AACvB;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,MAAM,EAAE;AAClC,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;AACnB;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;AACxC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;AACvB;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE;AACnD,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;AAClB,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE;AAC1B,EAAE,OAAO,CAAC,CAAC;AACX,EAAE;AACF,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,IAAI,GAAG,CAAC;AACtC;;ACtBA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;AAC1C,CAAC,OAAO,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACrC;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AA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W,GAAG,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACrB,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG,SAAS,CAAC,MAAM;;AChGtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,CAAC;AAC5B,CAAC,WAAW,CAAC,aAAa,GAAG,EAAE,EAAE;AACjC,EAAE,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;AAC7B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,OAAO,CAAC,GAAG,EAAE;AACd,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AACrB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,KAAK,GAAG;AACT,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAClB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,CAAC,GAAG,EAAE;AACjB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACzB,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,aAAa,EAAE;AAC9C,CAAC,OAAO,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;AAC1C;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,MAAM,EAAE;AAChC,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AACnD,CAAC;AACD,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,EAAE,aAAa,CAAC;AACtD,IAAI,SAAS,EAAE;AACf,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;AACvC,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE;AACjC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACxB,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK;AACxC,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;AACvC,EAAE,CAAC,CAAC;AACJ,CAAC,MAAM,IAAI,SAAS,CAAC,SAAS,EAAE;AAChC,CAAC,IAAI,mBAAmB,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAC7D,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9D,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1D,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,IAAI,KAAK;AACrC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACvB,EAAE,CAAC,CAAC;AACJ;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE;AAChE,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACxD,CAAC,OAAO,IAAI,CAAC;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE;AACnE,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC,OAAO,IAAI,CAAC;AACb;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,WAAW,EAAE;AACrC,CAAC,OAAO,WAAW,CAAC,OAAO,KAAK,EAAE,CAAC;AACnC;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,cAAc,GAAG,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ;;ACT3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE;AAC1C,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC,OAAO,KAAK,CAAC;AACd;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AACtB,EAAE,OAAO,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACtD,GAAG,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAClC,GAAG,CAAC,CAAC,CAAC;AACN,EAAE;AACF,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;AACnC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,IAAI,CAAC;AACb;;AC5BA,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,SAAS,GAAG,YAAY,CAAC;AAC/B,MAAM,OAAO,GAAG,aAAa,CAAC;AAC9B,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,UAAU,GAAG,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,QAAQ,GAAG,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,MAAM,EAAE;AACjC,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC,QAAQ,WAAW;AACpB,CAAC,KAAK,WAAW;AACjB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAChC,GAAG,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,GAAG;AACH,EAAE,MAAM;AACR,CAAC,KAAK,SAAS;AACf,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC9B,GAAG,OAAO,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACzC,GAAG;AACH,EAAE,MAAM;AACR,CAAC;AACD,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC5B,GAAG,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC3B,GAAG;AACH,EAAE;AACF,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC;;AC9EA,MAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjE,MAAM,uBAAuB,GAAG,CAAC,IAAI,KAAK;AAC1C,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,KAAK;AAC5B,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACvC,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACxC,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;AACtC,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,GAAG,EAAE;AAC9B,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE;AAC1D,EAAE,KAAK,EAAE,EAAE;AACX,EAAE,GAAG;AACL,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACtC;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,QAAQ,EAAE;AAC1C,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC;AACnC,CAAC,MAAM,WAAW,GAAG,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,UAAU,CAAC;AAC9F,CAAC,IAAI,WAAW,EAAE;AAClB,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAAE,GAAG,IAAI,CAAC;AACxC,EAAE;AACF,CAAC,IAAI,QAAQ,EAAE;AACf,EAAE,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AACnD,EAAE;AACF,CAAC,OAAO,KAAK,CAAC;AACd,CAAC;AACD,eAAe,CAAC,MAAM;AACtB,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC,MAAM,UAAU,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC;AACpF,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACtB,CAAC,CAAC;;AChCF,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACnC,MAAM,cAAc,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,IAAI,GAAG;AACpB,CAAC,QAAQ,EAAE;AACX,EAAE,KAAK,EAAE,SAAS,CAAC,mBAAmB;AACtC,EAAE;AACF,CAAC,IAAI,EAAE;AACP,EAAE,IAAI,EAAE,QAAQ;AAChB,EAAE,QAAQ;AACV,EAAE,cAAc;AAChB,EAAE;AACF;;ACjBO,SAAS,cAAc,GAAG;AACjC,CAAC,MAAM,CAAC,IAAI,EAAE;AACd,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY;AACxC,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW;AACtC,EAAE,YAAY,EAAE,MAAM,CAAC,WAAW;AAClC,EAAE,WAAW,EAAE,MAAM,CAAC,UAAU;AAChC,EAAE,CAAC,CAAC;AACJ,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,GAAG;AACnC,CAAC,cAAc,EAAE,CAAC;AAClB,CAAC;AACD,eAAe,CAAC,gBAAgB,CAAC,CAAC;AAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACjD,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC;;AC7BlD;AACA;AACA;AACA;AACA;AAKU,IAAC,SAAS;AACpB,SAAS,UAAU,CAAC,UAAU,EAAE;AAChC,CAAC,IAAI;AACL,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACrC,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,QAAQ,GAAG,KAAK,CAAC;AACnB,EAAE;AACF,CAAC;AACD,UAAU,CAAC,MAAM;AACjB,CAAC,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,KAAK,CAAC;AACnB,CAAC,WAAW,CAAC,aAAa,EAAE;AAC5B,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACrB,GAAG,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;AAC7B,GAAG;AACH,EAAE,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAC/C,EAAE;AACF,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AACrB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACrB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,GAAG;AACH,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,OAAO,CAAC,GAAG,EAAE;AACd,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACzC,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;AACtB,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACxC,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAClC,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,KAAK,GAAG;AACT,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACrB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACtB,GAAG;AACH,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACvB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,CAAC,GAAG,EAAE;AACjB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACrB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/B,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,WAAW,EAAE;AACnC,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;AAC/B;;ACtJA,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK;AACrC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AACU,MAAC,MAAM,GAAG;AACtB,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC;AACxC,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC;AAC5C,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC;AACzC,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC;AAC1C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,IAAI,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK;AAC1C,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,EAAE;AACvD,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC;AAC7G,EAAE;AACF,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC;AACnG,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,SAAS,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,KAAK;AAC3D,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACtD;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,MAAM,EAAE;AAC9B,CAAC,OAAO,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;AACxC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;AAChD,SAAS,gBAAgB,CAAC,MAAM,EAAE;AACzC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,oBAAoB,GAAG,KAAK,CAAC;AAChF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,mBAAmB,CAAC;AACpC,SAAS,UAAU,CAAC,MAAM,EAAE;AACnC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,cAAc,GAAG,KAAK,CAAC;AAC1E;;;;"} \ No newline at end of file +{"version":3,"file":"bundle.js","sources":["../../../source/arrays/chunk.js","../../../source/arrays/clear.js","../../../source/arrays/clone.js","../../../source/types/isUndefined.js","../../../source/utilities/hasLength.js","../../../source/types/isNull.js","../../../source/types/hasValue.js","../../../source/utilities/returnValue.js","../../../source/arrays/each.js","../../../source/arrays/compactMap.js","../../../source/arrays/eachAsync.js","../../../source/arrays/compactMapAsync.js","../../../source/numbers/isNegative.js","../../../source/arrays/range.js","../../../source/utilities/forEach.js","../../../source/types/isArray.js","../../../source/arrays/ensure.js","../../../source/arrays/flattenDeep.js","../../../source/classes/construct.js","../../../source/arrays/difference.js","../../../source/arrays/drop.js","../../../source/arrays/dropRight.js","../../../source/arrays/eachRight.js","../../../source/arrays/eachRightAsync.js","../../../source/arrays/every.js","../../../source/arrays/everyAsync.js","../../../source/arrays/filter.js","../../../source/arrays/filterAsync.js","../../../source/arrays/first.js","../../../source/arrays/flatten.js","../../../source/arrays/initial.js","../../../source/arrays/intersect.js","../../../source/arrays/invoke.js","../../../source/objects/keys.js","../../../source/utilities/toPath.js","../../../source/utilities/get.js","../../../source/objects/hasKeys.js","../../../source/types/isPlainObject.js","../../../source/types/isConstructor.js","../../../source/types/isTypeFactory.js","../../../source/types/isBuffer.js","../../../source/utilities/isEqual.js","../../../source/arrays/isMatch.js","../../../source/arrays/largest.js","../../../source/arrays/last.js","../../../source/arrays/map.js","../../../source/arrays/mapAsync.js","../../../source/arrays/mapRight.js","../../../source/arrays/mapWhile.js","../../../source/math/subtract.js","../../../source/arrays/sortNumberAscending.js","../../../source/arrays/partition.js","../../../source/math/subtractReverse.js","../../../source/arrays/sortNumberDescening.js","../../../source/arrays/remove.js","../../../source/arrays/rest.js","../../../source/arrays/right.js","../../../source/math/randomInt.js","../../../source/internal/array.js","../../../source/numbers/isNumberEqual.js","../../../source/arrays/shuffle.js","../../../source/arrays/sample.js","../../../source/arrays/smallest.js","../../../source/arrays/getNumberInsertIndex.js","../../../source/arrays/take.js","../../../source/arrays/takeRight.js","../../../source/arrays/unique.js","../../../source/arrays/union.js","../../../source/arrays/untilFalse.js","../../../source/arrays/untilTrue.js","../../../source/arrays/whileCompactMap.js","../../../source/arrays/whileEach.js","../../../source/arrays/whileMap.js","../../../source/arrays/without.js","../../../source/arrays/xor.js","../../../source/arrays/zip.js","../../../source/buffers/ensure.js","../../../source/buffers/clear.js","../../../source/collection/countBy.js","../../../source/collection/countKey.js","../../../source/collection/countWithoutKey.js","../../../source/collection/findIndexCache.js","../../../source/collection/findIndex.js","../../../source/collection/findItem.js","../../../source/collection/sortCollectionDescending.js","../../../source/collection/sortCollectionAlphabetically.js","../../../source/collection/sortCollectionAscending.js","../../../source/collection/getHighest.js","../../../source/collection/getLowest.js","../../../source/collection/groupBy.js","../../../source/collection/indexBy.js","../../../source/collection/invoke.js","../../../source/collection/invokeAsync.js","../../../source/types/isNumber.js","../../../source/types/isString.js","../../../source/objects/pluckObject.js","../../../source/collection/pluck.js","../../../source/collection/sortCollectionAlphabeticallyReverse.js","../../../source/files/getExtension.js","../../../source/files/getFilename.js","../../../source/internal/regexTestFactory.js","../../../source/files/isFileCSS.js","../../../source/files/isFileHTML.js","../../../source/files/isFileJS.js","../../../source/files/isFileJSON.js","../../../source/functions/after.js","../../../source/functions/ary.js","../../../source/functions/before.js","../../../source/objects/assign.js","../../../source/objects/eachAsync.js","../../../source/objects/each.js","../../../source/utilities/forEachAsync.js","../../../source/types/isSet.js","../../../source/utilities/forOf.js","../../../source/types/isGenerator.js","../../../source/utilities/forOfAsync.js","../../../source/types/isFunction.js","../../../source/types/isAsync.js","../../../source/utilities/generateLoop.js","../../../source/utilities/each.js","../../../source/functions/chain.js","../../../source/functions/curry.js","../../../source/functions/curryRight.js","../../../source/utilities/stubTrue.js","../../../source/utilities/stubFalse.js","../../../source/utilities/noop.js","../../../source/utilities/times.js","../../../source/utilities/timer.js","../../../source/internal/apply.js","../../../source/functions/debounce.js","../../../source/functions/ifInvoke.js","../../../source/functions/inAsync.js","../../../source/functions/inSync.js","../../../source/functions/negate.js","../../../source/functions/nthArg.js","../../../source/functions/once.js","../../../source/objects/mapAsync.js","../../../source/objects/map.js","../../../source/types/getType.js","../../../source/types/cloneType.js","../../../source/utilities/forOfMap.js","../../../source/utilities/forOfMapAsync.js","../../../source/utilities/map.js","../../../source/functions/over.js","../../../source/objects/everyAsync.js","../../../source/objects/every.js","../../../source/utilities/forOfEvery.js","../../../source/utilities/forOfEveryAsync.js","../../../source/utilities/every.js","../../../source/functions/overEvery.js","../../../source/functions/rearged.js","../../../source/functions/throttle.js","../../../source/functions/wrap.js","../../../source/utilities/cacheNativeMethod.js","../../../source/internal/object.js","../../../source/internal/isSame.js","../../../source/math/add.js","../../../source/math/deduct.js","../../../source/math/divide.js","../../../source/math/increment.js","../../../source/math/multiple.js","../../../source/math/progress.js","../../../source/math/randomFloat.js","../../../source/math/remainder.js","../../../source/math/subtractAll.js","../../../source/math/sumAll.js","../../../source/numbers/isNumberInRange.js","../../../source/numbers/isNumberNotInRange.js","../../../source/numbers/isPositive.js","../../../source/numbers/isZero.js","../../../source/objects/getEntries.js","../../../source/objects/compactKeys.js","../../../source/objects/compactMapAsync.js","../../../source/objects/compactMap.js","../../../source/objects/filter.js","../../../source/objects/filterAsync.js","../../../source/objects/invert.js","../../../source/objects/isMatch.js","../../../source/types/isRegex.js","../../../source/regexps/escapeRegex.js","../../../source/regexps/arrayToRegex.js","../../../source/objects/omit.js","../../../source/objects/pick.js","../../../source/objects/size.js","../../../source/objects/zip.js","../../../source/strings/camelCase.js","../../../source/strings/kebabCase.js","../../../source/strings/snakeCase.js","../../../source/strings/upperCase.js","../../../source/strings/lowerCase.js","../../../source/strings/range.js","../../../source/strings/replace.js","../../../source/strings/truncate.js","../../../source/strings/sanitize.js","../../../source/strings/tokenize.js","../../../source/strings/typography.js","../../../source/types/getTypeName.js","../../../source/types/isArguments.js","../../../source/types/noValue.js","../../../source/types/isMap.js","../../../source/types/isTypedArray.js","../../../source/types/isArrayLike.js","../../../source/types/isBigInt.js","../../../source/types/isBoolean.js","../../../source/types/isArrayBuffer.js","../../../source/types/isChild.js","../../../source/types/isCloneable.js","../../../source/types/isDate.js","../../../source/types/isEmpty.js","../../../source/types/isFalse.js","../../../source/types/isF32.js","../../../source/types/isF64.js","../../../source/types/isFloat.js","../../../source/types/isI16.js","../../../source/types/isI32.js","../../../source/types/isI8.js","../../../source/types/isIterable.js","../../../source/types/isPromise.js","../../../source/types/isKindAsync.js","../../../source/types/isParent.js","../../../source/types/isPrimitive.js","../../../source/types/isRelated.js","../../../source/types/isSafeInt.js","../../../source/types/isSameType.js","../../../source/types/isTrue.js","../../../source/types/isU16.js","../../../source/types/isU32.js","../../../source/types/isU8.js","../../../source/types/isU8C.js","../../../source/types/isWeakMap.js","../../../source/types/isDeno.js","../../../source/types/isNode.js","../../../source/types/isTruthy.js","../../../source/types/isFalsy.js","../../../source/utilities/ifValue.js","../../../source/utilities/notEqual.js","../../../source/utilities/json.js","../../../source/utilities/assert.js","../../../source/utilities/bindAll.js","../../../source/utilities/clear.js","../../../source/utilities/clone.js","../../../source/utilities/compact.js","../../../source/utilities/forOfCompactMapAsync.js","../../../source/utilities/forOfCompactMap.js","../../../source/utilities/compactMap.js","../../../source/utilities/everyArg.js","../../../source/utilities/forOfFilter.js","../../../source/utilities/forOfFilterAsync.js","../../../source/utilities/filter.js","../../../source/utilities/flow.js","../../../source/utilities/flowAsync.js","../../../source/utilities/forMap.js","../../../source/utilities/arraysToObject.js","../../../source/utilities/has.js","../../../source/utilities/hasDot.js","../../../source/utilities/ifNotAssign.js","../../../source/utilities/interval.js","../../../source/utilities/merge.js","../../../source/utilities/model.js","../../../source/utilities/pair.js","../../../source/utilities/concurrent.js","../../../source/utilities/concurrentStatus.js","../../../source/utilities/promise.js","../../../source/utilities/propertyMatch.js","../../../source/utilities/setKey.js","../../../source/utilities/setValue.js","../../../source/utilities/store.js","../../../source/utilities/stubArray.js","../../../source/utilities/stubObject.js","../../../source/utilities/stubString.js","../../../source/utilities/timesAsync.js","../../../source/utilities/toggle.js","../../../source/utilities/uid.js","../../../source/utilities/virtualStorage.js","../../../source/browser/agent.js","../../../source/browser/event.js","../../../source/browser/isEnter.js","../../../source/browser/frag.js","../../../source/browser/append.js","../../../source/browser/attribute.js","../../../source/browser/selector.js","../../../source/browser/importScript.js","../../../source/browser/ready.js","../../../source/browser/info.js","../../../source/browser/dimensions.js","../../../source/browser/storage.js","../../../source/browser/console.js","../../../source/browser/is.js"],"sourcesContent":["/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Invoke each function in the given array.\n *\n * @function invokeArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { invokeArray, assert } from '@universalweb/acid';\n * function test(arg){\n * \treturn [this, arg];\n * }\n * const results = invokeArray([test], 1, test);\n * assert(results, [test, 1]);\n */\nexport function invokeArray(source, arg, thisCall) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index].call(thisCall, arg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index](arg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollection\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * import { invokeCollection, assert } from '@universalweb/acid';\n * const results = invokeCollection([{\n *\ttest(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollection(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapArray(collection, (item, index) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollectionAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * import { invokeCollectionAsync, assert } from '@universalweb/acid';\n * const results = await invokeCollectionAsync([{\n *\tasync test(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollectionAsync(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapAsyncArray(collection, (item) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapAsyncArray(collection, async (item) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from '../objects/each.js';\nimport { isBoolean } from '../types/isBoolean.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Checks to see of the browser agent has a string.\n *\n * @function isAgent\n * @category browser\n * @type {Function}\n * @param {String} source - The string to search for.\n * @returns {Boolean} - Returns true or false.\n * @example\n * isAgent('mobile');\n * // => false\n */\nexport function isAgent(source) {\n\treturn (source) ? isAgent[source] : keys(isAgent);\n}\nconst userAgent = globalThis.navigator?.userAgentData;\nif (userAgent) {\n\teachObject(userAgent, (value, key) => {\n\t\tif (isBoolean(value) && value) {\n\t\t\tisAgent[key] = value;\n\t\t}\n\t});\n\teachArray(userAgent.brands, (value) => {\n\t\tisAgent[value.brand] = value.version;\n\t});\n} else if (navigator.userAgent) {\n\tlet userAgentNormalized = navigator.userAgent.toLowerCase();\n\tuserAgentNormalized = userAgentNormalized.replace(/_/g, '.');\n\tuserAgentNormalized = userAgentNormalized.replace(/[#_,;()]/g, '');\n\tconst userAgentSplit = userAgentNormalized.split(/ |\\//);\n\teachArray(userAgentSplit, (item) => {\n\t\tisAgent[item] = true;\n\t});\n}\n\n","/**\n * Attaches an event listener to a node.\n *\n * @function eventAdd\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventAdd(document.body, 'click', () => {console.log('CLICKED');});\n * // = > document.body\n */\nexport function eventAdd(node, eventName, callback, useCapture) {\n\tnode.addEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n/**\n * Attaches an event listener to a node.\n *\n * @function eventRemove\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventRemove(document.body, () => {console.log('CLICKED');});\n * // = > Undefined\n */\nexport function eventRemove(node, eventName, callback, useCapture) {\n\tnode.removeEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n\n","/**\n * Checks if the keycode of the event is strictly equal to 13.\n *\n * @function isEnter\n * @category browser\n * @type {Function}\n * @param {Object} eventObject - Object to be checked.\n * @returns {Boolean} - Returns true if the keycode property of the object equals 13.\n *\n * @example\n * isEnter('click');\n * // => false\n */\nexport function isEnter(eventObject) {\n\treturn eventObject.keyCode === 13;\n}\n\n","/**\n * Create a document fragment.\n *\n * @function createFragment\n * @category browser\n * @type {Function}\n * @ignore\n * @returns {Fragment} - Returns a new document fragment.\n*/\nexport const createFragment = document.createDocumentFragment.bind(document);\n","/**\n * Append a DOM node.\n *\n * @function append\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @ignore\n * @param {Node} parentNode - The parent node.\n * @param {Node} child - The node to be appended.\n * @returns {undefined} - Returns the child.\n */\nexport function append(parentNode, child) {\n\tparentNode.appendChild(child);\n\treturn child;\n}\n","import { eachObject } from '../objects/each.js';\nimport { isArray } from '../types/isArray.js';\nimport { mapArray } from '../arrays/map.js';\nimport { zipObject } from '../objects/zip.js';\n/**\n * Assign attributes to a DOM node.\n *\n * @function nodeAttribute\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @async\n * @param {Node} node - The DOM node.\n * @param {Object|Array} object - Object with key being the attribute name and the value being the attribute value. If an array is given it will get the values corresponding to the array items.\n * @returns {Object|Node} - If using an array this returns an object of attribute names as keys and their values as the property value. If using an object this will return the provided node.\n *\n * @example\n * nodeAttribute(document.body, { 'data-example': 'test'});\n */\nexport function nodeAttribute(node, object) {\n\tif (isArray(object)) {\n\t\treturn zipObject(object, mapArray(object, (item) => {\n\t\t\treturn node.getAttribute(item);\n\t\t}));\n\t}\n\teachObject(object, (item, key) => {\n\t\tnode.setAttribute(key, item);\n\t});\n\treturn node;\n}\n\n","import { restString } from '../strings/range.js';\nconst dotString = '.';\nconst poundString = '#';\nconst classTest = /^.[\\w_-]+$/;\nconst tagTest = /^[A-Za-z]+$/;\nconst regexSpace = /\\s/;\n/**\n * Wrapper around getElementsByClassName.\n *\n * @function getByClass\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByClass = document.getElementsByClassName.bind(document);\n/**\n * Wrapper around getElementsByTagName.\n *\n * @function getByTag\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByTag = document.getElementsByTagName.bind(document);\n/**\n * Wrapper around getElementsByIdName.\n *\n * @function getById\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getById = document.getElementById.bind(document);\n/**\n * Wrapper around querySelector.\n *\n * @function querySelector\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelector = document.querySelector.bind(document);\n/**\n * Wrapper around querySelectorAll.\n *\n * @function querySelectorAll\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelectorAll = document.querySelectorAll.bind(document);\n/**\n * Returns relevant DOM node.\n *\n * @function selector\n * @category browser\n * @ignoreTest\n * @param {String} select - String to be evaluated.\n * @type {Function}\n * @returns {Node} - Returns a DOM node.\n *\n * @example\n * selector('#node');\n * // =>
\n */\nexport function selector(select) {\n\tconst firstLetter = select[0];\n\tswitch (firstLetter) {\n\tcase poundString:\n\t\tif (!regexSpace.test(select)) {\n\t\t\treturn getById(restString(select));\n\t\t}\n\t\tbreak;\n\tcase dotString:\n\t\tif (classTest.test(select)) {\n\t\t\treturn getByClass(restString(select));\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tif (tagTest.test(select)) {\n\t\t\treturn getByTag(select);\n\t\t}\n\t}\n\treturn querySelectorAll(select);\n}\n\n","import { append } from './append.js';\nimport { hasDot } from '../utilities/hasDot.js';\nimport { eventAdd } from './event.js';\nimport { nodeAttribute } from './attribute.js';\nimport { promise } from '../utilities/promise.js';\nimport { querySelector } from './selector.js';\nconst createElementCache = document.createElement.bind(document);\nconst nodeAttachLoadingEvents = (node) => {\n\treturn promise((accept) => {\n\t\teventAdd(node, 'load', accept, true);\n\t\teventAdd(node, 'error', accept, true);\n\t\tappend(querySelector('head'), node);\n\t});\n};\n/**\n * Asynchronously import a js file and append it to the head node.\n * If a script fails to load importjs won't reject the promise rather it'll return the error event to limit further complications & reduce code complexity.\n *\n * @function importjs\n * @category browser\n * @type {Function}\n * @async\n * @param {*} url - URL of the script to import. If not \".\" is found in the file name \".js\" will be appended.\n * @returns {Promise} - Returns a promise which returns a \"load\" or \"error\" event associated with the script.\n *\n * @example\n * importjs('core.js');\n * importjs('core');\n */\nexport function importjs(url) {\n\tconst src = hasDot(url) && url || `${url}.js`;\n\tconst node = nodeAttribute(createElementCache('script'), {\n\t\tasync: '',\n\t\tsrc\n\t});\n\treturn nodeAttachLoadingEvents(node);\n}\n\n","import { eventAdd } from './event.js';\nimport { importjs } from './importScript.js';\nimport { getById } from './selector.js';\n/**\n * Runs a function if the document has finished loading. If not, add an eventlistener.\n *\n * @function isDocumentReady\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Function} callable - Function to be run.\n * @returns {Boolean|Function} - If the document is ready, returns a function. If not, return false.\n *\n * @example\n * isDocumentReady(() => {return 1});\n * // => 1\n */\nexport function isDocumentReady(callable) {\n\tconst state = document.readyState;\n\tconst checkStatus = state === 'interactive' || state === 'completed' || state === 'complete';\n\tif (checkStatus) {\n\t\treturn (callable) ? callable() : true;\n\t}\n\tif (callable) {\n\t\teventAdd(document, 'DOMContentLoaded', callable);\n\t}\n\treturn false;\n}\nisDocumentReady(() => {\n\tconst scriptTag = getById('AcidLib');\n\tconst scriptName = (scriptTag && scriptTag.getAttribute('data-index')) || '/index';\n\timportjs(scriptName);\n});\n","const protocol = location.protocol;\nconst protocolSocket = (protocol === 'http:') ? 'ws' : 'wss';\nconst hostname = location.hostname;\n/**\n * Holds client hardware, browser, and host info.\n *\n * @memberof $\n * @category browser\n * @ignoreTest\n * @property {Object} info - Client hardware & host info.\n * @type {Object}\n */\nexport const info = {\n\thardware: {\n\t\tcores: navigator.hardwareConcurrency\n\t},\n\thost: {\n\t\tname: hostname,\n\t\tprotocol,\n\t\tprotocolSocket,\n\t}\n};\n\n","import { assign } from '../objects/assign.js';\nimport { eventAdd } from './event.js';\nimport { info } from './info.js';\nimport { isDocumentReady } from './ready.js';\nexport function saveDimensions() {\n\tassign(info, {\n\t\tbodyHeight: document.body.offsetHeight,\n\t\tbodyWidth: document.body.offsetWidth,\n\t\twindowHeight: window.innerHeight,\n\t\twindowWidth: window.innerWidth,\n\t});\n}\n/**\n * Save current document & window dimensions to the info property.\n *\n * @function updateDimensions\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * updateDimensions();\n */\nexport function updateDimensions() {\n\tsaveDimensions();\n}\nisDocumentReady(updateDimensions);\neventAdd(window, 'load', updateDimensions, true);\neventAdd(window, 'resize', updateDimensions, true);\n\n","/**\n * LocalStorage Module..\n *\n * @module browser/storage\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nimport { virtualStorage } from '../utilities/virtualStorage.js';\nexport let hasLocal;\nfunction hasStorage(storeCheck) {\n\ttry {\n\t\tstoreCheck().removeItem('TESTING');\n\t\thasLocal = true;\n\t} catch (e) {\n\t\thasLocal = false;\n\t}\n}\nhasStorage(() => {\n\treturn localStorage;\n});\n/**\n * Constructs a virtual storage container with localStorage support.\n * Crate will fallback to strictly virtual storage if localStorage isn't supported.\n * If localStorage is supported virtual storage will be used first & only fallback to localStorage when needed.\n * Crate is ideal as a seemless drop in replacement for localStorage when not supported or allowed.\n *\n * @class Crate\n * @category browser\n * @returns {Crate} - Returns a new instance of Crate.\n *\n * @example\n * import { Crate, construct, assert } from '@universalweb/acid';\n * const storageCrate = construct(Crate);\n * storageCrate.setItem('key', 'value');\n * assert(storageCrate.getItem('key'), 'value');\n */\nexport class Crate {\n\tconstructor(initialObject) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local = localStorage;\n\t\t}\n\t\tthis.storage = virtualStorage(initialObject);\n\t}\n\thasLocal = hasLocal;\n\t/**\n\t * Save an item to a crate.\n\t *\n\t * @function setItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.setItem(key, (isString(value)) ? value : stringify(value));\n\t\t}\n\t\treturn this.storage.setItem(key, value);\n\t}\n\t/**\n\t * Get an item from a crate.\n\t *\n\t * @function getItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tgetItem(key) {\n\t\tconst item = this.storage.getItem(key);\n\t\tif (hasValue(item)) {\n\t\t\treturn item;\n\t\t}\n\t\tif (!hasValue(item) && this.hasLocal) {\n\t\t\treturn this.local.getItem(key);\n\t\t}\n\t}\n\t/**\n\t * Clears all data for the crate including all of localStorage if supported.\n\t *\n\t * @function clear\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.clear();\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tclear() {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.clear();\n\t\t}\n\t\tthis.storage.clear();\n\t}\n\t/**\n\t * Remove an item from a crate.\n\t *\n\t * @class Crate\n\t * @category browser\n\t * @function removeItem\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.removeItem('key');\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tremoveItem(key) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.removeItem(key);\n\t\t}\n\t\tthis.storage.removeItem(key);\n\t}\n}\n/**\n * The crate function is a factory which wraps the Crate class constructor.\n *\n * @function crate\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new Crate Object.\n *\n * @example\n * const storageCrate = crate();\n * // => New Crate Object\n */\nexport function crate(virtualFlag) {\n\treturn new Crate(virtualFlag);\n}\n\n","import { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nconst generateTheme = (color, bg) => {\n\treturn `color:${color};background:${bg};`;\n};\nexport const themes = {\n\talert: generateTheme('#fff', '#f44336'),\n\timportant: generateTheme('#fff', '#E91E63'),\n\tnotify: generateTheme('#fff', '#651FFF'),\n\twarning: generateTheme('#000', '#FFEA00'),\n};\n/**\n * Console.trace wrapper with theme support.\n *\n * @function cnsl\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Object} value - The value to be logged.\n * @param {String} themeName - The name of the theme to be used.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnsl('Lucy', 'notify');\n * // 'Lucy'\n*/\nexport const cnsl = (value, themeName) => {\n\tconst data = isString(value) ? value : stringify(value);\n\tif (themeName === 'alert' || themeName === 'warning') {\n\t\treturn console.trace(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n\t}\n\tconsole.log(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n};\n/**\n * Create color themes for cnsl method.\n *\n * @function cnslTheme\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {String} themeName - The name of the theme.\n * @param {String} color - The text color.\n * @param {String} background - The background color of the block.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnslTheme('BlackNWhite', '#fff', '#000');\n*/\nexport const cnslTheme = (themeName, color, background) => {\n\tthemes[themeName] = generateTheme(color, background);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { difference } from '../arrays/difference.js';\n/**\n * Checks if value is a plain DOM Node.\n *\n * @function isDom\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDom, assert } from '@universalweb/acid';\n * assert(isDom(document.querySelectorAll('head')), true);\n */\nexport function isDom(source) {\n\treturn source && source.nodeType !== 9;\n}\n/**\n * Checks if the value is a HTMLCollection.\n *\n * @function isHTMLCollection\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isHTMLCollection, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isHTMLCollection(document.getElementsByClassName('test')), true);\n */\nconst objectHTMLCollection = '[object HTMLCollection]';\nexport function isHTMLCollection(source) {\n\treturn (hasValue(source)) ? source.toString() === objectHTMLCollection : false;\n}\n/**\n * Checks if the value is a NodeList.\n *\n * @function isNodeList\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNodeList, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isNodeList(document.querySelectorAll('.test')), true);\n */\nconst objectNodeList = '[object NodeList]';\nexport function isNodeList(source) {\n\treturn (hasValue(source)) ? source.toString() === objectNodeList : false;\n}\n"],"names":["sign","random","normalizeCase","space","returnFlow"],"mappings":"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AACA;AACA;AACA;AACA;AACO,SAAS,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;AACrC,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK;AACpB,EAAE,OAAO,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;AAChC,EAAE,CAAC;AACH;;ACpBA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,MAAM,EAAE;AAC1C,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,YAAY,GAAG,MAAM,CAAC,oBAAoB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,WAAW,GAAG,MAAM,CAAC,yBAAyB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,OAAO,GAAG,MAAM,CAAC,eAAe;AACjC,MAAC,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,cAAc;;AC/C9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG,MAAM,CAAC;;ACd7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE;AACpC,CAAC,OAAO,MAAM,GAAG,MAAM,CAAC;AACxB;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE;AAC/B,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;AACnB;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;AACtC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;AACvB;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,MAAM,EAAE;AAClC,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;AACnB;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;AACxC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;AACvB;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE;AACnD,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;AAClB,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE;AAC1B,EAAE,OAAO,CAAC,CAAC;AACX,EAAE;AACF,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,IAAI,GAAG,CAAC;AACtC;;ACtBA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;AAC1C,CAAC,OAAO,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACrC;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;AACzC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;AACvB;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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A;AACA;AACY,MAAC,MAAM,GAAG,SAAS,CAAC,MAAM;;AChGtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,CAAC;AAC5B,CAAC,WAAW,CAAC,aAAa,GAAG,EAAE,EAAE;AACjC,EAAE,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;AAC7B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,OAAO,CAAC,GAAG,EAAE;AACd,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AACrB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,KAAK,GAAG;AACT,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAClB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,CAAC,GAAG,EAAE;AACjB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACzB,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,aAAa,EAAE;AAC9C,CAAC,OAAO,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;AAC1C;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,MAAM,EAAE;AAChC,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AACnD,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"} \ No newline at end of file diff --git a/build/module/browser/index.js b/build/module/browser/index.js index eca9e620..f043b423 100644 --- a/build/module/browser/index.js +++ b/build/module/browser/index.js @@ -1,2 +1,2 @@ -function t(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r}function n(t){return t.length=0,t}function r(t){return t.slice()}function e(t){return void 0===t}function o(t){return Boolean(t.length)}function c(t){return null===t}function u(t){return!e(t)&&!c(t)}function i(t){return t}function s(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const f=n.call(e,t,c,r,i,s,o);u(f)&&r.push(f)})):s(t,((t,c,i,s)=>{const f=n(t,c,r,i,s,e,o);u(f)&&r.push(f)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const c=await n(t,e,r,o);u(c)&&r.push(c)})),r}const{sign:h}=Math;function d(t){return-1===h(t)}function g(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function m(t,n,r=1,e=[]){return d(r)?e:t{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function $(t,n=1,r=t.length){return t.splice(n,r)}const S=(t,n=1,r=t.length)=>$(t,0,r-n);function C(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function j(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function B(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,c,u,e)&&r.push(t)})),r}async function L(t,n,r=[],e){return await a(t,(async(t,o,c,u)=>{!0===await n(t,o,r,c,u,e)&&r.push(t)})),r}function T(t,n){return n?t.slice(0,n):t[0]}function M(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(v(n))),[]);return r}function R(t){return t.slice(0,t.length-1)}function N(t,...n){return f(t,(t=>{if(B(n,(n=>n.includes(t))))return t}))}const P=Object.keys;function U(t){if(t)return P(t)}const _=/\.|\[/,k=/]/g,D="";function H(t){return t.replace(k,D).split(_)}function W(t,n){if(!n)return!1;let r=n;return B(y(t)?t:H(t),(t=>(r=r[t],u(r)))),r}const Z=Object.hasOwn;function q(t,...n){if(t)return B(n,(n=>{const r=H(n);if(1===r.length)return Z(t,n);{const n=r.pop(),e=W(r,t);return!!e&&Z(e,n)}}))}function z(t,...n){if(t)return Boolean(n.find((n=>{const r=H(n);if(1===r.length)return Z(t,n);{const n=r.pop(),e=W(r,t);return!!e&&Z(e,n)}})))}const G=t=>!!u(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function V(t,n){return t?.constructor===n||!1}function J(t){return n=>V(n,t)}function K(t){return t?.constructor?.name}function Q(t){return n=>K(n)===t||!1}function X(t){return function(n,...r){return r?t(n)&&B(r,t):t(n)}}const Y=Q("Buffer"),tt=X(Y),nt=(t,n)=>{if(t===n)return!0;if(tt(t))return t.equals(n);if(t.toString()===n.toString())if(G(t)){const r=U(t);if(q(n,r))return B(r,(r=>nt(t[r],n[r])))}else if(y(t)&&t.length===n.length)return B(t,((t,r)=>nt(t,n[r])));return!1};function rt(t,n){return t.length===n.length&&B(t,((t,r)=>nt(n[r],t)))}const et=Math.max;function ot(t){return et(...t)}function ct(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]}function ut(t,n,r=[],e,o){return u(e)?s(t,((t,c,u,i)=>{r[c]=n.call(e,t,c,r,u,i,o)})):s(t,((t,e,c,u)=>{r[e]=n(t,e,r,c,u,o)})),r}async function it(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function st(t,n,r=[],e){let o=0;const c=t.length;for(let u=c-1;u>=0;u--)r[o]=n(t[u],u,t,c,e),o++;return r}function ft(t,n,r=[],e){const o=t.length;for(let c=0;c{if(n(t,e))return t;r.push(t)})),r]}function dt(t,n){return n-t}function gt(t){return t.sort(dt)}function pt(t,n){let r=t.length;for(let e=0;er)return $t(t);if(1===n)return[t[At(r-1,0)]];const e=[],o={};let c,u=0;for(;u(r=e,n>=t&&(r=e+1,!0)))),r}function Ot(t,n=1){return t.slice(0,n)}function Ft(t,n=1){const r=t.length;return t.slice(r-n,r)}function Lt(t,n,r){return r.indexOf(t)===n}function Tt(t,n,r){return t!==r[n-1]}function Mt(t,n){return n?t.filter(Tt):t.filter(Lt)}function Rt(...t){return Mt(A(t))}function Nt(t,n){const r=t.length;for(let e=0;e!r.has(t)))}function Ht(...t){const n=I(Map),r=[];return 2===t.length?x(t[0],t[1]):(s(t,((t,r)=>{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&r.push(t.child)})),r)}function Wt(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function Zt(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function qt(t){return tt(t)&&t||u(t)&&Buffer.from(t)||Buffer.alloc(0)}function zt(t){return t.fill(0),t}function Gt(t,n){const r={};let e;return s(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r}function Vt(t,n){let r=0;return s(t,(t=>{t[n]&&r++})),r}function Jt(t,n){let r=0;return s(t,(t=>{t[n]||r++})),r}function Kt(t,n,r,e,o){if(t[o]===e)return!0}function Qt(t,n,r="id"){const e=t.findIndex(((t,e)=>Kt(t,0,0,n,r)));return-1!==e&&e}function Xt(t,n,r="id"){const e=t.find(((t,e)=>Kt(t,0,0,n,r)));return-1!==e&&e}function Yt(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?-1:0:1:-1}function tn(t,n="id",r){return t.sort(((t,e)=>Yt(t,e,n,r)))}function nn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):o.localeCompare(c)}function rn(t,n="id",r){return t.sort(((t,e)=>nn(t,e,n,r)))}function en(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?1:0:-1:1}function on(t,n="id",r){return t.sort(((t,e)=>en(t,e,n,r)))}function cn(t,n="id"){return on(t,n)[0]}function un(t,n){return tn(t,n,!1)[0]}function sn(t,n){const r={};return s(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r}function fn(t,n="id"){const r={};return s(t,(t=>{r[t[n]]=t})),r}function an(t,n,r){return ut(t,((t,e)=>t[n](r,e)))}function ln(t,n,r){return it(t,(async(t,e)=>t[n](r,e)))}const hn=Q("Number"),dn=X(hn);function gn(t){return!dn(t)}const pn=J(String);function mn(t){return!pn(t)}function wn(t,n){if(t)return pn(n)?t[n]:ut(n,(n=>t[n]))}function yn(t,n){return ut(t,(t=>wn(t,n)))}function bn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c.localeCompare(o)}function vn(t,n="id",r){return t.sort(((t,e)=>bn(t,e,n,r)))}function An(t){if(t)return t.substring(t.lastIndexOf(".")+1)}function En(t){if(t)return t.substring(t.lastIndexOf("/")+1)}function In(t){return n=>!!u(n)&&t.test(n)}const xn=In(/\.css$/),$n=In(/\.html$/),Sn=In(/\.js$/),Cn=In(/\.json$/);function jn(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)}function Bn(t,n){return(...r)=>t(...r.splice(0,n))}function On(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)}const Fn=Object.assign;function Ln(t,...n){if(u(t))return Fn(t,...n)}const Tn=async(t,n,r,e)=>{if(!t)return;const o=U(t);return u(r)?await a(o,((c,u,i,s)=>n.call(r,t[c],c,t,s,o,e))):await a(o,((r,c,u,i)=>n(t[r],r,t,i,o,e))),t};function Mn(t,n,r,e){if(!t)return;const o=U(t);return u(r)?s(o,((o,c,u,i)=>{n.call(r,t[o],o,t,i,u,e)})):s(o,((r,o,c,u)=>{n(t[r],r,t,u,c,e)})),t}async function Rn(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t!!u(t)&&t instanceof Function,Wn=Q("AsyncFunction"),Zn=X(Wn);function qn(t,n,r,e,o,c){return(i,s,f,a,l)=>{let h;const d=Zn(s);if(u(i)&&s)return h=y(i)?d?n:t:G(i)||Hn(i)?d?e:r:o?d?c:o:kn(i)?c:d?e:r,h(i,s,f,a,l)}}const zn=qn(s,a,Mn,Tn,Un,Dn);class Gn{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;zn(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}function Vn(t){return I(Gn,[t])}function Jn(t,r=t.length){const e=[],o=(...c)=>{if(e.push(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}function Kn(t,r=t.length){const e=[],o=(...c)=>{if(e.unshift(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}const Qn=!0,Xn=()=>Qn,Yn=!1,tr=()=>Yn,nr=()=>{};function rr(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Qn),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const cr=I(or);function ur(t,n){return cr.set(t,n)}function ir(){rr(setTimeout(nr,0),(t=>{cr.remove(t)}))}const sr=Reflect.apply;function fr(t,n,r){if(Hn(t))return sr(t,n,r)}function ar(t,n){function r(...t){r.id!==Yn&&cr.remove(r.id),r.id=ur((()=>{r.callable(...t),r.id=Yn}),n)}return r.id=Yn,r.callable=t.bind(r),r.clear=()=>{r.id!==Yn&&(cr.remove(r.id),r.id=Yn)},r}function lr(t,...n){if(Hn(t))return t(...n)}async function hr(t,n){const r=t.length;for(let e=0;ezn(t,(t=>{t(n)}));function gr(t){return(...n)=>!t(...n)}function pr(t=0){return(...n)=>n[t]}const mr=t=>{let n;return(...r)=>(u(n)||(n=t(...r)),n)};async function wr(t,n,r={}){if(t)return await Tn(t,(async(t,e,o,c,u)=>{r[e]=await n(t,e,r,o,c,u)})),r}function yr(t,n,r={},e,o){if(t)return u(e)?Mn(t,((t,c,u,i,s)=>{r[c]=n.call(e,t,c,r,u,i,s,o)})):Mn(t,((t,e,c,u,i)=>{r[e]=n(t,e,r,c,u,i,o)})),r}function br(t){return t?.constructor}function vr(t,n=[]){const r=br(t);return r===Function&&"function"===r.name?function(){}:I(r,n)}function Ar(t,n=i,r){const e=r||vr(t);if(y(t)||Pn(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Hn(e.set);for(const[r,c]of t){const u=n(c,r,e,t);o?e.set(r,u):e[r]=u}return e}async function Er(t,n=i,r,e){if(kn(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||vr(t);if(y(t)||Pn(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const c=Hn(o.set);for await(const[r,e]of t){const u=await n(e,r,o,t);c?o.set(r,u):o[r]=u}return o}const Ir=qn(ut,it,yr,wr,Ar,Er);function xr(t){return(...n)=>Ir(t,(t=>t(...n)))}async function $r(t,n){if(!t)return;return O(U(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function Sr(t,n){if(!t)return;return B(U(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function Cr(t,n=i){if(y(t)||Pn(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function jr(t,n=i,r){if(kn(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(y(t)||Pn(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const Br=qn(B,O,Sr,$r,Cr,jr);function Or(t){return n=>Br(t,(t=>t(n)))}function Fr(t,n){return(...r)=>t(...n.map((t=>r[t])))}function Lr(t,n){function r(...t){r.id?r.shouldThrottle=Qn:(r.callable(...t),r.id=ur((()=>{r.shouldThrottle&&r.callable(...t),r.id=Yn}),n))}return r.id=Yn,r.callable=t.bind(r),r.clear=()=>{cr.remove(r.id),r.id=Yn},r}function Tr(t,n){return(...r)=>n(t,...r)}const Mr=Function.prototype;function Rr(t){return Mr.call.bind(t)}const Nr=Object.getOwnPropertyNames,Pr=Object.getOwnPropertyDescriptor,Ur=Object.defineProperty,_r=Rr(Object.hasOwnProperty),kr=Object.is;function Dr(t,n){return t+n}function Hr(t){return t-1}function Wr(t,n){return t/n}function Zr(t){return t+1}function qr(t,n){return t*n}function zr(t,n){return 0!==t&&(0===n?0:n/t*100)}const{random:Gr}=Math;function Vr(t,n=0){return Gr()*(t-n)+n}function Jr(t,n){return t%n}function Kr(t){return t.reduce(((t,n)=>t-n),0)}function Qr(t){return t.reduce(((t,n)=>t+n),0)}function Xr(t,n,r){return t>n&&tr}const{sign:te}=Math;function ne(t){return 1===te(t)}function re(t){return 0===t}const ee=Object.entries;function oe(t){if(u(t))return ee(t)}function ce(t){const n=[];return Mn(t,((t,r)=>{u(t)&&n.push(r)})),n}async function ue(t,n=i,r={}){return await Tn(t,(async(t,e,o,c,i)=>{const s=await n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function ie(t,n=i,r={}){return Mn(t,((t,e,o,c,i)=>{const s=n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function se(t,n,r={}){return Mn(t,((t,e,o,c,u)=>{!0===n(t,e,r,o,c,u)&&(r[e]=t)})),r}async function fe(t,n,r={}){return await Tn(t,(async(t,e,o,c,u)=>{!0===await n(t,e,r,o,c,u)&&(r[e]=t)})),r}function ae(t,n={}){if(t)return Mn(t,((t,r)=>{n[t]=r})),n}const le=(t,n)=>{if(t===n)return!0;const r=U(t),e=U(n);return r.length===e.length&&B(r,(r=>t[r]===n[r]))},he=Q("RegExp"),de=X(he),ge=/[()[\]{}*+?^$|#.,/\\\s-]/g;function pe(t){return t.replace(ge,"\\$&")}function me(t,n){return n?me(ut(t,pe)):RegExp(t.join("|"))}function we(t,n){if(t){if(y(n)){const r=me(n);return se(t,((t,n)=>!r.test(n)))}if(de(n))return se(t,((t,r)=>!n.test(r)));if(pn(n))return se(t,((t,r)=>r!==n));if(dn(n)){const r=n.toString();return se(t,((t,n)=>n!==r))}return Hn(n)?se(t,((t,r)=>!n(t,r))):void 0}}const ye=(t,n,r={})=>{if(t)return s(n,(n=>{r[n]=t[n]})),r};function be(t){if(t)return U(t).length}const ve=(t,n)=>{const r={};return s(t,((t,e)=>{r[t]=n[e]})),r},Ae=t=>{const n=[],r=[];return Mn(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},Ee=/[ _-]+/g;function Ie(t){let n="";return t.replace(Ee," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n}const xe=/[ _-]+/g,$e=/[ ]+/g;function Se(t){return t.replace(/([A-Z]+)/g," $1").replace(xe," ").trim().toLowerCase().replace($e,"-")}const Ce=/[ _-]+/g,je=/[ ]+/g;function Be(t){return t.replace(/([A-Z]+)/g," $1").replace(Ce," ").trim().toLowerCase().replace(je,"_")}const Oe=/[ _-]+/g;function Fe(t){return t.replace(/([A-Z]+)/g," $1").replace(Oe," ").trim().toUpperCase()}const Le=/[ _-]+/g;function Te(t){return t.replace(/([A-Z]+)/g," $1").replace(Le," ").trim().toLowerCase()}function Me(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)}function Re(t,n=1){return t[t.length-n]}function Ne(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))}function Pe(t,n=1){return t.slice(0,-1*n)}function Ue(t,n=1){return t.substring(n)}function _e(t,n,r){return t.replace(new RegExp(`\\b${n.join("|")}\\b`,"gi"),r)}function ke(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=r-n;for(;u=0&&(c=e[u]," "!==c);u--);return t.slice(0,u).trim()})(t,n,r):t}function De(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=n;for(;u0&&(c=e[u]," "!==c);u++);return t.substring(u,r).trim()})(t,n,r):t}const He=/%(?![\da-f]{2})/gi,We=/&/g,Ze=//g,ze=/"/g;function Ge(t){return decodeURIComponent(t.replace(He,(()=>"%25")))}function Ve(t){return t.replace(We,"&").replace(Ze,"<").replace(qe,">").replace(ze,""")}function Je(t){return Ve(Ge(t))}const Ke=/\S+/g,Qe=/\w+/g;function Xe(t){return t.match(Ke)||[]}function Ye(t){return t.match(Qe)||[]}const to=/\w+/g;function no(t){return t[0].toUpperCase()}function ro(t){return no(t)+Ue(t)}function eo(t){return no(t)+Ue(t).toLowerCase()}function oo(t){return t.replace(to,(t=>ro(t)))}function co(t){return t.replace(to,(t=>eo(t)))}function uo(t){return br(t)?.name}function io(t){return!!u(t)&&"[object Arguments]"===t.toString()}function so(t){return!u(t)}const fo=Q("Map"),ao=X(fo),lo=/Array/,ho="Array";function go(t){if(t){const n=uo(t);if(lo.test(n)&&n!==ho)return!0}return!1}function po(t,n){if(so(t)||Hn(t))return!1;if(y(t)||go(t))return!0;const r=t.length;if(!so(r)||!dn(r)||r<0)return!1;if(n){const n=U(t);return!!n&&Br(n,((t,n)=>n>=0&&dn(n)))}return!0}const mo=Q("BigInt"),wo=X(mo),yo=Q("Boolean"),bo=X(yo),vo=Q("ArrayBuffer"),Ao=X(vo);function Eo(t,n){return!(!t||!n)&&t instanceof n}const Io=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function xo(t){if(u(t)){const n=t?.constructor?.name;return Io.test(n)}return!1}const $o=Q("Date"),So=X($o);function Co(t){return pn(t)||y(t)?!o(t):G(t)?!be(t):!u(t)}function jo(t){return!1===t}const Bo=Q("Float32Array"),Oo=X(Bo),Fo=Q("Float64Array"),Lo=X(Fo),{isInteger:To}=Number,Mo=To,Ro=Q("Int16Array"),No=X(Ro),Po=Q("Int32Array"),Uo=X(Po),_o=Q("Int8Array"),ko=X(_o);function Do(t){return u(t)&&"function"==typeof t[Symbol.iterator]}function Ho(t){return!!t&&t instanceof Promise}function Wo(t){return!!t&&(Ho(t)||Zn(t)||kn(t))}function Zo(t,n){return!!(t&&n&&n.call)&&t instanceof n}function qo(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n}function zo(t,n){return!so(t)&&!so(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)}const{isSafeInteger:Go}=Number,Vo=Go;function Jo(t,n){const r=br(t),e=br(n);return r===e&&r.name===e.name}function Ko(t){return!0===t}const Qo=Q("Uint16Array"),Xo=X(Qo),Yo=Q("Uint32Array"),tc=X(Yo),nc=Q("Uint8Array"),rc=X(nc),ec=Q("Uint8ClampedArray"),oc=X(ec),cc=Q("WeakMap"),uc=X(cc),ic=void 0!==globalThis.Deno,sc=void 0!==globalThis.process&&process.versions&&process.versions.node;function fc(t,n=!0){return Boolean(t)&&n}function ac(t,n=!0){return!1===Boolean(t)&&n}function lc(t,n,r,e){if(u(t)){if(Hn(n))return r?fr(n,r,e):n(...e);if(G(n))return n[r]=t,n}}function hc(t,n){return jo(nt(t,n))}const dc=JSON;function gc(t,n){if(t)return dc.parse(t,n)}const pc=dc.stringify;function mc(t,n,r){const e=globalThis.options||r;let o;return Hn(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${pc(t)}\n\t\tExpected: ${pc(n)}`,e)}async function wc(t,n,r){const e=await t;return!(Hn(n)&&!1===await n(e,r))&&!hc(e,n)||mc(e,n,r)}function yc(t,n,r){if(Wo(t)||Wo(n))return wc(t,n,r);return!(Hn(n)&&!1===n(t,r))&&!hc(t,n)||mc(t,n,r)}function bc(t,n,r){const e=Ir(t,(t=>Hn(t)?t.bind(n):t));return r?Ln(r,e):e}function vc(t){if(t){if(tt(t))return zt(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t}const Ac=globalThis.structuredClone;function Ec(t){return Ac(t)}function Ic(t){if(G(t)){const n=U(t),r=n.length,e={};for(let o=0;ofc(t)))}async function xc(t,n=i,r,e){if(kn(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);u(e)&&r.push(e)}return r}const o=r||vr(t);if(y(t)||Pn(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);u(c)&&e(c)}return o}const c=Hn(o.set);for await(const[r,e]of t){const i=await n(e,r,o,t);u(i)&&(c?o.set(r,i):o[r]=i)}return o}function $c(t,n=i,r){const e=r||vr(t);if(y(t)||Pn(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);u(c)&&o(c)}return e}const o=Hn(e.set);for(const[r,c]of t){const i=n(c,r,e,t);u(i)&&(o?e.set(r,i):e[r]=i)}return e}const Sc=qn(f,l,ie,ue,$c,xc);function Cc(...t){return Zn(t[0])?async function(...n){return Br(t,(async t=>Br(n,(async n=>t(n)))))}:function(...n){return Br(t,(t=>Br(n,(n=>t(n)))))}}function jc(t,n=i,r){const e=r||vr(t);if(y(t)||Pn(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Hn(e.set);for(const[o,c]of t){!0===n(c,o,e,t)&&(r?e.set(o,c):e[o]=c)}}return e}async function Bc(t,n=i,r,e){if(kn(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||vr(t);if(y(t)||Pn(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Hn(o.set);for await(const[e,c]of t){!0===await n(c,e,o,t)&&(r?o.set(e,c):o[e]=c)}}return o}const Oc=qn(F,L,se,fe,jc,Bc);function Fc(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const Lc=Fc(s),Tc=Fc(C);function Mc(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const Rc=Mc(a),Nc=Mc(j);function Pc(t,n){const r=vr(t),e=r.push||r.add;if(e&&Hn(e)){const o=e.bind(r);t.forEach((t=>{const e=n(t,r);o(e)}))}else Hn(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r}function Uc(t,n){const r={};return s(t,((t,e)=>{r[n[e]]=t})),r}function _c(t,n,r){if(so(t)||so(n))return!1;if(pn(t))return pn(n)?t.includes(n,r):de(n)?n.test(t):Hn(n)?Boolean(n(t)):Br(n,(n=>Boolean(_c(t,n))));if(y(t)){if(pn(n))return t.includes(n,r);if(de(n))return Br(t,(t=>t.test(n)));if(y(n))return Br(n,(n=>Boolean(_c(t,n))))}return!1}const kc=In(/\./),Dc=(t,n,r)=>(n&&!u(t[n])&&(t[n]=r),t);class Hc{list=I(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Qn),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Wc=I(Hc);function Zc(t,n){return Wc.set(t,n)}function qc(){rr(setTimeout(nr,0),(t=>{Wc.remove(t)}))}function zc(t,...n){return zn(n,(n=>{zn(n,((n,r)=>{if(t[r]&&(G(n)||y(n)||n.forEach))return zc(t[r],n);t[r]=n}))})),t}class Gc{static models={};constructor(t,n){u(n)?(Ln(this,n),this.modelName=t,Gc.models.set(t,n)):Ln(this,t)}}function Vc(t,n){return u(n)?I(Gc,[t,n]):W(t,Gc.models)}function Jc(t,n){return[t,n]}function Kc(t,n,r){const e=t.length,o=[];for(let c=0;cB(r,(r=>nt(t[r],n[r])));function tu(t,n,r){return n&&G(t)||dn(n)&&y(t)?t[n]=r:t.set?t.set(n,r):t.push?t.push(r):t.add?t.add(r):t[n]=r,t}function nu(t,n,r){return dn(r)&&y(t)?t[r]=n:t.push?t.push(n):t.add?t.add(n):t[r]=n,t}class ru{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Mn(t,(n=>{t[n]=new ru(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new ru(r),!0)})}}const eu=()=>[],ou=()=>({}),cu=()=>"";async function uu(t,n){for(let r=0;r0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const au=I(fu);class lu{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function hu(t){return new lu(t)}function du(t){return t?du[t]:U(du)}const gu=globalThis.navigator?.userAgentData;if(gu)Mn(gu,((t,n)=>{bo(t)&&t&&(du[n]=t)})),s(gu.brands,(t=>{du[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{du[t]=!0}))}function pu(t,n,r,e){return t.addEventListener(n,r,e),t}function mu(t,n,r,e){return t.removeEventListener(n,r,e),t}function wu(t){return 13===t.keyCode}const yu=document.createDocumentFragment.bind(document);function bu(t,n){return t.appendChild(n),n}function vu(t,n){return y(n)?ve(n,ut(n,(n=>t.getAttribute(n)))):(Mn(n,((n,r)=>{t.setAttribute(r,n)})),t)}const Au=/^.[\w_-]+$/,Eu=/^[A-Za-z]+$/,Iu=/\s/,xu=document.getElementsByClassName.bind(document),$u=document.getElementsByTagName.bind(document),Su=document.getElementById.bind(document),Cu=document.querySelector.bind(document),ju=document.querySelectorAll.bind(document);function Bu(t){switch(t[0]){case"#":if(!Iu.test(t))return Su(Ue(t));break;case".":if(Au.test(t))return xu(Ue(t));break;default:if(Eu.test(t))return $u(t)}return ju(t)}const Ou=document.createElement.bind(document);function Fu(t){const n=kc(t)&&t||`${t}.js`;return(t=>Xc((n=>{pu(t,"load",n,!0),pu(t,"error",n,!0),bu(Cu("head"),t)})))(vu(Ou("script"),{async:"",src:n}))}function Lu(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&pu(document,"DOMContentLoaded",t),!1)}Lu((()=>{const t=Su("AcidLib");Fu(t&&t.getAttribute("data-index")||"/index")}));const Tu=location.protocol,Mu="http:"===Tu?"ws":"wss",Ru=location.hostname,Nu={hardware:{cores:navigator.hardwareConcurrency},host:{name:Ru,protocol:Tu,protocolSocket:Mu}};function Pu(){Ln(Nu,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function Uu(){Pu()}let _u;Lu(Uu),pu(window,"load",Uu,!0),pu(window,"resize",Uu,!0),function(t){try{t().removeItem("TESTING"),_u=!0}catch(t){_u=!1}}((()=>localStorage));class ku{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=hu(t)}hasLocal=_u;setItem(t,n){return this.hasLocal&&this.local.setItem(t,pn(n)?n:pc(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return u(n)?n:!u(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}function Du(t){return new ku(t)}const Hu=(t,n)=>`color:${t};background:${n};`,Wu={alert:Hu("#fff","#f44336"),important:Hu("#fff","#E91E63"),notify:Hu("#fff","#651FFF"),warning:Hu("#000","#FFEA00")},Zu=(t,n)=>{const r=pn(t)?t:pc(t);if("alert"===n||"warning"===n)return console.trace(`%c${r}`,`${Wu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${r}`,`${Wu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},qu=(t,n,r)=>{Wu[t]=Hu(n,r)};function zu(t){return t&&9!==t.nodeType}function Gu(t){return!!u(t)&&"[object HTMLCollection]"===t.toString()}function Vu(t){return!!u(t)&&"[object NodeList]"===t.toString()}export{Gn as Chain,ku as Crate,Hc as Intervals,Gc as Model,ru as Store,or as Timers,fu as UniqID,lu as VirtualStorage,Dr as add,jn as after,bu as append,fr as apply,me as arrayToRegex,Uc as arraysToObject,Bn as ary,yc as assert,wc as assertAsync,Ln as assign,On as before,bc as bindAll,Rr as cacheNativeMethod,zr as calcProgress,Ie as camelCase,Vn as chain,t as chunk,Ne as chunkString,vc as clear,n as clearArray,zt as clearBuffer,qc as clearIntervals,ir as clearTimers,Ec as clone,r as cloneArray,vr as cloneType,Zu as cnsl,qu as cnslTheme,Ic as compact,ce as compactKeys,Sc as compactMap,f as compactMapArray,l as compactMapAsyncArray,ue as compactMapAsyncObject,ie as compactMapObject,Kc as concurrent,Qc as concurrentStatus,I as construct,K as constructorName,Gt as countBy,Vt as countKey,Jt as countWithoutKey,Du as crate,yu as createFragment,Jn as curry,Kn as curryRight,ar as debounce,Hr as deduct,Ur as defProp,x as difference,Wr as divide,$ as drop,S as dropRight,zn as each,s as eachArray,a as eachAsyncArray,Tn as eachAsyncObject,Mn as eachObject,C as eachRight,j as eachRightAsync,v as ensureArray,qt as ensureBuffer,pe as escapeRegex,ge as escapeRegexRegex,pu as eventAdd,mu as eventRemove,Br as every,Cc as everyArg,B as everyArray,O as everyAsyncArray,$r as everyAsyncObject,Sr as everyObject,Yn as falsy,Oc as filter,F as filterArray,L as filterAsyncArray,fe as filterAsyncObject,se as filterObject,Qt as findIndex,Kt as findIndexCache,Xt as findItem,T as first,M as flatten,A as flattenDeep,Lc as flow,Rc as flowAsync,Nc as flowAsyncRight,Tc as flowRight,w as forEach,Rn as forEachAsync,Pc as forMap,Un as forOf,Dn as forOfAsync,$c as forOfCompactMap,xc as forOfCompactMapAsync,Cr as forOfEvery,jr as forOfEveryAsync,jc as forOfFilter,Bc as forOfFilterAsync,Ar as forOfMap,Er as forOfMapAsync,qn as generateLoop,W as get,xu as getByClass,Su as getById,$u as getByTag,oe as getEntries,An as getFileExtension,En as getFilename,cn as getHighest,un as getLowest,Bt as getNumberInsertIndex,Pr as getPropDesc,Nr as getPropNames,br as getType,uo as getTypeName,sn as groupBy,_c as has,z as hasAnyKeys,kc as hasDot,q as hasKeys,o as hasLength,_u as hasLocal,_r as hasProp,u as hasValue,Ve as htmlEntities,lr as ifInvoke,Dc as ifNotAssign,lc as ifValue,Fu as importjs,hr as inAsync,dr as inSync,Zr as increment,fn as indexBy,Nu as info,R as initial,Pe as initialString,Me as insertInRange,N as intersection,Zc as interval,Wc as intervals,ae as invert,an as invoke,ln as invokeAsync,du as isAgent,io as isArguments,y as isArray,Ao as isArrayBuffer,vo as isArrayBufferCall,po as isArrayLike,Zn as isAsync,Wn as isAsyncCall,wo as isBigInt,mo as isBigIntCall,bo as isBoolean,yo as isBooleanCall,tt as isBuffer,Y as isBufferCall,Eo as isChild,xo as isCloneable,V as isConstructor,J as isConstructorFactory,Q as isConstructorNameFactory,So as isDate,$o as isDateCall,ic as isDeno,Lu as isDocumentReady,zu as isDom,Co as isEmpty,wu as isEnter,nt as isEqual,Oo as isF32,Bo as isF32Call,Lo as isF64,Fo as isF64Call,jo as isFalse,ac as isFalsy,xn as isFileCSS,$n as isFileHTML,Sn as isFileJS,Cn as isFileJSON,Mo as isFloat,Hn as isFunction,kn as isGenerator,_n as isGeneratorCall,Gu as isHTMLCollection,No as isI16,Ro as isI16Call,Uo as isI32,Po as isI32Call,ko as isI8,_o as isI8Call,Do as isIterable,Wo as isKindAsync,ao as isMap,fo as isMapCall,rt as isMatchArray,le as isMatchObject,d as isNegative,Vu as isNodeList,sc as isNodejs,b as isNotArray,gn as isNotNumber,mn as isNotString,c as isNull,dn as isNumber,hn as isNumberCall,xt as isNumberEqual,Xr as isNumberInRange,Yr as isNumberNotInRange,Zo as isParent,G as isPlainObject,ne as isPositive,qo as isPrimitive,Ho as isPromise,de as isRegex,he as isRegexCall,zo as isRelated,Vo as isSafeInt,kr as isSame,Jo as isSameType,Pn as isSet,Nn as isSetCall,pn as isString,Ko as isTrue,fc as isTruthy,X as isTypeFactory,go as isTypedArray,Xo as isU16,Qo as isU16Call,tc as isU32,Yo as isU32Call,rc as isU8,oc as isU8C,ec as isU8CCall,nc as isU8Call,e as isUndefined,uc as isWeakMap,cc as isWeakMapCall,re as isZero,gc as jsonParse,Se as kebabCase,U as keys,ot as largest,ct as last,Te as lowerCase,Ir as map,ut as mapArray,it as mapAsyncArray,wr as mapAsyncObject,yr as mapObject,st as mapRightArray,ft as mapWhile,zc as merge,Vc as model,qr as multiply,gr as negate,so as noValue,vu as nodeAttribute,nr as noop,hc as notEqual,pr as nthArg,Fn as objectAssign,ee as objectEntries,be as objectSize,we as omit,mr as once,Lt as onlyUnique,xr as over,Or as overEvery,Jc as pair,ht as partition,ye as pick,yn as pluck,wn as pluckObject,Xc as promise,Yc as propertyMatch,Cu as querySelector,ju as querySelectorAll,Vr as randomFloat,At as randomInt,m as range,p as rangeDown,g as rangeUp,Ge as rawURLDecode,Fr as reArg,In as regexTestFactory,Jr as remainder,pt as remove,mt as removeBy,_e as replaceList,wt as rest,Ue as restString,i as returnValue,yt as right,Re as rightString,St as sample,Je as sanitize,Pu as saveDimensions,Bu as selector,tu as setKey,nu as setValue,$t as shuffle,jt as smallest,Be as snakeCase,rn as sortCollectionAlphabetically,vn as sortCollectionAlphabeticallyReverse,on as sortCollectionAscending,en as sortCollectionAscendingFilter,tn as sortCollectionDescending,Yt as sortCollectionDescendingFilter,lt as sortNumberAscending,gt as sortNumberDescening,nn as sortObjectsAlphabetically,bn as sortObjectsAlphabeticallyReverse,Tt as sortUnique,pc as stringify,eu as stubArray,tr as stubFalse,ou as stubObject,cu as stubString,Xn as stubTrue,at as subtract,Kr as subtractAll,dt as subtractReverse,Qr as sumAll,Ot as take,Ft as takeRight,Wu as themes,Lr as throttle,ur as timer,cr as timers,rr as times,uu as timesAsync,er as timesMap,iu as timesMapAsync,It as toArray,H as toPath,su as toggle,Xe as tokenize,ke as truncate,De as truncateRight,Qn as truth,Zt as unZip,Ae as unZipObject,Rt as union,au as uniqID,Mt as unique,Nt as untilFalseArray,Pt as untilTrueArray,Uu as updateDimensions,Fe as upperCase,ro as upperFirst,oo as upperFirstAll,no as upperFirstLetter,eo as upperFirstOnly,co as upperFirstOnlyAll,hu as virtualStorage,Ut as whileCompactMap,_t as whileEachArray,kt as whileMapArray,Dt as without,Ye as words,Tr as wrap,Ht as xor,Wt as zip,ve as zipObject}; +function t(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r}function n(t){return t.length=0,t}function r(t){return t.slice()}function e(t){return void 0===t}function o(t){return Boolean(t.length)}function c(t){return null===t}function u(t){return!e(t)&&!c(t)}function i(t){return t}function s(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const f=n.call(e,t,c,r,i,s,o);u(f)&&r.push(f)})):s(t,((t,c,i,s)=>{const f=n(t,c,r,i,s,e,o);u(f)&&r.push(f)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const c=await n(t,e,r,o);u(c)&&r.push(c)})),r}const{sign:h}=Math;function d(t){return-1===h(t)}function g(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function m(t,n,r=1,e=[]){return d(r)?e:t{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function $(t,n=1,r=t.length){return t.splice(n,r)}const S=(t,n=1,r=t.length)=>$(t,0,r-n);function C(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function j(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function B(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,c,u,e)&&r.push(t)})),r}async function L(t,n,r=[],e){return await a(t,(async(t,o,c,u)=>{!0===await n(t,o,r,c,u,e)&&r.push(t)})),r}function T(t,n){return n?t.slice(0,n):t[0]}function M(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(v(n))),[]);return r}function R(t){return t.slice(0,t.length-1)}function N(t,...n){return f(t,(t=>{if(B(n,(n=>n.includes(t))))return t}))}function P(t,n,r){if(!t)return;const e=t.length;if(u(r))for(let o=0;o(r=r[t],u(r)))),r}const q=Object.hasOwn;function z(t,...n){if(t)return B(n,(n=>{const r=W(n);if(1===r.length)return q(t,n);{const n=r.pop(),e=Z(r,t);return!!e&&q(e,n)}}))}function G(t,...n){if(t)return Boolean(n.find((n=>{const r=W(n);if(1===r.length)return q(t,n);{const n=r.pop(),e=Z(r,t);return!!e&&q(e,n)}})))}const V=t=>!!u(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function J(t,n){return t?.constructor===n||!1}function K(t){return n=>J(n,t)}function Q(t){return t?.constructor?.name}function X(t){return n=>Q(n)===t||!1}function Y(t){return function(n,...r){return r?t(n)&&B(r,t):t(n)}}const tt=X("Buffer"),nt=Y(tt),rt=(t,n)=>{if(t===n)return!0;if(nt(t))return t.equals(n);if(t.toString()===n.toString())if(V(t)){const r=_(t);if(z(n,r))return B(r,(r=>rt(t[r],n[r])))}else if(y(t)&&t.length===n.length)return B(t,((t,r)=>rt(t,n[r])));return!1};function et(t,n){return t.length===n.length&&B(t,((t,r)=>rt(n[r],t)))}const ot=Math.max;function ct(t){return ot(...t)}function ut(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]}function it(t,n,r=[],e,o){return u(e)?s(t,((t,c,u,i)=>{r[c]=n.call(e,t,c,r,u,i,o)})):s(t,((t,e,c,u)=>{r[e]=n(t,e,r,c,u,o)})),r}async function st(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function ft(t,n,r=[],e){let o=0;const c=t.length;for(let u=c-1;u>=0;u--)r[o]=n(t[u],u,t,c,e),o++;return r}function at(t,n,r=[],e){const o=t.length;for(let c=0;c{if(n(t,e))return t;r.push(t)})),r]}function gt(t,n){return n-t}function pt(t){return t.sort(gt)}function mt(t,n){let r=t.length;for(let e=0;er)return St(t);if(1===n)return[t[Et(r-1,0)]];const e=[],o={};let c,u=0;for(;u(r=e,n>=t&&(r=e+1,!0)))),r}function Ft(t,n=1){return t.slice(0,n)}function Lt(t,n=1){const r=t.length;return t.slice(r-n,r)}function Tt(t,n,r){return r.indexOf(t)===n}function Mt(t,n,r){return t!==r[n-1]}function Rt(t,n){return n?t.filter(Mt):t.filter(Tt)}function Nt(...t){return Rt(A(t))}function Pt(t,n){const r=t.length;for(let e=0;e!r.has(t)))}function Wt(...t){const n=I(Map),r=[];return 2===t.length?x(t[0],t[1]):(s(t,((t,r)=>{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&r.push(t.child)})),r)}function Zt(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function qt(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function zt(t){return nt(t)&&t||u(t)&&Buffer.from(t)||Buffer.alloc(0)}function Gt(t){return t.fill(0),t}function Vt(t,n){const r={};let e;return s(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r}function Jt(t,n){let r=0;return s(t,(t=>{t[n]&&r++})),r}function Kt(t,n){let r=0;return s(t,(t=>{t[n]||r++})),r}function Qt(t,n,r,e,o){if(t[o]===e)return!0}function Xt(t,n,r="id"){const e=t.findIndex(((t,e)=>Qt(t,0,0,n,r)));return-1!==e&&e}function Yt(t,n,r="id"){const e=t.find(((t,e)=>Qt(t,0,0,n,r)));return-1!==e&&e}function tn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?-1:0:1:-1}function nn(t,n="id",r){return t.sort(((t,e)=>tn(t,e,n,r)))}function rn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):o.localeCompare(c)}function en(t,n="id",r){return t.sort(((t,e)=>rn(t,e,n,r)))}function on(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?1:0:-1:1}function cn(t,n="id",r){return t.sort(((t,e)=>on(t,e,n,r)))}function un(t,n="id"){return cn(t,n)[0]}function sn(t,n){return nn(t,n,!1)[0]}function fn(t,n){const r={};return s(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r}function an(t,n="id"){const r={};return s(t,(t=>{r[t[n]]=t})),r}function ln(t,n,r,e){return it(t,e?(t,o)=>t[n].call(e,r):(t,e)=>t[n](r))}function hn(t,n,r,e){return st(t,e?t=>t[n].call(e,r):async t=>t[n](r))}const dn=X("Number"),gn=Y(dn);function pn(t){return!gn(t)}const mn=K(String);function wn(t){return!mn(t)}function yn(t,n){if(t)return mn(n)?t[n]:it(n,(n=>t[n]))}function bn(t,n){return it(t,(t=>yn(t,n)))}function vn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c.localeCompare(o)}function An(t,n="id",r){return t.sort(((t,e)=>vn(t,e,n,r)))}function En(t){if(t)return t.substring(t.lastIndexOf(".")+1)}function In(t){if(t)return t.substring(t.lastIndexOf("/")+1)}function xn(t){return n=>!!u(n)&&t.test(n)}const $n=xn(/\.css$/),Sn=xn(/\.html$/),Cn=xn(/\.js$/),jn=xn(/\.json$/);function Bn(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)}function On(t,n){return(...r)=>t(...r.splice(0,n))}function Fn(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)}const Ln=Object.assign;function Tn(t,...n){if(u(t))return Ln(t,...n)}const Mn=async(t,n,r,e)=>{if(!t)return;const o=_(t);return u(r)?await a(o,((c,u,i,s)=>n.call(r,t[c],c,t,s,o,e))):await a(o,((r,c,u,i)=>n(t[r],r,t,i,o,e))),t};function Rn(t,n,r,e){if(!t)return;const o=_(t);return u(r)?s(o,((o,c,u,i)=>{n.call(r,t[o],o,t,i,u,e)})):s(o,((r,o,c,u)=>{n(t[r],r,t,u,c,e)})),t}async function Nn(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t!!u(t)&&t instanceof Function,Zn=X("AsyncFunction"),qn=Y(Zn);function zn(t,n,r,e,o,c){return(i,s,f,a,l)=>{let h;const d=qn(s);if(u(i)&&s)return h=y(i)?d?n:t:V(i)||Wn(i)?d?e:r:o?d?c:o:Dn(i)?c:d?e:r,h(i,s,f,a,l)}}const Gn=zn(s,a,Rn,Mn,_n,Hn);class Vn{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Gn(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}function Jn(t){return I(Vn,[t])}function Kn(t,r=t.length){const e=[],o=(...c)=>{if(e.push(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}function Qn(t,r=t.length){const e=[],o=(...c)=>{if(e.unshift(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}const Xn=!0,Yn=()=>Xn,tr=!1,nr=()=>tr,rr=()=>{};function er(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Xn),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const ur=I(cr);function ir(t,n){return ur.set(t,n)}function sr(){er(setTimeout(rr,0),(t=>{ur.remove(t)}))}const fr=Reflect.apply;function ar(t,n,r){if(Wn(t))return fr(t,n,r)}function lr(t,n){function r(...t){r.id!==tr&&ur.remove(r.id),r.id=ir((()=>{r.callable(...t),r.id=tr}),n)}return r.id=tr,r.callable=t.bind(r),r.clear=()=>{r.id!==tr&&(ur.remove(r.id),r.id=tr)},r}function hr(t,...n){if(Wn(t))return t(...n)}async function dr(t,n){const r=t.length;for(let e=0;eGn(t,(t=>{t(n)}));function pr(t){return(...n)=>!t(...n)}function mr(t=0){return(...n)=>n[t]}const wr=t=>{let n;return(...r)=>(u(n)||(n=t(...r)),n)};async function yr(t,n,r={}){if(t)return await Mn(t,(async(t,e,o,c,u)=>{r[e]=await n(t,e,r,o,c,u)})),r}function br(t,n,r={},e,o){if(t)return u(e)?Rn(t,((t,c,u,i,s)=>{r[c]=n.call(e,t,c,r,u,i,s,o)})):Rn(t,((t,e,c,u,i)=>{r[e]=n(t,e,r,c,u,i,o)})),r}function vr(t){return t?.constructor}function Ar(t,n=[]){const r=vr(t);return r===Function&&"function"===r.name?function(){}:I(r,n)}function Er(t,n=i,r){const e=r||Ar(t);if(y(t)||Un(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Wn(e.set);for(const[r,c]of t){const u=n(c,r,e,t);o?e.set(r,u):e[r]=u}return e}async function Ir(t,n=i,r,e){if(Dn(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||Ar(t);if(y(t)||Un(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const c=Wn(o.set);for await(const[r,e]of t){const u=await n(e,r,o,t);c?o.set(r,u):o[r]=u}return o}const xr=zn(it,st,br,yr,Er,Ir);function $r(t){return(...n)=>xr(t,(t=>t(...n)))}async function Sr(t,n){if(!t)return;return O(_(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function Cr(t,n){if(!t)return;return B(_(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function jr(t,n=i){if(y(t)||Un(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function Br(t,n=i,r){if(Dn(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(y(t)||Un(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const Or=zn(B,O,Cr,Sr,jr,Br);function Fr(t){return n=>Or(t,(t=>t(n)))}function Lr(t,n){return(...r)=>t(...n.map((t=>r[t])))}function Tr(t,n){function r(...t){r.id?r.shouldThrottle=Xn:(r.callable(...t),r.id=ir((()=>{r.shouldThrottle&&r.callable(...t),r.id=tr}),n))}return r.id=tr,r.callable=t.bind(r),r.clear=()=>{ur.remove(r.id),r.id=tr},r}function Mr(t,n){return(...r)=>n(t,...r)}const Rr=Function.prototype;function Nr(t){return Rr.call.bind(t)}const Pr=Object.getOwnPropertyNames,Ur=Object.getOwnPropertyDescriptor,_r=Object.defineProperty,kr=Nr(Object.hasOwnProperty),Dr=Object.is;function Hr(t,n){return t+n}function Wr(t){return t-1}function Zr(t,n){return t/n}function qr(t){return t+1}function zr(t,n){return t*n}function Gr(t,n){return 0!==t&&(0===n?0:n/t*100)}const{random:Vr}=Math;function Jr(t,n=0){return Vr()*(t-n)+n}function Kr(t,n){return t%n}function Qr(t){return t.reduce(((t,n)=>t-n),0)}function Xr(t){return t.reduce(((t,n)=>t+n),0)}function Yr(t,n,r){return t>n&&tr}const{sign:ne}=Math;function re(t){return 1===ne(t)}function ee(t){return 0===t}const oe=Object.entries;function ce(t){if(u(t))return oe(t)}function ue(t){const n=[];return Rn(t,((t,r)=>{u(t)&&n.push(r)})),n}async function ie(t,n=i,r={}){return await Mn(t,(async(t,e,o,c,i)=>{const s=await n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function se(t,n=i,r={}){return Rn(t,((t,e,o,c,i)=>{const s=n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function fe(t,n,r={}){return Rn(t,((t,e,o,c,u)=>{!0===n(t,e,r,o,c,u)&&(r[e]=t)})),r}async function ae(t,n,r={}){return await Mn(t,(async(t,e,o,c,u)=>{!0===await n(t,e,r,o,c,u)&&(r[e]=t)})),r}function le(t,n={}){if(t)return Rn(t,((t,r)=>{n[t]=r})),n}const he=(t,n)=>{if(t===n)return!0;const r=_(t),e=_(n);return r.length===e.length&&B(r,(r=>t[r]===n[r]))},de=X("RegExp"),ge=Y(de),pe=/[()[\]{}*+?^$|#.,/\\\s-]/g;function me(t){return t.replace(pe,"\\$&")}function we(t,n){return n?we(it(t,me)):RegExp(t.join("|"))}function ye(t,n){if(t){if(y(n)){const r=we(n);return fe(t,((t,n)=>!r.test(n)))}if(ge(n))return fe(t,((t,r)=>!n.test(r)));if(mn(n))return fe(t,((t,r)=>r!==n));if(gn(n)){const r=n.toString();return fe(t,((t,n)=>n!==r))}return Wn(n)?fe(t,((t,r)=>!n(t,r))):void 0}}const be=(t,n,r={})=>{if(t)return s(n,(n=>{r[n]=t[n]})),r};function ve(t){if(t)return _(t).length}const Ae=(t,n)=>{const r={};return s(t,((t,e)=>{r[t]=n[e]})),r},Ee=t=>{const n=[],r=[];return Rn(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},Ie=/[ _-]+/g;function xe(t){let n="";return t.replace(Ie," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n}const $e=/[ _-]+/g,Se=/[ ]+/g;function Ce(t){return t.replace(/([A-Z]+)/g," $1").replace($e," ").trim().toLowerCase().replace(Se,"-")}const je=/[ _-]+/g,Be=/[ ]+/g;function Oe(t){return t.replace(/([A-Z]+)/g," $1").replace(je," ").trim().toLowerCase().replace(Be,"_")}const Fe=/[ _-]+/g;function Le(t){return t.replace(/([A-Z]+)/g," $1").replace(Fe," ").trim().toUpperCase()}const Te=/[ _-]+/g;function Me(t){return t.replace(/([A-Z]+)/g," $1").replace(Te," ").trim().toLowerCase()}function Re(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)}function Ne(t,n=1){return t[t.length-n]}function Pe(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))}function Ue(t,n=1){return t.slice(0,-1*n)}function _e(t,n=1){return t.substring(n)}function ke(t,n,r){return t.replace(new RegExp(`\\b${n.join("|")}\\b`,"gi"),r)}function De(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=r-n;for(;u=0&&(c=e[u]," "!==c);u--);return t.slice(0,u).trim()})(t,n,r):t}function He(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=n;for(;u0&&(c=e[u]," "!==c);u++);return t.substring(u,r).trim()})(t,n,r):t}const We=/%(?![\da-f]{2})/gi,Ze=/&/g,qe=//g,Ge=/"/g;function Ve(t){return decodeURIComponent(t.replace(We,(()=>"%25")))}function Je(t){return t.replace(Ze,"&").replace(qe,"<").replace(ze,">").replace(Ge,""")}function Ke(t){return Je(Ve(t))}const Qe=/\S+/g,Xe=/\w+/g;function Ye(t){return t.match(Qe)||[]}function to(t){return t.match(Xe)||[]}const no=/\w+/g;function ro(t){return t[0].toUpperCase()}function eo(t){return ro(t)+_e(t)}function oo(t){return ro(t)+_e(t).toLowerCase()}function co(t){return t.replace(no,(t=>eo(t)))}function uo(t){return t.replace(no,(t=>oo(t)))}function io(t){return vr(t)?.name}function so(t){return!!u(t)&&"[object Arguments]"===t.toString()}function fo(t){return!u(t)}const ao=X("Map"),lo=Y(ao),ho=/Array/,go="Array";function po(t){if(t){const n=io(t);if(ho.test(n)&&n!==go)return!0}return!1}function mo(t,n){if(fo(t)||Wn(t))return!1;if(y(t)||po(t))return!0;const r=t.length;if(!fo(r)||!gn(r)||r<0)return!1;if(n){const n=_(t);return!!n&&Or(n,((t,n)=>n>=0&&gn(n)))}return!0}const wo=X("BigInt"),yo=Y(wo),bo=X("Boolean"),vo=Y(bo),Ao=X("ArrayBuffer"),Eo=Y(Ao);function Io(t,n){return!(!t||!n)&&t instanceof n}const xo=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function $o(t){if(u(t)){const n=t?.constructor?.name;return xo.test(n)}return!1}const So=X("Date"),Co=Y(So);function jo(t){return mn(t)||y(t)?!o(t):V(t)?!ve(t):!u(t)}function Bo(t){return!1===t}const Oo=X("Float32Array"),Fo=Y(Oo),Lo=X("Float64Array"),To=Y(Lo),{isInteger:Mo}=Number,Ro=Mo,No=X("Int16Array"),Po=Y(No),Uo=X("Int32Array"),_o=Y(Uo),ko=X("Int8Array"),Do=Y(ko);function Ho(t){return u(t)&&"function"==typeof t[Symbol.iterator]}function Wo(t){return!!t&&t instanceof Promise}function Zo(t){return!!t&&(Wo(t)||qn(t)||Dn(t))}function qo(t,n){return!!(t&&n&&n.call)&&t instanceof n}function zo(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n}function Go(t,n){return!fo(t)&&!fo(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)}const{isSafeInteger:Vo}=Number,Jo=Vo;function Ko(t,n){const r=vr(t),e=vr(n);return r===e&&r.name===e.name}function Qo(t){return!0===t}const Xo=X("Uint16Array"),Yo=Y(Xo),tc=X("Uint32Array"),nc=Y(tc),rc=X("Uint8Array"),ec=Y(rc),oc=X("Uint8ClampedArray"),cc=Y(oc),uc=X("WeakMap"),ic=Y(uc),sc=void 0!==globalThis.Deno,fc=void 0!==globalThis.process&&process.versions&&process.versions.node;function ac(t,n=!0){return Boolean(t)&&n}function lc(t,n=!0){return!1===Boolean(t)&&n}function hc(t,n,r,e){if(u(t)){if(Wn(n))return r?ar(n,r,e):n(...e);if(V(n))return n[r]=t,n}}function dc(t,n){return Bo(rt(t,n))}const gc=JSON;function pc(t,n){if(t)return gc.parse(t,n)}const mc=gc.stringify;function wc(t,n,r){const e=globalThis.options||r;let o;return Wn(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${mc(t)}\n\t\tExpected: ${mc(n)}`,e)}async function yc(t,n,r){const e=await t;return!(Wn(n)&&!1===await n(e,r))&&!dc(e,n)||wc(e,n,r)}function bc(t,n,r){if(Zo(t)||Zo(n))return yc(t,n,r);return!(Wn(n)&&!1===n(t,r))&&!dc(t,n)||wc(t,n,r)}function vc(t,n,r){const e=xr(t,(t=>Wn(t)?t.bind(n):t));return r?Tn(r,e):e}function Ac(t){if(t){if(nt(t))return Gt(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t}const Ec=globalThis.structuredClone;function Ic(t){return Ec(t)}function xc(t){if(V(t)){const n=_(t),r=n.length,e={};for(let o=0;oac(t)))}async function $c(t,n=i,r,e){if(Dn(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);u(e)&&r.push(e)}return r}const o=r||Ar(t);if(y(t)||Un(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);u(c)&&e(c)}return o}const c=Wn(o.set);for await(const[r,e]of t){const i=await n(e,r,o,t);u(i)&&(c?o.set(r,i):o[r]=i)}return o}function Sc(t,n=i,r){const e=r||Ar(t);if(y(t)||Un(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);u(c)&&o(c)}return e}const o=Wn(e.set);for(const[r,c]of t){const i=n(c,r,e,t);u(i)&&(o?e.set(r,i):e[r]=i)}return e}const Cc=zn(f,l,se,ie,Sc,$c);function jc(...t){return qn(t[0])?async function(...n){return Or(t,(async t=>Or(n,(async n=>t(n)))))}:function(...n){return Or(t,(t=>Or(n,(n=>t(n)))))}}function Bc(t,n=i,r){const e=r||Ar(t);if(y(t)||Un(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Wn(e.set);for(const[o,c]of t){!0===n(c,o,e,t)&&(r?e.set(o,c):e[o]=c)}}return e}async function Oc(t,n=i,r,e){if(Dn(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||Ar(t);if(y(t)||Un(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Wn(o.set);for await(const[e,c]of t){!0===await n(c,e,o,t)&&(r?o.set(e,c):o[e]=c)}}return o}const Fc=zn(F,L,fe,ae,Bc,Oc);function Lc(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const Tc=Lc(s),Mc=Lc(C);function Rc(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const Nc=Rc(a),Pc=Rc(j);function Uc(t,n){const r=Ar(t),e=r.push||r.add;if(e&&Wn(e)){const o=e.bind(r);t.forEach((t=>{const e=n(t,r);o(e)}))}else Wn(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r}function _c(t,n){const r={};return s(t,((t,e)=>{r[n[e]]=t})),r}function kc(t,n,r){if(fo(t)||fo(n))return!1;if(mn(t))return mn(n)?t.includes(n,r):ge(n)?n.test(t):Wn(n)?Boolean(n(t)):Or(n,(n=>Boolean(kc(t,n))));if(y(t)){if(mn(n))return t.includes(n,r);if(ge(n))return Or(t,(t=>t.test(n)));if(y(n))return Or(n,(n=>Boolean(kc(t,n))))}return!1}const Dc=xn(/\./),Hc=(t,n,r)=>(n&&!u(t[n])&&(t[n]=r),t);class Wc{list=I(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Xn),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Zc=I(Wc);function qc(t,n){return Zc.set(t,n)}function zc(){er(setTimeout(rr,0),(t=>{Zc.remove(t)}))}function Gc(t,...n){return Gn(n,(n=>{Gn(n,((n,r)=>{if(t[r]&&(V(n)||y(n)||n.forEach))return Gc(t[r],n);t[r]=n}))})),t}class Vc{static models={};constructor(t,n){u(n)?(Tn(this,n),this.modelName=t,Vc.models.set(t,n)):Tn(this,t)}}function Jc(t,n){return u(n)?I(Vc,[t,n]):Z(t,Vc.models)}function Kc(t,n){return[t,n]}function Qc(t,n,r){const e=t.length,o=[];for(let c=0;cB(r,(r=>rt(t[r],n[r])));function nu(t,n,r){return n&&V(t)||gn(n)&&y(t)?t[n]=r:t.set?t.set(n,r):t.push?t.push(r):t.add?t.add(r):t[n]=r,t}function ru(t,n,r){return gn(r)&&y(t)?t[r]=n:t.push?t.push(n):t.add?t.add(n):t[r]=n,t}class eu{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Rn(t,(n=>{t[n]=new eu(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new eu(r),!0)})}}const ou=()=>[],cu=()=>({}),uu=()=>"";async function iu(t,n){for(let r=0;r0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const lu=I(au);class hu{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function du(t){return new hu(t)}function gu(t){return t?gu[t]:_(gu)}const pu=globalThis.navigator?.userAgentData;if(pu)Rn(pu,((t,n)=>{vo(t)&&t&&(gu[n]=t)})),s(pu.brands,(t=>{gu[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{gu[t]=!0}))}function mu(t,n,r,e){return t.addEventListener(n,r,e),t}function wu(t,n,r,e){return t.removeEventListener(n,r,e),t}function yu(t){return 13===t.keyCode}const bu=document.createDocumentFragment.bind(document);function vu(t,n){return t.appendChild(n),n}function Au(t,n){return y(n)?Ae(n,it(n,(n=>t.getAttribute(n)))):(Rn(n,((n,r)=>{t.setAttribute(r,n)})),t)}const Eu=/^.[\w_-]+$/,Iu=/^[A-Za-z]+$/,xu=/\s/,$u=document.getElementsByClassName.bind(document),Su=document.getElementsByTagName.bind(document),Cu=document.getElementById.bind(document),ju=document.querySelector.bind(document),Bu=document.querySelectorAll.bind(document);function Ou(t){switch(t[0]){case"#":if(!xu.test(t))return Cu(_e(t));break;case".":if(Eu.test(t))return $u(_e(t));break;default:if(Iu.test(t))return Su(t)}return Bu(t)}const Fu=document.createElement.bind(document);function Lu(t){const n=Dc(t)&&t||`${t}.js`;return(t=>Yc((n=>{mu(t,"load",n,!0),mu(t,"error",n,!0),vu(ju("head"),t)})))(Au(Fu("script"),{async:"",src:n}))}function Tu(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&mu(document,"DOMContentLoaded",t),!1)}Tu((()=>{const t=Cu("AcidLib");Lu(t&&t.getAttribute("data-index")||"/index")}));const Mu=location.protocol,Ru="http:"===Mu?"ws":"wss",Nu=location.hostname,Pu={hardware:{cores:navigator.hardwareConcurrency},host:{name:Nu,protocol:Mu,protocolSocket:Ru}};function Uu(){Tn(Pu,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function _u(){Uu()}let ku;Tu(_u),mu(window,"load",_u,!0),mu(window,"resize",_u,!0),function(t){try{t().removeItem("TESTING"),ku=!0}catch(t){ku=!1}}((()=>localStorage));class Du{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=du(t)}hasLocal=ku;setItem(t,n){return this.hasLocal&&this.local.setItem(t,mn(n)?n:mc(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return u(n)?n:!u(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}function Hu(t){return new Du(t)}const Wu=(t,n)=>`color:${t};background:${n};`,Zu={alert:Wu("#fff","#f44336"),important:Wu("#fff","#E91E63"),notify:Wu("#fff","#651FFF"),warning:Wu("#000","#FFEA00")},qu=(t,n)=>{const r=mn(t)?t:mc(t);if("alert"===n||"warning"===n)return console.trace(`%c${r}`,`${Zu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${r}`,`${Zu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},zu=(t,n,r)=>{Zu[t]=Wu(n,r)};function Gu(t){return t&&9!==t.nodeType}function Vu(t){return!!u(t)&&"[object HTMLCollection]"===t.toString()}function Ju(t){return!!u(t)&&"[object NodeList]"===t.toString()}export{Vn as Chain,Du as Crate,Wc as Intervals,Vc as Model,eu as Store,cr as Timers,au as UniqID,hu as VirtualStorage,Hr as add,Bn as after,vu as append,ar as apply,we as arrayToRegex,_c as arraysToObject,On as ary,bc as assert,yc as assertAsync,Tn as assign,Fn as before,vc as bindAll,Nr as cacheNativeMethod,Gr as calcProgress,xe as camelCase,Jn as chain,t as chunk,Pe as chunkString,Ac as clear,n as clearArray,Gt as clearBuffer,zc as clearIntervals,sr as clearTimers,Ic as clone,r as cloneArray,Ar as cloneType,qu as cnsl,zu as cnslTheme,xc as compact,ue as compactKeys,Cc as compactMap,f as compactMapArray,l as compactMapAsyncArray,ie as compactMapAsyncObject,se as compactMapObject,Qc as concurrent,Xc as concurrentStatus,I as construct,Q as constructorName,Vt as countBy,Jt as countKey,Kt as countWithoutKey,Hu as crate,bu as createFragment,Kn as curry,Qn as curryRight,lr as debounce,Wr as deduct,_r as defProp,x as difference,Zr as divide,$ as drop,S as dropRight,Gn as each,s as eachArray,a as eachAsyncArray,Mn as eachAsyncObject,Rn as eachObject,C as eachRight,j as eachRightAsync,v as ensureArray,zt as ensureBuffer,me as escapeRegex,pe as escapeRegexRegex,mu as eventAdd,wu as eventRemove,Or as every,jc as everyArg,B as everyArray,O as everyAsyncArray,Sr as everyAsyncObject,Cr as everyObject,tr as falsy,Fc as filter,F as filterArray,L as filterAsyncArray,ae as filterAsyncObject,fe as filterObject,Xt as findIndex,Qt as findIndexCache,Yt as findItem,T as first,M as flatten,A as flattenDeep,Tc as flow,Nc as flowAsync,Pc as flowAsyncRight,Mc as flowRight,w as forEach,Nn as forEachAsync,Uc as forMap,_n as forOf,Hn as forOfAsync,Sc as forOfCompactMap,$c as forOfCompactMapAsync,jr as forOfEvery,Br as forOfEveryAsync,Bc as forOfFilter,Oc as forOfFilterAsync,Er as forOfMap,Ir as forOfMapAsync,zn as generateLoop,Z as get,$u as getByClass,Cu as getById,Su as getByTag,ce as getEntries,En as getFileExtension,In as getFilename,un as getHighest,sn as getLowest,Ot as getNumberInsertIndex,Ur as getPropDesc,Pr as getPropNames,vr as getType,io as getTypeName,fn as groupBy,kc as has,G as hasAnyKeys,Dc as hasDot,z as hasKeys,o as hasLength,ku as hasLocal,kr as hasProp,u as hasValue,Je as htmlEntities,hr as ifInvoke,Hc as ifNotAssign,hc as ifValue,Lu as importjs,dr as inAsync,gr as inSync,qr as increment,an as indexBy,Pu as info,R as initial,Ue as initialString,Re as insertInRange,N as intersection,qc as interval,Zc as intervals,le as invert,P as invokeArray,ln as invokeCollection,hn as invokeCollectionAsync,gu as isAgent,so as isArguments,y as isArray,Eo as isArrayBuffer,Ao as isArrayBufferCall,mo as isArrayLike,qn as isAsync,Zn as isAsyncCall,yo as isBigInt,wo as isBigIntCall,vo as isBoolean,bo as isBooleanCall,nt as isBuffer,tt as isBufferCall,Io as isChild,$o as isCloneable,J as isConstructor,K as isConstructorFactory,X as isConstructorNameFactory,Co as isDate,So as isDateCall,sc as isDeno,Tu as isDocumentReady,Gu as isDom,jo as isEmpty,yu as isEnter,rt as isEqual,Fo as isF32,Oo as isF32Call,To as isF64,Lo as isF64Call,Bo as isFalse,lc as isFalsy,$n as isFileCSS,Sn as isFileHTML,Cn as isFileJS,jn as isFileJSON,Ro as isFloat,Wn as isFunction,Dn as isGenerator,kn as isGeneratorCall,Vu as isHTMLCollection,Po as isI16,No as isI16Call,_o as isI32,Uo as isI32Call,Do as isI8,ko as isI8Call,Ho as isIterable,Zo as isKindAsync,lo as isMap,ao as isMapCall,et as isMatchArray,he as isMatchObject,d as isNegative,Ju as isNodeList,fc as isNodejs,b as isNotArray,pn as isNotNumber,wn as isNotString,c as isNull,gn as isNumber,dn as isNumberCall,$t as isNumberEqual,Yr as isNumberInRange,te as isNumberNotInRange,qo as isParent,V as isPlainObject,re as isPositive,zo as isPrimitive,Wo as isPromise,ge as isRegex,de as isRegexCall,Go as isRelated,Jo as isSafeInt,Dr as isSame,Ko as isSameType,Un as isSet,Pn as isSetCall,mn as isString,Qo as isTrue,ac as isTruthy,Y as isTypeFactory,po as isTypedArray,Yo as isU16,Xo as isU16Call,nc as isU32,tc as isU32Call,ec as isU8,cc as isU8C,oc as isU8CCall,rc as isU8Call,e as isUndefined,ic as isWeakMap,uc as isWeakMapCall,ee as isZero,pc as jsonParse,Ce as kebabCase,_ as keys,ct as largest,ut as last,Me as lowerCase,xr as map,it as mapArray,st as mapAsyncArray,yr as mapAsyncObject,br as mapObject,ft as mapRightArray,at as mapWhile,Gc as merge,Jc as model,zr as multiply,pr as negate,fo as noValue,Au as nodeAttribute,rr as noop,dc as notEqual,mr as nthArg,Ln as objectAssign,oe as objectEntries,ve as objectSize,ye as omit,wr as once,Tt as onlyUnique,$r as over,Fr as overEvery,Kc as pair,dt as partition,be as pick,bn as pluck,yn as pluckObject,Yc as promise,tu as propertyMatch,ju as querySelector,Bu as querySelectorAll,Jr as randomFloat,Et as randomInt,m as range,p as rangeDown,g as rangeUp,Ve as rawURLDecode,Lr as reArg,xn as regexTestFactory,Kr as remainder,mt as remove,wt as removeBy,ke as replaceList,yt as rest,_e as restString,i as returnValue,bt as right,Ne as rightString,Ct as sample,Ke as sanitize,Uu as saveDimensions,Ou as selector,nu as setKey,ru as setValue,St as shuffle,Bt as smallest,Oe as snakeCase,en as sortCollectionAlphabetically,An as sortCollectionAlphabeticallyReverse,cn as sortCollectionAscending,on as sortCollectionAscendingFilter,nn as sortCollectionDescending,tn as sortCollectionDescendingFilter,ht as sortNumberAscending,pt as sortNumberDescening,rn as sortObjectsAlphabetically,vn as sortObjectsAlphabeticallyReverse,Mt as sortUnique,mc as stringify,ou as stubArray,nr as stubFalse,cu as stubObject,uu as stubString,Yn as stubTrue,lt as subtract,Qr as subtractAll,gt as subtractReverse,Xr as sumAll,Ft as take,Lt as takeRight,Zu as themes,Tr as throttle,ir as timer,ur as timers,er as times,iu as timesAsync,or as timesMap,su as timesMapAsync,xt as toArray,W as toPath,fu as toggle,Ye as tokenize,De as truncate,He as truncateRight,Xn as truth,qt as unZip,Ee as unZipObject,Nt as union,lu as uniqID,Rt as unique,Pt as untilFalseArray,Ut as untilTrueArray,_u as updateDimensions,Le as upperCase,eo as upperFirst,co as upperFirstAll,ro as upperFirstLetter,oo as upperFirstOnly,uo as upperFirstOnlyAll,du as virtualStorage,_t as whileCompactMap,kt as whileEachArray,Dt as whileMapArray,Ht as without,to as words,Mr as wrap,Wt as xor,Zt as zip,Ae as zipObject}; //# sourceMappingURL=index.js.map diff --git a/build/module/browser/index.js.map b/build/module/browser/index.js.map index 6e08c826..cf8c98e0 100644 --- a/build/module/browser/index.js.map +++ b/build/module/browser/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../../../source/arrays/chunk.js","../../../source/arrays/clear.js","../../../source/arrays/clone.js","../../../source/types/isUndefined.js","../../../source/utilities/hasLength.js","../../../source/types/isNull.js","../../../source/types/hasValue.js","../../../source/utilities/returnValue.js","../../../source/arrays/each.js","../../../source/arrays/compactMap.js","../../../source/arrays/eachAsync.js","../../../source/arrays/compactMapAsync.js","../../../source/numbers/isNegative.js","../../../source/arrays/range.js","../../../source/utilities/forEach.js","../../../source/types/isArray.js","../../../source/arrays/ensure.js","../../../source/arrays/flattenDeep.js","../../../source/classes/construct.js","../../../source/arrays/difference.js","../../../source/arrays/drop.js","../../../source/arrays/dropRight.js","../../../source/arrays/eachRight.js","../../../source/arrays/eachRightAsync.js","../../../source/arrays/every.js","../../../source/arrays/everyAsync.js","../../../source/arrays/filter.js","../../../source/arrays/filterAsync.js","../../../source/arrays/first.js","../../../source/arrays/flatten.js","../../../source/arrays/initial.js","../../../source/arrays/intersect.js","../../../source/objects/keys.js","../../../source/utilities/toPath.js","../../../source/utilities/get.js","../../../source/objects/hasKeys.js","../../../source/types/isPlainObject.js","../../../source/types/isConstructor.js","../../../source/types/isTypeFactory.js","../../../source/types/isBuffer.js","../../../source/utilities/isEqual.js","../../../source/arrays/isMatch.js","../../../source/arrays/largest.js","../../../source/arrays/last.js","../../../source/arrays/map.js","../../../source/arrays/mapAsync.js","../../../source/arrays/mapRight.js","../../../source/arrays/mapWhile.js","../../../source/math/subtract.js","../../../source/arrays/sortNumberAscending.js","../../../source/arrays/partition.js","../../../source/math/subtractReverse.js","../../../source/arrays/sortNumberDescening.js","../../../source/arrays/remove.js","../../../source/arrays/rest.js","../../../source/arrays/right.js","../../../source/math/randomInt.js","../../../source/internal/array.js","../../../source/numbers/isNumberEqual.js","../../../source/arrays/shuffle.js","../../../source/arrays/sample.js","../../../source/arrays/smallest.js","../../../source/arrays/getNumberInsertIndex.js","../../../source/arrays/take.js","../../../source/arrays/takeRight.js","../../../source/arrays/unique.js","../../../source/arrays/union.js","../../../source/arrays/untilFalse.js","../../../source/arrays/untilTrue.js","../../../source/arrays/whileCompactMap.js","../../../source/arrays/whileEach.js","../../../source/arrays/whileMap.js","../../../source/arrays/without.js","../../../source/arrays/xor.js","../../../source/arrays/zip.js","../../../source/buffers/ensure.js","../../../source/buffers/clear.js","../../../source/collection/countBy.js","../../../source/collection/countKey.js","../../../source/collection/countWithoutKey.js","../../../source/collection/findIndexCache.js","../../../source/collection/findIndex.js","../../../source/collection/findItem.js","../../../source/collection/sortCollectionDescending.js","../../../source/collection/sortCollectionAlphabetically.js","../../../source/collection/sortCollectionAscending.js","../../../source/collection/getHighest.js","../../../source/collection/getLowest.js","../../../source/collection/groupBy.js","../../../source/collection/indexBy.js","../../../source/collection/invoke.js","../../../source/collection/invokeAsync.js","../../../source/types/isNumber.js","../../../source/types/isString.js","../../../source/objects/pluckObject.js","../../../source/collection/pluck.js","../../../source/collection/sortCollectionAlphabeticallyReverse.js","../../../source/files/getExtension.js","../../../source/files/getFilename.js","../../../source/internal/regexTestFactory.js","../../../source/files/isFileCSS.js","../../../source/files/isFileHTML.js","../../../source/files/isFileJS.js","../../../source/files/isFileJSON.js","../../../source/functions/after.js","../../../source/functions/ary.js","../../../source/functions/before.js","../../../source/objects/assign.js","../../../source/objects/eachAsync.js","../../../source/objects/each.js","../../../source/utilities/forEachAsync.js","../../../source/types/isSet.js","../../../source/utilities/forOf.js","../../../source/types/isGenerator.js","../../../source/utilities/forOfAsync.js","../../../source/types/isFunction.js","../../../source/types/isAsync.js","../../../source/utilities/generateLoop.js","../../../source/utilities/each.js","../../../source/functions/chain.js","../../../source/functions/curry.js","../../../source/functions/curryRight.js","../../../source/utilities/stubTrue.js","../../../source/utilities/stubFalse.js","../../../source/utilities/noop.js","../../../source/utilities/times.js","../../../source/utilities/timer.js","../../../source/internal/apply.js","../../../source/functions/debounce.js","../../../source/functions/ifInvoke.js","../../../source/functions/inAsync.js","../../../source/functions/inSync.js","../../../source/functions/negate.js","../../../source/functions/nthArg.js","../../../source/functions/once.js","../../../source/objects/mapAsync.js","../../../source/objects/map.js","../../../source/types/getType.js","../../../source/types/cloneType.js","../../../source/utilities/forOfMap.js","../../../source/utilities/forOfMapAsync.js","../../../source/utilities/map.js","../../../source/functions/over.js","../../../source/objects/everyAsync.js","../../../source/objects/every.js","../../../source/utilities/forOfEvery.js","../../../source/utilities/forOfEveryAsync.js","../../../source/utilities/every.js","../../../source/functions/overEvery.js","../../../source/functions/rearged.js","../../../source/functions/throttle.js","../../../source/functions/wrap.js","../../../source/utilities/cacheNativeMethod.js","../../../source/internal/object.js","../../../source/internal/isSame.js","../../../source/math/add.js","../../../source/math/deduct.js","../../../source/math/divide.js","../../../source/math/increment.js","../../../source/math/multiple.js","../../../source/math/progress.js","../../../source/math/randomFloat.js","../../../source/math/remainder.js","../../../source/math/subtractAll.js","../../../source/math/sumAll.js","../../../source/numbers/isNumberInRange.js","../../../source/numbers/isNumberNotInRange.js","../../../source/numbers/isPositive.js","../../../source/numbers/isZero.js","../../../source/objects/getEntries.js","../../../source/objects/compactKeys.js","../../../source/objects/compactMapAsync.js","../../../source/objects/compactMap.js","../../../source/objects/filter.js","../../../source/objects/filterAsync.js","../../../source/objects/invert.js","../../../source/objects/isMatch.js","../../../source/types/isRegex.js","../../../source/regexps/escapeRegex.js","../../../source/regexps/arrayToRegex.js","../../../source/objects/omit.js","../../../source/objects/pick.js","../../../source/objects/size.js","../../../source/objects/zip.js","../../../source/strings/camelCase.js","../../../source/strings/kebabCase.js","../../../source/strings/snakeCase.js","../../../source/strings/upperCase.js","../../../source/strings/lowerCase.js","../../../source/strings/range.js","../../../source/strings/replace.js","../../../source/strings/truncate.js","../../../source/strings/sanitize.js","../../../source/strings/tokenize.js","../../../source/strings/typography.js","../../../source/types/getTypeName.js","../../../source/types/isArguments.js","../../../source/types/noValue.js","../../../source/types/isMap.js","../../../source/types/isTypedArray.js","../../../source/types/isArrayLike.js","../../../source/types/isBigInt.js","../../../source/types/isBoolean.js","../../../source/types/isArrayBuffer.js","../../../source/types/isChild.js","../../../source/types/isCloneable.js","../../../source/types/isDate.js","../../../source/types/isEmpty.js","../../../source/types/isFalse.js","../../../source/types/isF32.js","../../../source/types/isF64.js","../../../source/types/isFloat.js","../../../source/types/isI16.js","../../../source/types/isI32.js","../../../source/types/isI8.js","../../../source/types/isIterable.js","../../../source/types/isPromise.js","../../../source/types/isKindAsync.js","../../../source/types/isParent.js","../../../source/types/isPrimitive.js","../../../source/types/isRelated.js","../../../source/types/isSafeInt.js","../../../source/types/isSameType.js","../../../source/types/isTrue.js","../../../source/types/isU16.js","../../../source/types/isU32.js","../../../source/types/isU8.js","../../../source/types/isU8C.js","../../../source/types/isWeakMap.js","../../../source/types/isDeno.js","../../../source/types/isNode.js","../../../source/types/isTruthy.js","../../../source/types/isFalsy.js","../../../source/utilities/ifValue.js","../../../source/utilities/notEqual.js","../../../source/utilities/json.js","../../../source/utilities/assert.js","../../../source/utilities/bindAll.js","../../../source/utilities/clear.js","../../../source/utilities/clone.js","../../../source/utilities/compact.js","../../../source/utilities/forOfCompactMapAsync.js","../../../source/utilities/forOfCompactMap.js","../../../source/utilities/compactMap.js","../../../source/utilities/everyArg.js","../../../source/utilities/forOfFilter.js","../../../source/utilities/forOfFilterAsync.js","../../../source/utilities/filter.js","../../../source/utilities/flow.js","../../../source/utilities/flowAsync.js","../../../source/utilities/forMap.js","../../../source/utilities/arraysToObject.js","../../../source/utilities/has.js","../../../source/utilities/hasDot.js","../../../source/utilities/ifNotAssign.js","../../../source/utilities/interval.js","../../../source/utilities/merge.js","../../../source/utilities/model.js","../../../source/utilities/pair.js","../../../source/utilities/concurrent.js","../../../source/utilities/concurrentStatus.js","../../../source/utilities/promise.js","../../../source/utilities/propertyMatch.js","../../../source/utilities/setKey.js","../../../source/utilities/setValue.js","../../../source/utilities/store.js","../../../source/utilities/stubArray.js","../../../source/utilities/stubObject.js","../../../source/utilities/stubString.js","../../../source/utilities/timesAsync.js","../../../source/utilities/toggle.js","../../../source/utilities/uid.js","../../../source/utilities/virtualStorage.js","../../../source/browser/agent.js","../../../source/browser/event.js","../../../source/browser/isEnter.js","../../../source/browser/frag.js","../../../source/browser/append.js","../../../source/browser/attribute.js","../../../source/browser/selector.js","../../../source/browser/importScript.js","../../../source/browser/ready.js","../../../source/browser/info.js","../../../source/browser/dimensions.js","../../../source/browser/storage.js","../../../source/browser/console.js","../../../source/browser/is.js"],"sourcesContent":["/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invoke\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invoke(collection, property, value) {\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * (async () => {\n * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]);\n * });\n *\n * @example\n * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invokeAsync(collection, property, value) {\n\treturn mapAsyncArray(collection, async (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from '../objects/each.js';\nimport { isBoolean } from '../types/isBoolean.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Checks to see of the browser agent has a string.\n *\n * @function isAgent\n * @category browser\n * @type {Function}\n * @param {String} source - The string to search for.\n * @returns {Boolean} - Returns true or false.\n * @example\n * isAgent('mobile');\n * // => false\n */\nexport function isAgent(source) {\n\treturn (source) ? isAgent[source] : keys(isAgent);\n}\nconst userAgent = globalThis.navigator?.userAgentData;\nif (userAgent) {\n\teachObject(userAgent, (value, key) => {\n\t\tif (isBoolean(value) && value) {\n\t\t\tisAgent[key] = value;\n\t\t}\n\t});\n\teachArray(userAgent.brands, (value) => {\n\t\tisAgent[value.brand] = value.version;\n\t});\n} else if (navigator.userAgent) {\n\tlet userAgentNormalized = navigator.userAgent.toLowerCase();\n\tuserAgentNormalized = userAgentNormalized.replace(/_/g, '.');\n\tuserAgentNormalized = userAgentNormalized.replace(/[#_,;()]/g, '');\n\tconst userAgentSplit = userAgentNormalized.split(/ |\\//);\n\teachArray(userAgentSplit, (item) => {\n\t\tisAgent[item] = true;\n\t});\n}\n\n","/**\n * Attaches an event listener to a node.\n *\n * @function eventAdd\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventAdd(document.body, 'click', () => {console.log('CLICKED');});\n * // = > document.body\n */\nexport function eventAdd(node, eventName, callback, useCapture) {\n\tnode.addEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n/**\n * Attaches an event listener to a node.\n *\n * @function eventRemove\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventRemove(document.body, () => {console.log('CLICKED');});\n * // = > Undefined\n */\nexport function eventRemove(node, eventName, callback, useCapture) {\n\tnode.removeEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n\n","/**\n * Checks if the keycode of the event is strictly equal to 13.\n *\n * @function isEnter\n * @category browser\n * @type {Function}\n * @param {Object} eventObject - Object to be checked.\n * @returns {Boolean} - Returns true if the keycode property of the object equals 13.\n *\n * @example\n * isEnter('click');\n * // => false\n */\nexport function isEnter(eventObject) {\n\treturn eventObject.keyCode === 13;\n}\n\n","/**\n * Create a document fragment.\n *\n * @function createFragment\n * @category browser\n * @type {Function}\n * @ignore\n * @returns {Fragment} - Returns a new document fragment.\n*/\nexport const createFragment = document.createDocumentFragment.bind(document);\n","/**\n * Append a DOM node.\n *\n * @function append\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @ignore\n * @param {Node} parentNode - The parent node.\n * @param {Node} child - The node to be appended.\n * @returns {undefined} - Returns the child.\n */\nexport function append(parentNode, child) {\n\tparentNode.appendChild(child);\n\treturn child;\n}\n","import { eachObject } from '../objects/each.js';\nimport { isArray } from '../types/isArray.js';\nimport { mapArray } from '../arrays/map.js';\nimport { zipObject } from '../objects/zip.js';\n/**\n * Assign attributes to a DOM node.\n *\n * @function nodeAttribute\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @async\n * @param {Node} node - The DOM node.\n * @param {Object|Array} object - Object with key being the attribute name and the value being the attribute value. If an array is given it will get the values corresponding to the array items.\n * @returns {Object|Node} - If using an array this returns an object of attribute names as keys and their values as the property value. If using an object this will return the provided node.\n *\n * @example\n * nodeAttribute(document.body, { 'data-example': 'test'});\n */\nexport function nodeAttribute(node, object) {\n\tif (isArray(object)) {\n\t\treturn zipObject(object, mapArray(object, (item) => {\n\t\t\treturn node.getAttribute(item);\n\t\t}));\n\t}\n\teachObject(object, (item, key) => {\n\t\tnode.setAttribute(key, item);\n\t});\n\treturn node;\n}\n\n","import { restString } from '../strings/range.js';\nconst dotString = '.';\nconst poundString = '#';\nconst classTest = /^.[\\w_-]+$/;\nconst tagTest = /^[A-Za-z]+$/;\nconst regexSpace = /\\s/;\n/**\n * Wrapper around getElementsByClassName.\n *\n * @function getByClass\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByClass = document.getElementsByClassName.bind(document);\n/**\n * Wrapper around getElementsByTagName.\n *\n * @function getByTag\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByTag = document.getElementsByTagName.bind(document);\n/**\n * Wrapper around getElementsByIdName.\n *\n * @function getById\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getById = document.getElementById.bind(document);\n/**\n * Wrapper around querySelector.\n *\n * @function querySelector\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelector = document.querySelector.bind(document);\n/**\n * Wrapper around querySelectorAll.\n *\n * @function querySelectorAll\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelectorAll = document.querySelectorAll.bind(document);\n/**\n * Returns relevant DOM node.\n *\n * @function selector\n * @category browser\n * @ignoreTest\n * @param {String} select - String to be evaluated.\n * @type {Function}\n * @returns {Node} - Returns a DOM node.\n *\n * @example\n * selector('#node');\n * // =>
\n */\nexport function selector(select) {\n\tconst firstLetter = select[0];\n\tswitch (firstLetter) {\n\tcase poundString:\n\t\tif (!regexSpace.test(select)) {\n\t\t\treturn getById(restString(select));\n\t\t}\n\t\tbreak;\n\tcase dotString:\n\t\tif (classTest.test(select)) {\n\t\t\treturn getByClass(restString(select));\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tif (tagTest.test(select)) {\n\t\t\treturn getByTag(select);\n\t\t}\n\t}\n\treturn querySelectorAll(select);\n}\n\n","import { append } from './append.js';\nimport { hasDot } from '../utilities/hasDot.js';\nimport { eventAdd } from './event.js';\nimport { nodeAttribute } from './attribute.js';\nimport { promise } from '../utilities/promise.js';\nimport { querySelector } from './selector.js';\nconst createElementCache = document.createElement.bind(document);\nconst nodeAttachLoadingEvents = (node) => {\n\treturn promise((accept) => {\n\t\teventAdd(node, 'load', accept, true);\n\t\teventAdd(node, 'error', accept, true);\n\t\tappend(querySelector('head'), node);\n\t});\n};\n/**\n * Asynchronously import a js file and append it to the head node.\n * If a script fails to load importjs won't reject the promise rather it'll return the error event to limit further complications & reduce code complexity.\n *\n * @function importjs\n * @category browser\n * @type {Function}\n * @async\n * @param {*} url - URL of the script to import. If not \".\" is found in the file name \".js\" will be appended.\n * @returns {Promise} - Returns a promise which returns a \"load\" or \"error\" event associated with the script.\n *\n * @example\n * importjs('core.js');\n * importjs('core');\n */\nexport function importjs(url) {\n\tconst src = hasDot(url) && url || `${url}.js`;\n\tconst node = nodeAttribute(createElementCache('script'), {\n\t\tasync: '',\n\t\tsrc\n\t});\n\treturn nodeAttachLoadingEvents(node);\n}\n\n","import { eventAdd } from './event.js';\nimport { importjs } from './importScript.js';\nimport { getById } from './selector.js';\n/**\n * Runs a function if the document has finished loading. If not, add an eventlistener.\n *\n * @function isDocumentReady\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Function} callable - Function to be run.\n * @returns {Boolean|Function} - If the document is ready, returns a function. If not, return false.\n *\n * @example\n * isDocumentReady(() => {return 1});\n * // => 1\n */\nexport function isDocumentReady(callable) {\n\tconst state = document.readyState;\n\tconst checkStatus = state === 'interactive' || state === 'completed' || state === 'complete';\n\tif (checkStatus) {\n\t\treturn (callable) ? callable() : true;\n\t}\n\tif (callable) {\n\t\teventAdd(document, 'DOMContentLoaded', callable);\n\t}\n\treturn false;\n}\nisDocumentReady(() => {\n\tconst scriptTag = getById('AcidLib');\n\tconst scriptName = (scriptTag && scriptTag.getAttribute('data-index')) || '/index';\n\timportjs(scriptName);\n});\n","const protocol = location.protocol;\nconst protocolSocket = (protocol === 'http:') ? 'ws' : 'wss';\nconst hostname = location.hostname;\n/**\n * Holds client hardware, browser, and host info.\n *\n * @memberof $\n * @category browser\n * @ignoreTest\n * @property {Object} info - Client hardware & host info.\n * @type {Object}\n */\nexport const info = {\n\thardware: {\n\t\tcores: navigator.hardwareConcurrency\n\t},\n\thost: {\n\t\tname: hostname,\n\t\tprotocol,\n\t\tprotocolSocket,\n\t}\n};\n\n","import { assign } from '../objects/assign.js';\nimport { eventAdd } from './event.js';\nimport { info } from './info.js';\nimport { isDocumentReady } from './ready.js';\nexport function saveDimensions() {\n\tassign(info, {\n\t\tbodyHeight: document.body.offsetHeight,\n\t\tbodyWidth: document.body.offsetWidth,\n\t\twindowHeight: window.innerHeight,\n\t\twindowWidth: window.innerWidth,\n\t});\n}\n/**\n * Save current document & window dimensions to the info property.\n *\n * @function updateDimensions\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * updateDimensions();\n */\nexport function updateDimensions() {\n\tsaveDimensions();\n}\nisDocumentReady(updateDimensions);\neventAdd(window, 'load', updateDimensions, true);\neventAdd(window, 'resize', updateDimensions, true);\n\n","/**\n * LocalStorage Module..\n *\n * @module browser/storage\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nimport { virtualStorage } from '../utilities/virtualStorage.js';\nexport let hasLocal;\nfunction hasStorage(storeCheck) {\n\ttry {\n\t\tstoreCheck().removeItem('TESTING');\n\t\thasLocal = true;\n\t} catch (e) {\n\t\thasLocal = false;\n\t}\n}\nhasStorage(() => {\n\treturn localStorage;\n});\n/**\n * Constructs a virtual storage container with localStorage support.\n * Crate will fallback to strictly virtual storage if localStorage isn't supported.\n * If localStorage is supported virtual storage will be used first & only fallback to localStorage when needed.\n * Crate is ideal as a seemless drop in replacement for localStorage when not supported or allowed.\n *\n * @class Crate\n * @category browser\n * @returns {Crate} - Returns a new instance of Crate.\n *\n * @example\n * import { Crate, construct, assert } from '@universalweb/acid';\n * const storageCrate = construct(Crate);\n * storageCrate.setItem('key', 'value');\n * assert(storageCrate.getItem('key'), 'value');\n */\nexport class Crate {\n\tconstructor(initialObject) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local = localStorage;\n\t\t}\n\t\tthis.storage = virtualStorage(initialObject);\n\t}\n\thasLocal = hasLocal;\n\t/**\n\t * Save an item to a crate.\n\t *\n\t * @function setItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.setItem(key, (isString(value)) ? value : stringify(value));\n\t\t}\n\t\treturn this.storage.setItem(key, value);\n\t}\n\t/**\n\t * Get an item from a crate.\n\t *\n\t * @function getItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tgetItem(key) {\n\t\tconst item = this.storage.getItem(key);\n\t\tif (hasValue(item)) {\n\t\t\treturn item;\n\t\t}\n\t\tif (!hasValue(item) && this.hasLocal) {\n\t\t\treturn this.local.getItem(key);\n\t\t}\n\t}\n\t/**\n\t * Clears all data for the crate including all of localStorage if supported.\n\t *\n\t * @function clear\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.clear();\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tclear() {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.clear();\n\t\t}\n\t\tthis.storage.clear();\n\t}\n\t/**\n\t * Remove an item from a crate.\n\t *\n\t * @class Crate\n\t * @category browser\n\t * @function removeItem\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.removeItem('key');\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tremoveItem(key) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.removeItem(key);\n\t\t}\n\t\tthis.storage.removeItem(key);\n\t}\n}\n/**\n * The crate function is a factory which wraps the Crate class constructor.\n *\n * @function crate\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new Crate Object.\n *\n * @example\n * const storageCrate = crate();\n * // => New Crate Object\n */\nexport function crate(virtualFlag) {\n\treturn new Crate(virtualFlag);\n}\n\n","import { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nconst generateTheme = (color, bg) => {\n\treturn `color:${color};background:${bg};`;\n};\nexport const themes = {\n\talert: generateTheme('#fff', '#f44336'),\n\timportant: generateTheme('#fff', '#E91E63'),\n\tnotify: generateTheme('#fff', '#651FFF'),\n\twarning: generateTheme('#000', '#FFEA00'),\n};\n/**\n * Console.trace wrapper with theme support.\n *\n * @function cnsl\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Object} value - The value to be logged.\n * @param {String} themeName - The name of the theme to be used.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnsl('Lucy', 'notify');\n * // 'Lucy'\n*/\nexport const cnsl = (value, themeName) => {\n\tconst data = isString(value) ? value : stringify(value);\n\tif (themeName === 'alert' || themeName === 'warning') {\n\t\treturn console.trace(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n\t}\n\tconsole.log(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n};\n/**\n * Create color themes for cnsl method.\n *\n * @function cnslTheme\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {String} themeName - The name of the theme.\n * @param {String} color - The text color.\n * @param {String} background - The background color of the block.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnslTheme('BlackNWhite', '#fff', '#000');\n*/\nexport const cnslTheme = (themeName, color, background) => {\n\tthemes[themeName] = generateTheme(color, background);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { difference } from '../arrays/difference.js';\n/**\n * Checks if value is a plain DOM Node.\n *\n * @function isDom\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDom, assert } from '@universalweb/acid';\n * assert(isDom(document.querySelectorAll('head')), true);\n */\nexport function isDom(source) {\n\treturn source && source.nodeType !== 9;\n}\n/**\n * Checks if the value is a HTMLCollection.\n *\n * @function isHTMLCollection\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isHTMLCollection, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isHTMLCollection(document.getElementsByClassName('test')), true);\n */\nconst objectHTMLCollection = '[object HTMLCollection]';\nexport function isHTMLCollection(source) {\n\treturn (hasValue(source)) ? source.toString() === objectHTMLCollection : false;\n}\n/**\n * Checks if the value is a NodeList.\n *\n * @function isNodeList\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNodeList, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isNodeList(document.querySelectorAll('.test')), true);\n */\nconst objectNodeList = '[object NodeList]';\nexport function isNodeList(source) {\n\treturn (hasValue(source)) ? source.toString() === objectNodeList : false;\n}\n"],"names":["chunk","array","size","chunked","index","forEach","item","key","push","clearArray","source","length","cloneArray","slice","isUndefined","undefined","hasLength","Boolean","isNull","hasValue","returnValue","eachArray","iteratee","thisCall","additionalArg","arrayLength","call","compactMapArray","results","arrayOriginal","returned","async","eachAsyncArray","compactMapAsyncArray","result","sign","Math","isNegative","rangeUp","start","end","step","sourceArray","position","rangeDown","range","callback","isArray","Array","isNotArray","ensureArray","flattenDeep","flat","Infinity","reflectConstruct","Reflect","construct","target","argumentsList","newTarget","args","difference","sources","differencesMap","Map","differences","currentArray","parentIndex","child","childIndex","childRoot","get","count","set","drop","amount","upTo","splice","dropRight","eachRight","thisBind","eachRightAsync","everyArray","sourceLength","everyAsyncArray","filterArray","filterAsyncArray","first","flatten","level","i","reduce","previousValue","currentValue","concat","initial","intersection","arrays","otherItem","includes","objectKeys","Object","keys","regexToPath","regexCloseBracket","emptyString","toPath","replace","split","propertyString","link","hasOwn","hasKeys","properties","pathArray","lastPath","pop","initialPathObject","hasAnyKeys","find","isPlainObject","value","constructor","toString","trim","isConstructor","isConstructorFactory","constructorName","name","isConstructorNameFactory","isTypeFactory","method","primarySource","otherSources","isBufferCall","isBuffer","isEqual","equals","sourceProperties","isMatchArray","compareArray","mathNativeMax","max","largest","last","indexFrom","mapArray","mapAsyncArray","mapRightArray","trueIndex","mapWhile","subtract","minuend","subtrahend","sortNumberAscending","numberList","sort","partition","predicate","rejected","subtractReverse","sortNumberDescening","remove","removeThese","removeBy","rest","right","floor","random","randomInt","min","arrayFrom","from","toArray","arrayLike","mapFn","thisArg","isNumberEqual","shuffle","shuffleArray","sample","sampleArray","used","mathNativeMin","smallest","getNumberInsertIndex","insertIndex","take","endIndex","takeRight","indexRight","onlyUnique","indexOf","sortUnique","unique","isSorted","filter","union","untilFalseArray","untilTrueArray","whileCompactMap","whileEachArray","whileMapArray","without","sourcesSet","Set","has","xor","xorMap","xored","zip","map","unZip","arraySet","ensureBuffer","Buffer","alloc","clearBuffer","fill","countBy","collection","object","countKey","propertyName","countWithoutKey","findIndexCache","element","indexMatch","findIndex","id","findItem","sortCollectionDescendingFilter","previous","next","ifMatch","previousKey","nextKey","sortCollectionDescending","sortObjectsAlphabetically","localeCompare","sortCollectionAlphabetically","sortCollectionAscendingFilter","sortCollectionAscending","getHighest","getLowest","groupBy","sortedObject","indexBy","invoke","property","invokeAsync","isNumberCall","isNumber","isNotNumber","isString","String","isNotString","pluckObject","targets","pluck","sortObjectsAlphabeticallyReverse","sortCollectionAlphabeticallyReverse","getFileExtension","substring","lastIndexOf","getFilename","regexTestFactory","regexType","test","isFileCSS","isFileHTML","isFileJS","isFileJSON","after","callable","point","ary","before","objectAssign","assign","eachAsyncObject","propertyCount","eachObject","objectKeysArray","forEachAsync","values","valuesLength","isSetCall","isSet","forOf","isGeneratorCall","isGenerator","forOfAsync","generatorArgs","isFunction","Function","isAsyncCall","isAsync","generateLoop","arrayLoop","arrayLoopAsync","objectLoop","objectLoopAsync","forOfLoop","forOfLoopAsync","argument1","argument2","argument3","isIterateeAsync","each","Chain","methods","this","addChainMethod","thisChain","methodName","setValue","done","chain","config","curry","arity","curries","curried","curryArgs","curryRight","unshift","truth","stubTrue","falsy","stubFalse","noop","times","timesMap","Timers","list","clearTimeout","delete","time","currentThis","setTimeout","clear","timers","timer","clearTimers","applyNative","apply","thisArgument","debounce","debounced","bind","ifInvoke","inAsync","firstArgument","inSync","negate","nthArg","once","mapAsyncObject","thisObject","mapObject","original","getType","cloneType","sourceType","forOfMap","resultsObject","methodPush","add","methodPushBound","methodSet","forOfMapAsync","resultsGenerator","over","iteratees","everyAsyncObject","everyObject","forOfEvery","forOfEveryAsync","every","overEvery","predicates","arg","reArg","indexes","throttle","throttled","shouldThrottle","wrap","wrapper","functionPrototype","prototype","cacheNativeMethod","getPropNames","getOwnPropertyNames","getPropDesc","getOwnPropertyDescriptor","defProp","defineProperty","hasProp","hasOwnProperty","isSame","is","augend","addend","deduct","divide","increment","multiply","calcProgress","total","currentAmount","randomFloat","remainder","subtractAll","a","b","sumAll","isNumberInRange","isNumberNotInRange","isPositive","isZero","objectEntries","entries","getEntries","compactKeys","compactedKeys","compactMapAsyncObject","compactMapObject","filterObject","filterAsyncObject","invert","isMatchObject","sourceKeys","targetKeys","isRegexCall","isRegex","escapeRegexRegex","escapeRegex","arrayToRegex","makeSafe","RegExp","join","omit","blacklist","blacklistRegex","numberToString","pick","whitelist","objectSize","zipObject","zipedObject","unZipObject","unZippedKeys","normalizeCase","camelCase","toLowerCase","toUpperCase","space","kebabCase","snakeCase","upperCase","lowerCase","insertInRange","string","text","rightString","chunkString","match","initialString","restString","replaceList","words","truncate","maxLength","stringLength","breakAll","breakAllLength","truncateDown","truncateRight","truncateUp","rawURLDecodeRegex","andRegex","lessThanRegex","moreThanRegex","doubleQuoteRegex","rawURLDecode","decodeURIComponent","htmlEntities","sanitize","tokenizeRegEx","wordsRegEx","tokenize","getWords","upperFirstLetter","upperFirst","upperFirstOnly","upperFirstAll","upperFirstOnlyAll","getTypeName","isArguments","noValue","isMapCall","isMap","typedArrayRegex","arrayConstructorName","isTypedArray","isArrayLike","strictFlag","isBigIntCall","isBigInt","isBooleanCall","isBoolean","isArrayBufferCall","isArrayBuffer","isChild","sourceChild","targetParent","constructorNames","isCloneable","isDateCall","isDate","isEmpty","isFalse","isF32Call","isF32","isF64Call","isF64","isInteger","Number","isFloat","isI16Call","isI16","isI32Call","isI32","isI8Call","isI8","isIterable","Symbol","iterator","isPromise","Promise","isKindAsync","isParent","sourceParent","targetChild","isPrimitive","type","isRelated","targetOne","targetTwo","isSafeInteger","isSafeInt","isSameType","other","otherType","isTrue","isU16Call","isU16","isU32Call","isU32","isU8Call","isU8","isU8CCall","isU8C","isWeakMapCall","isWeakMap","isDeno","globalThis","Deno","isNodejs","process","versions","node","isTruthy","returnIfTrue","isFalsy","ifValue","optional","notEqual","jsonNative","JSON","jsonParse","reviver","parse","stringify","createAssertError","expected","localOptions","options","errorTitle","title","file","Error","assertAsync","sourceArg","assert","bindAll","bindThis","targetAssign","structuredCloneSafe","structuredClone","clone","compact","sourceKeysLength","targetObject","keyName","forOfCompactMapAsync","forOfCompactMap","compactMap","everyArg","forOfFilter","forOfFilterAsync","returnFlow","flow","flowRight","flowAsync","flowAsyncRight","forMap","cloned","methodBound","arraysToObject","search","hasDot","ifNotAssign","rootObject","equalThis","Intervals","clearInterval","setInterval","intervals","interval","clearIntervals","merge","currentSource","sourceItem","sourceKey","Model","static","modelName","modelValue","models","model","pair","concurrent","queue","all","concurrentStatus","allSettled","promise","propertyMatch","compared","setKey","Store","data","Proxy","proxySource","console","log","stubArray","stubObject","stubString","timesAsync","timesMapAsync","toggle","on","off","UniqID","totalActive","freed","totalFree","shift","free","isActive","shouldReset","reset","uniqID","VirtualStorage","initialObject","items","getItem","setItem","removeItem","virtualStorage","isAgent","userAgent","navigator","userAgentData","brands","brand","version","userAgentNormalized","eventAdd","eventName","useCapture","addEventListener","eventRemove","removeEventListener","isEnter","eventObject","keyCode","createFragment","document","createDocumentFragment","append","parentNode","appendChild","nodeAttribute","getAttribute","setAttribute","classTest","tagTest","regexSpace","getByClass","getElementsByClassName","getByTag","getElementsByTagName","getById","getElementById","querySelector","querySelectorAll","selector","select","createElementCache","createElement","importjs","url","src","accept","nodeAttachLoadingEvents","isDocumentReady","state","readyState","scriptTag","protocol","location","protocolSocket","hostname","info","hardware","cores","hardwareConcurrency","host","saveDimensions","bodyHeight","body","offsetHeight","bodyWidth","offsetWidth","windowHeight","window","innerHeight","windowWidth","innerWidth","updateDimensions","hasLocal","storeCheck","e","hasStorage","localStorage","Crate","local","storage","crate","virtualFlag","generateTheme","color","bg","themes","alert","important","notify","warning","cnsl","themeName","trace","cnslTheme","background","isDom","nodeType","isHTMLCollection","isNodeList"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../../../source/arrays/chunk.js","../../../source/arrays/clear.js","../../../source/arrays/clone.js","../../../source/types/isUndefined.js","../../../source/utilities/hasLength.js","../../../source/types/isNull.js","../../../source/types/hasValue.js","../../../source/utilities/returnValue.js","../../../source/arrays/each.js","../../../source/arrays/compactMap.js","../../../source/arrays/eachAsync.js","../../../source/arrays/compactMapAsync.js","../../../source/numbers/isNegative.js","../../../source/arrays/range.js","../../../source/utilities/forEach.js","../../../source/types/isArray.js","../../../source/arrays/ensure.js","../../../source/arrays/flattenDeep.js","../../../source/classes/construct.js","../../../source/arrays/difference.js","../../../source/arrays/drop.js","../../../source/arrays/dropRight.js","../../../source/arrays/eachRight.js","../../../source/arrays/eachRightAsync.js","../../../source/arrays/every.js","../../../source/arrays/everyAsync.js","../../../source/arrays/filter.js","../../../source/arrays/filterAsync.js","../../../source/arrays/first.js","../../../source/arrays/flatten.js","../../../source/arrays/initial.js","../../../source/arrays/intersect.js","../../../source/arrays/invoke.js","../../../source/objects/keys.js","../../../source/utilities/toPath.js","../../../source/utilities/get.js","../../../source/objects/hasKeys.js","../../../source/types/isPlainObject.js","../../../source/types/isConstructor.js","../../../source/types/isTypeFactory.js","../../../source/types/isBuffer.js","../../../source/utilities/isEqual.js","../../../source/arrays/isMatch.js","../../../source/arrays/largest.js","../../../source/arrays/last.js","../../../source/arrays/map.js","../../../source/arrays/mapAsync.js","../../../source/arrays/mapRight.js","../../../source/arrays/mapWhile.js","../../../source/math/subtract.js","../../../source/arrays/sortNumberAscending.js","../../../source/arrays/partition.js","../../../source/math/subtractReverse.js","../../../source/arrays/sortNumberDescening.js","../../../source/arrays/remove.js","../../../source/arrays/rest.js","../../../source/arrays/right.js","../../../source/math/randomInt.js","../../../source/internal/array.js","../../../source/numbers/isNumberEqual.js","../../../source/arrays/shuffle.js","../../../source/arrays/sample.js","../../../source/arrays/smallest.js","../../../source/arrays/getNumberInsertIndex.js","../../../source/arrays/take.js","../../../source/arrays/takeRight.js","../../../source/arrays/unique.js","../../../source/arrays/union.js","../../../source/arrays/untilFalse.js","../../../source/arrays/untilTrue.js","../../../source/arrays/whileCompactMap.js","../../../source/arrays/whileEach.js","../../../source/arrays/whileMap.js","../../../source/arrays/without.js","../../../source/arrays/xor.js","../../../source/arrays/zip.js","../../../source/buffers/ensure.js","../../../source/buffers/clear.js","../../../source/collection/countBy.js","../../../source/collection/countKey.js","../../../source/collection/countWithoutKey.js","../../../source/collection/findIndexCache.js","../../../source/collection/findIndex.js","../../../source/collection/findItem.js","../../../source/collection/sortCollectionDescending.js","../../../source/collection/sortCollectionAlphabetically.js","../../../source/collection/sortCollectionAscending.js","../../../source/collection/getHighest.js","../../../source/collection/getLowest.js","../../../source/collection/groupBy.js","../../../source/collection/indexBy.js","../../../source/collection/invoke.js","../../../source/collection/invokeAsync.js","../../../source/types/isNumber.js","../../../source/types/isString.js","../../../source/objects/pluckObject.js","../../../source/collection/pluck.js","../../../source/collection/sortCollectionAlphabeticallyReverse.js","../../../source/files/getExtension.js","../../../source/files/getFilename.js","../../../source/internal/regexTestFactory.js","../../../source/files/isFileCSS.js","../../../source/files/isFileHTML.js","../../../source/files/isFileJS.js","../../../source/files/isFileJSON.js","../../../source/functions/after.js","../../../source/functions/ary.js","../../../source/functions/before.js","../../../source/objects/assign.js","../../../source/objects/eachAsync.js","../../../source/objects/each.js","../../../source/utilities/forEachAsync.js","../../../source/types/isSet.js","../../../source/utilities/forOf.js","../../../source/types/isGenerator.js","../../../source/utilities/forOfAsync.js","../../../source/types/isFunction.js","../../../source/types/isAsync.js","../../../source/utilities/generateLoop.js","../../../source/utilities/each.js","../../../source/functions/chain.js","../../../source/functions/curry.js","../../../source/functions/curryRight.js","../../../source/utilities/stubTrue.js","../../../source/utilities/stubFalse.js","../../../source/utilities/noop.js","../../../source/utilities/times.js","../../../source/utilities/timer.js","../../../source/internal/apply.js","../../../source/functions/debounce.js","../../../source/functions/ifInvoke.js","../../../source/functions/inAsync.js","../../../source/functions/inSync.js","../../../source/functions/negate.js","../../../source/functions/nthArg.js","../../../source/functions/once.js","../../../source/objects/mapAsync.js","../../../source/objects/map.js","../../../source/types/getType.js","../../../source/types/cloneType.js","../../../source/utilities/forOfMap.js","../../../source/utilities/forOfMapAsync.js","../../../source/utilities/map.js","../../../source/functions/over.js","../../../source/objects/everyAsync.js","../../../source/objects/every.js","../../../source/utilities/forOfEvery.js","../../../source/utilities/forOfEveryAsync.js","../../../source/utilities/every.js","../../../source/functions/overEvery.js","../../../source/functions/rearged.js","../../../source/functions/throttle.js","../../../source/functions/wrap.js","../../../source/utilities/cacheNativeMethod.js","../../../source/internal/object.js","../../../source/internal/isSame.js","../../../source/math/add.js","../../../source/math/deduct.js","../../../source/math/divide.js","../../../source/math/increment.js","../../../source/math/multiple.js","../../../source/math/progress.js","../../../source/math/randomFloat.js","../../../source/math/remainder.js","../../../source/math/subtractAll.js","../../../source/math/sumAll.js","../../../source/numbers/isNumberInRange.js","../../../source/numbers/isNumberNotInRange.js","../../../source/numbers/isPositive.js","../../../source/numbers/isZero.js","../../../source/objects/getEntries.js","../../../source/objects/compactKeys.js","../../../source/objects/compactMapAsync.js","../../../source/objects/compactMap.js","../../../source/objects/filter.js","../../../source/objects/filterAsync.js","../../../source/objects/invert.js","../../../source/objects/isMatch.js","../../../source/types/isRegex.js","../../../source/regexps/escapeRegex.js","../../../source/regexps/arrayToRegex.js","../../../source/objects/omit.js","../../../source/objects/pick.js","../../../source/objects/size.js","../../../source/objects/zip.js","../../../source/strings/camelCase.js","../../../source/strings/kebabCase.js","../../../source/strings/snakeCase.js","../../../source/strings/upperCase.js","../../../source/strings/lowerCase.js","../../../source/strings/range.js","../../../source/strings/replace.js","../../../source/strings/truncate.js","../../../source/strings/sanitize.js","../../../source/strings/tokenize.js","../../../source/strings/typography.js","../../../source/types/getTypeName.js","../../../source/types/isArguments.js","../../../source/types/noValue.js","../../../source/types/isMap.js","../../../source/types/isTypedArray.js","../../../source/types/isArrayLike.js","../../../source/types/isBigInt.js","../../../source/types/isBoolean.js","../../../source/types/isArrayBuffer.js","../../../source/types/isChild.js","../../../source/types/isCloneable.js","../../../source/types/isDate.js","../../../source/types/isEmpty.js","../../../source/types/isFalse.js","../../../source/types/isF32.js","../../../source/types/isF64.js","../../../source/types/isFloat.js","../../../source/types/isI16.js","../../../source/types/isI32.js","../../../source/types/isI8.js","../../../source/types/isIterable.js","../../../source/types/isPromise.js","../../../source/types/isKindAsync.js","../../../source/types/isParent.js","../../../source/types/isPrimitive.js","../../../source/types/isRelated.js","../../../source/types/isSafeInt.js","../../../source/types/isSameType.js","../../../source/types/isTrue.js","../../../source/types/isU16.js","../../../source/types/isU32.js","../../../source/types/isU8.js","../../../source/types/isU8C.js","../../../source/types/isWeakMap.js","../../../source/types/isDeno.js","../../../source/types/isNode.js","../../../source/types/isTruthy.js","../../../source/types/isFalsy.js","../../../source/utilities/ifValue.js","../../../source/utilities/notEqual.js","../../../source/utilities/json.js","../../../source/utilities/assert.js","../../../source/utilities/bindAll.js","../../../source/utilities/clear.js","../../../source/utilities/clone.js","../../../source/utilities/compact.js","../../../source/utilities/forOfCompactMapAsync.js","../../../source/utilities/forOfCompactMap.js","../../../source/utilities/compactMap.js","../../../source/utilities/everyArg.js","../../../source/utilities/forOfFilter.js","../../../source/utilities/forOfFilterAsync.js","../../../source/utilities/filter.js","../../../source/utilities/flow.js","../../../source/utilities/flowAsync.js","../../../source/utilities/forMap.js","../../../source/utilities/arraysToObject.js","../../../source/utilities/has.js","../../../source/utilities/hasDot.js","../../../source/utilities/ifNotAssign.js","../../../source/utilities/interval.js","../../../source/utilities/merge.js","../../../source/utilities/model.js","../../../source/utilities/pair.js","../../../source/utilities/concurrent.js","../../../source/utilities/concurrentStatus.js","../../../source/utilities/promise.js","../../../source/utilities/propertyMatch.js","../../../source/utilities/setKey.js","../../../source/utilities/setValue.js","../../../source/utilities/store.js","../../../source/utilities/stubArray.js","../../../source/utilities/stubObject.js","../../../source/utilities/stubString.js","../../../source/utilities/timesAsync.js","../../../source/utilities/toggle.js","../../../source/utilities/uid.js","../../../source/utilities/virtualStorage.js","../../../source/browser/agent.js","../../../source/browser/event.js","../../../source/browser/isEnter.js","../../../source/browser/frag.js","../../../source/browser/append.js","../../../source/browser/attribute.js","../../../source/browser/selector.js","../../../source/browser/importScript.js","../../../source/browser/ready.js","../../../source/browser/info.js","../../../source/browser/dimensions.js","../../../source/browser/storage.js","../../../source/browser/console.js","../../../source/browser/is.js"],"sourcesContent":["/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Invoke each function in the given array.\n *\n * @function invokeArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { invokeArray, assert } from '@universalweb/acid';\n * function test(arg){\n * \treturn [this, arg];\n * }\n * const results = invokeArray([test], 1, test);\n * assert(results, [test, 1]);\n */\nexport function invokeArray(source, arg, thisCall) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index].call(thisCall, arg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index](arg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollection\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * import { invokeCollection, assert } from '@universalweb/acid';\n * const results = invokeCollection([{\n *\ttest(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollection(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapArray(collection, (item, index) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollectionAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * import { invokeCollectionAsync, assert } from '@universalweb/acid';\n * const results = await invokeCollectionAsync([{\n *\tasync test(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollectionAsync(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapAsyncArray(collection, (item) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapAsyncArray(collection, async (item) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from '../objects/each.js';\nimport { isBoolean } from '../types/isBoolean.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Checks to see of the browser agent has a string.\n *\n * @function isAgent\n * @category browser\n * @type {Function}\n * @param {String} source - The string to search for.\n * @returns {Boolean} - Returns true or false.\n * @example\n * isAgent('mobile');\n * // => false\n */\nexport function isAgent(source) {\n\treturn (source) ? isAgent[source] : keys(isAgent);\n}\nconst userAgent = globalThis.navigator?.userAgentData;\nif (userAgent) {\n\teachObject(userAgent, (value, key) => {\n\t\tif (isBoolean(value) && value) {\n\t\t\tisAgent[key] = value;\n\t\t}\n\t});\n\teachArray(userAgent.brands, (value) => {\n\t\tisAgent[value.brand] = value.version;\n\t});\n} else if (navigator.userAgent) {\n\tlet userAgentNormalized = navigator.userAgent.toLowerCase();\n\tuserAgentNormalized = userAgentNormalized.replace(/_/g, '.');\n\tuserAgentNormalized = userAgentNormalized.replace(/[#_,;()]/g, '');\n\tconst userAgentSplit = userAgentNormalized.split(/ |\\//);\n\teachArray(userAgentSplit, (item) => {\n\t\tisAgent[item] = true;\n\t});\n}\n\n","/**\n * Attaches an event listener to a node.\n *\n * @function eventAdd\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventAdd(document.body, 'click', () => {console.log('CLICKED');});\n * // = > document.body\n */\nexport function eventAdd(node, eventName, callback, useCapture) {\n\tnode.addEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n/**\n * Attaches an event listener to a node.\n *\n * @function eventRemove\n * @category browser\n * @type {Function}\n * @param {Node} node - Given node.\n * @param {String} eventName - A string representing the event type.\n * @param {Object|Function} callback - The object which receives a notification when an event of the specified type occurs.\n * @param {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.\n * @returns {Node} - Returns given node.\n *\n * @example\n * eventRemove(document.body, () => {console.log('CLICKED');});\n * // = > Undefined\n */\nexport function eventRemove(node, eventName, callback, useCapture) {\n\tnode.removeEventListener(eventName, callback, useCapture);\n\treturn node;\n}\n\n","/**\n * Checks if the keycode of the event is strictly equal to 13.\n *\n * @function isEnter\n * @category browser\n * @type {Function}\n * @param {Object} eventObject - Object to be checked.\n * @returns {Boolean} - Returns true if the keycode property of the object equals 13.\n *\n * @example\n * isEnter('click');\n * // => false\n */\nexport function isEnter(eventObject) {\n\treturn eventObject.keyCode === 13;\n}\n\n","/**\n * Create a document fragment.\n *\n * @function createFragment\n * @category browser\n * @type {Function}\n * @ignore\n * @returns {Fragment} - Returns a new document fragment.\n*/\nexport const createFragment = document.createDocumentFragment.bind(document);\n","/**\n * Append a DOM node.\n *\n * @function append\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @ignore\n * @param {Node} parentNode - The parent node.\n * @param {Node} child - The node to be appended.\n * @returns {undefined} - Returns the child.\n */\nexport function append(parentNode, child) {\n\tparentNode.appendChild(child);\n\treturn child;\n}\n","import { eachObject } from '../objects/each.js';\nimport { isArray } from '../types/isArray.js';\nimport { mapArray } from '../arrays/map.js';\nimport { zipObject } from '../objects/zip.js';\n/**\n * Assign attributes to a DOM node.\n *\n * @function nodeAttribute\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @async\n * @param {Node} node - The DOM node.\n * @param {Object|Array} object - Object with key being the attribute name and the value being the attribute value. If an array is given it will get the values corresponding to the array items.\n * @returns {Object|Node} - If using an array this returns an object of attribute names as keys and their values as the property value. If using an object this will return the provided node.\n *\n * @example\n * nodeAttribute(document.body, { 'data-example': 'test'});\n */\nexport function nodeAttribute(node, object) {\n\tif (isArray(object)) {\n\t\treturn zipObject(object, mapArray(object, (item) => {\n\t\t\treturn node.getAttribute(item);\n\t\t}));\n\t}\n\teachObject(object, (item, key) => {\n\t\tnode.setAttribute(key, item);\n\t});\n\treturn node;\n}\n\n","import { restString } from '../strings/range.js';\nconst dotString = '.';\nconst poundString = '#';\nconst classTest = /^.[\\w_-]+$/;\nconst tagTest = /^[A-Za-z]+$/;\nconst regexSpace = /\\s/;\n/**\n * Wrapper around getElementsByClassName.\n *\n * @function getByClass\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByClass = document.getElementsByClassName.bind(document);\n/**\n * Wrapper around getElementsByTagName.\n *\n * @function getByTag\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getByTag = document.getElementsByTagName.bind(document);\n/**\n * Wrapper around getElementsByIdName.\n *\n * @function getById\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const getById = document.getElementById.bind(document);\n/**\n * Wrapper around querySelector.\n *\n * @function querySelector\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelector = document.querySelector.bind(document);\n/**\n * Wrapper around querySelectorAll.\n *\n * @function querySelectorAll\n * @category browser\n * @ignoreTest\n * @type {Function}\n */\nexport const querySelectorAll = document.querySelectorAll.bind(document);\n/**\n * Returns relevant DOM node.\n *\n * @function selector\n * @category browser\n * @ignoreTest\n * @param {String} select - String to be evaluated.\n * @type {Function}\n * @returns {Node} - Returns a DOM node.\n *\n * @example\n * selector('#node');\n * // =>
\n */\nexport function selector(select) {\n\tconst firstLetter = select[0];\n\tswitch (firstLetter) {\n\tcase poundString:\n\t\tif (!regexSpace.test(select)) {\n\t\t\treturn getById(restString(select));\n\t\t}\n\t\tbreak;\n\tcase dotString:\n\t\tif (classTest.test(select)) {\n\t\t\treturn getByClass(restString(select));\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tif (tagTest.test(select)) {\n\t\t\treturn getByTag(select);\n\t\t}\n\t}\n\treturn querySelectorAll(select);\n}\n\n","import { append } from './append.js';\nimport { hasDot } from '../utilities/hasDot.js';\nimport { eventAdd } from './event.js';\nimport { nodeAttribute } from './attribute.js';\nimport { promise } from '../utilities/promise.js';\nimport { querySelector } from './selector.js';\nconst createElementCache = document.createElement.bind(document);\nconst nodeAttachLoadingEvents = (node) => {\n\treturn promise((accept) => {\n\t\teventAdd(node, 'load', accept, true);\n\t\teventAdd(node, 'error', accept, true);\n\t\tappend(querySelector('head'), node);\n\t});\n};\n/**\n * Asynchronously import a js file and append it to the head node.\n * If a script fails to load importjs won't reject the promise rather it'll return the error event to limit further complications & reduce code complexity.\n *\n * @function importjs\n * @category browser\n * @type {Function}\n * @async\n * @param {*} url - URL of the script to import. If not \".\" is found in the file name \".js\" will be appended.\n * @returns {Promise} - Returns a promise which returns a \"load\" or \"error\" event associated with the script.\n *\n * @example\n * importjs('core.js');\n * importjs('core');\n */\nexport function importjs(url) {\n\tconst src = hasDot(url) && url || `${url}.js`;\n\tconst node = nodeAttribute(createElementCache('script'), {\n\t\tasync: '',\n\t\tsrc\n\t});\n\treturn nodeAttachLoadingEvents(node);\n}\n\n","import { eventAdd } from './event.js';\nimport { importjs } from './importScript.js';\nimport { getById } from './selector.js';\n/**\n * Runs a function if the document has finished loading. If not, add an eventlistener.\n *\n * @function isDocumentReady\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Function} callable - Function to be run.\n * @returns {Boolean|Function} - If the document is ready, returns a function. If not, return false.\n *\n * @example\n * isDocumentReady(() => {return 1});\n * // => 1\n */\nexport function isDocumentReady(callable) {\n\tconst state = document.readyState;\n\tconst checkStatus = state === 'interactive' || state === 'completed' || state === 'complete';\n\tif (checkStatus) {\n\t\treturn (callable) ? callable() : true;\n\t}\n\tif (callable) {\n\t\teventAdd(document, 'DOMContentLoaded', callable);\n\t}\n\treturn false;\n}\nisDocumentReady(() => {\n\tconst scriptTag = getById('AcidLib');\n\tconst scriptName = (scriptTag && scriptTag.getAttribute('data-index')) || '/index';\n\timportjs(scriptName);\n});\n","const protocol = location.protocol;\nconst protocolSocket = (protocol === 'http:') ? 'ws' : 'wss';\nconst hostname = location.hostname;\n/**\n * Holds client hardware, browser, and host info.\n *\n * @memberof $\n * @category browser\n * @ignoreTest\n * @property {Object} info - Client hardware & host info.\n * @type {Object}\n */\nexport const info = {\n\thardware: {\n\t\tcores: navigator.hardwareConcurrency\n\t},\n\thost: {\n\t\tname: hostname,\n\t\tprotocol,\n\t\tprotocolSocket,\n\t}\n};\n\n","import { assign } from '../objects/assign.js';\nimport { eventAdd } from './event.js';\nimport { info } from './info.js';\nimport { isDocumentReady } from './ready.js';\nexport function saveDimensions() {\n\tassign(info, {\n\t\tbodyHeight: document.body.offsetHeight,\n\t\tbodyWidth: document.body.offsetWidth,\n\t\twindowHeight: window.innerHeight,\n\t\twindowWidth: window.innerWidth,\n\t});\n}\n/**\n * Save current document & window dimensions to the info property.\n *\n * @function updateDimensions\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * updateDimensions();\n */\nexport function updateDimensions() {\n\tsaveDimensions();\n}\nisDocumentReady(updateDimensions);\neventAdd(window, 'load', updateDimensions, true);\neventAdd(window, 'resize', updateDimensions, true);\n\n","/**\n * LocalStorage Module..\n *\n * @module browser/storage\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nimport { virtualStorage } from '../utilities/virtualStorage.js';\nexport let hasLocal;\nfunction hasStorage(storeCheck) {\n\ttry {\n\t\tstoreCheck().removeItem('TESTING');\n\t\thasLocal = true;\n\t} catch (e) {\n\t\thasLocal = false;\n\t}\n}\nhasStorage(() => {\n\treturn localStorage;\n});\n/**\n * Constructs a virtual storage container with localStorage support.\n * Crate will fallback to strictly virtual storage if localStorage isn't supported.\n * If localStorage is supported virtual storage will be used first & only fallback to localStorage when needed.\n * Crate is ideal as a seemless drop in replacement for localStorage when not supported or allowed.\n *\n * @class Crate\n * @category browser\n * @returns {Crate} - Returns a new instance of Crate.\n *\n * @example\n * import { Crate, construct, assert } from '@universalweb/acid';\n * const storageCrate = construct(Crate);\n * storageCrate.setItem('key', 'value');\n * assert(storageCrate.getItem('key'), 'value');\n */\nexport class Crate {\n\tconstructor(initialObject) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local = localStorage;\n\t\t}\n\t\tthis.storage = virtualStorage(initialObject);\n\t}\n\thasLocal = hasLocal;\n\t/**\n\t * Save an item to a crate.\n\t *\n\t * @function setItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.setItem(key, (isString(value)) ? value : stringify(value));\n\t\t}\n\t\treturn this.storage.setItem(key, value);\n\t}\n\t/**\n\t * Get an item from a crate.\n\t *\n\t * @function getItem\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t */\n\tgetItem(key) {\n\t\tconst item = this.storage.getItem(key);\n\t\tif (hasValue(item)) {\n\t\t\treturn item;\n\t\t}\n\t\tif (!hasValue(item) && this.hasLocal) {\n\t\t\treturn this.local.getItem(key);\n\t\t}\n\t}\n\t/**\n\t * Clears all data for the crate including all of localStorage if supported.\n\t *\n\t * @function clear\n\t * @class Crate\n\t * @category browser\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.clear();\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tclear() {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.clear();\n\t\t}\n\t\tthis.storage.clear();\n\t}\n\t/**\n\t * Remove an item from a crate.\n\t *\n\t * @class Crate\n\t * @category browser\n\t * @function removeItem\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { Crate, construct, assert } from '@universalweb/acid';\n\t * const storageCrate = construct(Crate);\n\t * storageCrate.setItem('key', 'value');\n\t * assert(storageCrate.getItem('key'), 'value');\n\t * storageCrate.removeItem('key');\n\t * assert(storageCrate.getItem('key'), undefined);\n\t */\n\tremoveItem(key) {\n\t\tif (this.hasLocal) {\n\t\t\tthis.local.removeItem(key);\n\t\t}\n\t\tthis.storage.removeItem(key);\n\t}\n}\n/**\n * The crate function is a factory which wraps the Crate class constructor.\n *\n * @function crate\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new Crate Object.\n *\n * @example\n * const storageCrate = crate();\n * // => New Crate Object\n */\nexport function crate(virtualFlag) {\n\treturn new Crate(virtualFlag);\n}\n\n","import { isString } from '../types/isString.js';\nimport { stringify } from '../utilities/json.js';\nconst generateTheme = (color, bg) => {\n\treturn `color:${color};background:${bg};`;\n};\nexport const themes = {\n\talert: generateTheme('#fff', '#f44336'),\n\timportant: generateTheme('#fff', '#E91E63'),\n\tnotify: generateTheme('#fff', '#651FFF'),\n\twarning: generateTheme('#000', '#FFEA00'),\n};\n/**\n * Console.trace wrapper with theme support.\n *\n * @function cnsl\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {Object} value - The value to be logged.\n * @param {String} themeName - The name of the theme to be used.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnsl('Lucy', 'notify');\n * // 'Lucy'\n*/\nexport const cnsl = (value, themeName) => {\n\tconst data = isString(value) ? value : stringify(value);\n\tif (themeName === 'alert' || themeName === 'warning') {\n\t\treturn console.trace(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n\t}\n\tconsole.log(`%c${data}`, `${themes[themeName]}font-size:13px;padding:2px 5px;border-radius:2px;`);\n};\n/**\n * Create color themes for cnsl method.\n *\n * @function cnslTheme\n * @category browser\n * @ignoreTest\n * @type {Function}\n * @param {String} themeName - The name of the theme.\n * @param {String} color - The text color.\n * @param {String} background - The background color of the block.\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * cnslTheme('BlackNWhite', '#fff', '#000');\n*/\nexport const cnslTheme = (themeName, color, background) => {\n\tthemes[themeName] = generateTheme(color, background);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { difference } from '../arrays/difference.js';\n/**\n * Checks if value is a plain DOM Node.\n *\n * @function isDom\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDom, assert } from '@universalweb/acid';\n * assert(isDom(document.querySelectorAll('head')), true);\n */\nexport function isDom(source) {\n\treturn source && source.nodeType !== 9;\n}\n/**\n * Checks if the value is a HTMLCollection.\n *\n * @function isHTMLCollection\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isHTMLCollection, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isHTMLCollection(document.getElementsByClassName('test')), true);\n */\nconst objectHTMLCollection = '[object HTMLCollection]';\nexport function isHTMLCollection(source) {\n\treturn (hasValue(source)) ? source.toString() === objectHTMLCollection : false;\n}\n/**\n * Checks if the value is a NodeList.\n *\n * @function isNodeList\n * @category browser\n * @ignoreTest\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNodeList, assert } from '@universalweb/acid';\n * document.body.innerHTML = '
';\n * assert(isNodeList(document.querySelectorAll('.test')), true);\n */\nconst objectNodeList = '[object NodeList]';\nexport function isNodeList(source) {\n\treturn (hasValue(source)) ? source.toString() === objectNodeList : false;\n}\n"],"names":["chunk","array","size","chunked","index","forEach","item","key","push","clearArray","source","length","cloneArray","slice","isUndefined","undefined","hasLength","Boolean","isNull","hasValue","returnValue","eachArray","iteratee","thisCall","additionalArg","arrayLength","call","compactMapArray","results","arrayOriginal","returned","async","eachAsyncArray","compactMapAsyncArray","result","sign","Math","isNegative","rangeUp","start","end","step","sourceArray","position","rangeDown","range","callback","isArray","Array","isNotArray","ensureArray","flattenDeep","flat","Infinity","reflectConstruct","Reflect","construct","target","argumentsList","newTarget","args","difference","sources","differencesMap","Map","differences","currentArray","parentIndex","child","childIndex","childRoot","get","count","set","drop","amount","upTo","splice","dropRight","eachRight","thisBind","eachRightAsync","everyArray","sourceLength","everyAsyncArray","filterArray","filterAsyncArray","first","flatten","level","i","reduce","previousValue","currentValue","concat","initial","intersection","arrays","otherItem","includes","invokeArray","arg","objectKeys","Object","keys","regexToPath","regexCloseBracket","emptyString","toPath","replace","split","propertyString","link","hasOwn","hasKeys","properties","pathArray","lastPath","pop","initialPathObject","hasAnyKeys","find","isPlainObject","value","constructor","toString","trim","isConstructor","isConstructorFactory","constructorName","name","isConstructorNameFactory","isTypeFactory","method","primarySource","otherSources","isBufferCall","isBuffer","isEqual","equals","sourceProperties","isMatchArray","compareArray","mathNativeMax","max","largest","last","indexFrom","mapArray","mapAsyncArray","mapRightArray","trueIndex","mapWhile","subtract","minuend","subtrahend","sortNumberAscending","numberList","sort","partition","predicate","rejected","subtractReverse","sortNumberDescening","remove","removeThese","removeBy","rest","right","floor","random","randomInt","min","arrayFrom","from","toArray","arrayLike","mapFn","thisArg","isNumberEqual","shuffle","shuffleArray","sample","sampleArray","used","mathNativeMin","smallest","getNumberInsertIndex","insertIndex","take","endIndex","takeRight","indexRight","onlyUnique","indexOf","sortUnique","unique","isSorted","filter","union","untilFalseArray","untilTrueArray","whileCompactMap","whileEachArray","whileMapArray","without","sourcesSet","Set","has","xor","xorMap","xored","zip","map","unZip","arraySet","ensureBuffer","Buffer","alloc","clearBuffer","fill","countBy","collection","object","countKey","propertyName","countWithoutKey","findIndexCache","element","indexMatch","findIndex","id","findItem","sortCollectionDescendingFilter","previous","next","ifMatch","previousKey","nextKey","sortCollectionDescending","sortObjectsAlphabetically","localeCompare","sortCollectionAlphabetically","sortCollectionAscendingFilter","sortCollectionAscending","getHighest","getLowest","groupBy","sortedObject","indexBy","invokeCollection","property","invokeCollectionAsync","isNumberCall","isNumber","isNotNumber","isString","String","isNotString","pluckObject","targets","pluck","sortObjectsAlphabeticallyReverse","sortCollectionAlphabeticallyReverse","getFileExtension","substring","lastIndexOf","getFilename","regexTestFactory","regexType","test","isFileCSS","isFileHTML","isFileJS","isFileJSON","after","callable","point","ary","before","objectAssign","assign","eachAsyncObject","propertyCount","eachObject","objectKeysArray","forEachAsync","values","valuesLength","isSetCall","isSet","forOf","isGeneratorCall","isGenerator","forOfAsync","generatorArgs","isFunction","Function","isAsyncCall","isAsync","generateLoop","arrayLoop","arrayLoopAsync","objectLoop","objectLoopAsync","forOfLoop","forOfLoopAsync","argument1","argument2","argument3","isIterateeAsync","each","Chain","methods","this","addChainMethod","thisChain","methodName","setValue","done","chain","config","curry","arity","curries","curried","curryArgs","curryRight","unshift","truth","stubTrue","falsy","stubFalse","noop","times","timesMap","Timers","list","clearTimeout","delete","time","currentThis","setTimeout","clear","timers","timer","clearTimers","applyNative","apply","thisArgument","debounce","debounced","bind","ifInvoke","inAsync","firstArgument","inSync","negate","nthArg","once","mapAsyncObject","thisObject","mapObject","original","getType","cloneType","sourceType","forOfMap","resultsObject","methodPush","add","methodPushBound","methodSet","forOfMapAsync","resultsGenerator","over","iteratees","everyAsyncObject","everyObject","forOfEvery","forOfEveryAsync","every","overEvery","predicates","reArg","indexes","throttle","throttled","shouldThrottle","wrap","wrapper","functionPrototype","prototype","cacheNativeMethod","getPropNames","getOwnPropertyNames","getPropDesc","getOwnPropertyDescriptor","defProp","defineProperty","hasProp","hasOwnProperty","isSame","is","augend","addend","deduct","divide","increment","multiply","calcProgress","total","currentAmount","randomFloat","remainder","subtractAll","a","b","sumAll","isNumberInRange","isNumberNotInRange","isPositive","isZero","objectEntries","entries","getEntries","compactKeys","compactedKeys","compactMapAsyncObject","compactMapObject","filterObject","filterAsyncObject","invert","isMatchObject","sourceKeys","targetKeys","isRegexCall","isRegex","escapeRegexRegex","escapeRegex","arrayToRegex","makeSafe","RegExp","join","omit","blacklist","blacklistRegex","numberToString","pick","whitelist","objectSize","zipObject","zipedObject","unZipObject","unZippedKeys","normalizeCase","camelCase","toLowerCase","toUpperCase","space","kebabCase","snakeCase","upperCase","lowerCase","insertInRange","string","text","rightString","chunkString","match","initialString","restString","replaceList","words","truncate","maxLength","stringLength","breakAll","breakAllLength","truncateDown","truncateRight","truncateUp","rawURLDecodeRegex","andRegex","lessThanRegex","moreThanRegex","doubleQuoteRegex","rawURLDecode","decodeURIComponent","htmlEntities","sanitize","tokenizeRegEx","wordsRegEx","tokenize","getWords","upperFirstLetter","upperFirst","upperFirstOnly","upperFirstAll","upperFirstOnlyAll","getTypeName","isArguments","noValue","isMapCall","isMap","typedArrayRegex","arrayConstructorName","isTypedArray","isArrayLike","strictFlag","isBigIntCall","isBigInt","isBooleanCall","isBoolean","isArrayBufferCall","isArrayBuffer","isChild","sourceChild","targetParent","constructorNames","isCloneable","isDateCall","isDate","isEmpty","isFalse","isF32Call","isF32","isF64Call","isF64","isInteger","Number","isFloat","isI16Call","isI16","isI32Call","isI32","isI8Call","isI8","isIterable","Symbol","iterator","isPromise","Promise","isKindAsync","isParent","sourceParent","targetChild","isPrimitive","type","isRelated","targetOne","targetTwo","isSafeInteger","isSafeInt","isSameType","other","otherType","isTrue","isU16Call","isU16","isU32Call","isU32","isU8Call","isU8","isU8CCall","isU8C","isWeakMapCall","isWeakMap","isDeno","globalThis","Deno","isNodejs","process","versions","node","isTruthy","returnIfTrue","isFalsy","ifValue","optional","notEqual","jsonNative","JSON","jsonParse","reviver","parse","stringify","createAssertError","expected","localOptions","options","errorTitle","title","file","Error","assertAsync","sourceArg","assert","bindAll","bindThis","targetAssign","structuredCloneSafe","structuredClone","clone","compact","sourceKeysLength","targetObject","keyName","forOfCompactMapAsync","forOfCompactMap","compactMap","everyArg","forOfFilter","forOfFilterAsync","returnFlow","flow","flowRight","flowAsync","flowAsyncRight","forMap","cloned","methodBound","arraysToObject","search","hasDot","ifNotAssign","rootObject","equalThis","Intervals","clearInterval","setInterval","intervals","interval","clearIntervals","merge","currentSource","sourceItem","sourceKey","Model","static","modelName","modelValue","models","model","pair","concurrent","queue","all","concurrentStatus","allSettled","promise","propertyMatch","compared","setKey","Store","data","Proxy","proxySource","console","log","stubArray","stubObject","stubString","timesAsync","timesMapAsync","toggle","on","off","UniqID","totalActive","freed","totalFree","shift","free","isActive","shouldReset","reset","uniqID","VirtualStorage","initialObject","items","getItem","setItem","removeItem","virtualStorage","isAgent","userAgent","navigator","userAgentData","brands","brand","version","userAgentNormalized","eventAdd","eventName","useCapture","addEventListener","eventRemove","removeEventListener","isEnter","eventObject","keyCode","createFragment","document","createDocumentFragment","append","parentNode","appendChild","nodeAttribute","getAttribute","setAttribute","classTest","tagTest","regexSpace","getByClass","getElementsByClassName","getByTag","getElementsByTagName","getById","getElementById","querySelector","querySelectorAll","selector","select","createElementCache","createElement","importjs","url","src","accept","nodeAttachLoadingEvents","isDocumentReady","state","readyState","scriptTag","protocol","location","protocolSocket","hostname","info","hardware","cores","hardwareConcurrency","host","saveDimensions","bodyHeight","body","offsetHeight","bodyWidth","offsetWidth","windowHeight","window","innerHeight","windowWidth","innerWidth","updateDimensions","hasLocal","storeCheck","e","hasStorage","localStorage","Crate","local","storage","crate","virtualFlag","generateTheme","color","bg","themes","alert","important","notify","warning","cnsl","themeName","trace","cnslTheme","background","isDom","nodeType","isHTMLCollection","isNodeList"],"mappings":"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"} \ No newline at end of file diff --git a/build/module/bundle.js b/build/module/bundle.js index 4852b309..244b9422 100644 --- a/build/module/bundle.js +++ b/build/module/bundle.js @@ -794,6 +794,43 @@ function intersection(array, ...arrays) { }); } +/** + * Invoke each function in the given array. + * + * @function invokeArray + * @category array + * @type {Function} + * @param {Array} source - Array that will be looped through. + * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg. + * @param {*} thisCall - Iteratee called with thisCall as this. + * @param {*} additionalArg - An object to be given each time to the iteratee. + * @returns {Array} - The originally given array. + * + * @example + * import { invokeArray, assert } from '@universalweb/acid'; + * function test(arg){ + * return [this, arg]; + * } + * const results = invokeArray([test], 1, test); + * assert(results, [test, 1]); + */ +function invokeArray(source, arg, thisCall) { + if (!source) { + return; + } + const arrayLength = source.length; + if (hasValue(thisCall)) { + for (let index = 0; index < arrayLength; index++) { + source[index].call(thisCall, arg); + } + } else { + for (let index = 0; index < arrayLength; index++) { + source[index](arg); + } + } + return source; +} + /** * Get object's keys. * @@ -2311,7 +2348,7 @@ function indexBy(collection, propertyName = 'id') { /** * Invokes a function on the provided property name in each object in the collection. * - * @function invoke + * @function invokeCollection * @category collection * @type {Function} * @param {Array} collection - Collection from which method will be taken. @@ -2320,19 +2357,27 @@ function indexBy(collection, propertyName = 'id') { * @returns {Array} - Returns the results of the invoked method. * * @example - * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] + * import { invokeCollection, assert } from '@universalweb/acid'; + * const results = invokeCollection([{ + * test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); */ -function invoke(collection, property, value) { +function invokeCollection(collection, property, value, thisBind) { + if (thisBind) { + return mapArray(collection, (item, index) => { + return item[property].call(thisBind, value); + }); + } return mapArray(collection, (item, index) => { - return item[property](value, index); + return item[property](value); }); } /** * Asynchronously awaits & invokes a function on the provided property name in each object in the collection. * - * @function invokeAsync + * @function invokeCollectionAsync * @category collection * @type {Function} * @async @@ -2342,18 +2387,20 @@ function invoke(collection, property, value) { * @returns {Array} - Returns the results of the invoked method. * * @test - * (async () => { - * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]); - * }); - * - * @example - * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] - */ -function invokeAsync(collection, property, value) { - return mapAsyncArray(collection, async (item, index) => { - return item[property](value, index); + * import { invokeCollectionAsync, assert } from '@universalweb/acid'; + * const results = await invokeCollectionAsync([{ + * async test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); + */ +function invokeCollectionAsync(collection, property, value, thisBind) { + if (thisBind) { + return mapAsyncArray(collection, (item) => { + return item[property].call(thisBind, value); + }); + } + return mapAsyncArray(collection, async (item) => { + return item[property](value); }); } @@ -7206,5 +7253,5 @@ function currentPath(importMeta) { return path.dirname(fileURLToPath(importMeta.url)); } -export { Chain, Intervals, Model, Store, Timers, UniqID, VirtualStorage, add, after, apply, arrayToRegex, arraysToObject, ary, assert, assertAsync, assign, before, bindAll, cacheNativeMethod, calcProgress, camelCase, chain, chunk, chunkString, clear, clearArray, clearBuffer, clearIntervals, clearTimers, clone, cloneArray, cloneType, compact, compactKeys, compactMap, compactMapArray, compactMapAsyncArray, compactMapAsyncObject, compactMapObject, concurrent, concurrentStatus, construct, constructorName, copyFolder, countBy, countKey, countWithoutKey, currentFile, currentPath, curry, curryRight, debounce, deduct, defProp, difference, divide, drop, dropRight, each, eachArray, eachAsyncArray, eachAsyncObject, eachObject, eachRight, eachRightAsync, ensureArray, ensureBuffer, escapeRegex, escapeRegexRegex, every, everyArg, everyArray, everyAsyncArray, everyAsyncObject, everyObject, falsy, filter, filterArray, filterAsyncArray, filterAsyncObject, filterObject, findIndex, findIndexCache, findItem, first, flatten, flattenDeep, flow, flowAsync, flowAsyncRight, flowRight, forEach, forEachAsync, forMap, forOf, forOfAsync, forOfCompactMap, forOfCompactMapAsync, forOfEvery, forOfEveryAsync, forOfFilter, forOfFilterAsync, forOfMap, forOfMapAsync, generateLoop, get, getEntries, getFileExtension, getFilename, getHighest, getLowest, getNumberInsertIndex, getPropDesc, getPropNames, getType, getTypeName, groupBy, has, hasAnyKeys, hasDot, hasKeys, hasLength, hasProp, hasValue, htmlEntities, ifInvoke, ifNotAssign, ifValue, inAsync, inSync, increment, indexBy, initial, initialString, insertInRange, intersection, interval, intervals, invert, invoke, invokeAsync, isArguments, isArray, isArrayBuffer, isArrayBufferCall, isArrayLike, isAsync, isAsyncCall, isBigInt, isBigIntCall, isBoolean, isBooleanCall, isBuffer, isBufferCall, isChild, isCloneable, isConstructor, isConstructorFactory, isConstructorNameFactory, isDate, isDateCall, isDeno, isEmpty, isEqual, isF32, isF32Call, isF64, isF64Call, isFalse, isFalsy, isFileCSS, isFileHTML, isFileJS, isFileJSON, isFloat, isFunction, isGenerator, isGeneratorCall, isI16, isI16Call, isI32, isI32Call, isI8, isI8Call, isIterable, isKindAsync, isMap, isMapCall, isMatchArray, isMatchObject, isNegative, isNodejs, isNotArray, isNotNumber, isNotString, isNull, isNumber, isNumberCall, isNumberEqual, isNumberInRange, isNumberNotInRange, isParent, isPlainObject, isPositive, isPrimitive, isPromise, isRegex, isRegexCall, isRelated, isSafeInt, isSame, isSameType, isSet, isSetCall, isString, isTrue, isTruthy, isTypeFactory, isTypedArray, isU16, isU16Call, isU32, isU32Call, isU8, isU8C, isU8CCall, isU8Call, isUndefined, isWeakMap, isWeakMapCall, isZero, jsonParse, kebabCase, keys, largest, last, lowerCase, map, mapArray, mapAsyncArray, mapAsyncObject, mapObject, mapRightArray, mapWhile, merge, model, multiply, negate, noValue, noop, notEqual, nthArg, objectAssign, objectEntries, objectSize, omit, once, onlyUnique, over, overEvery, pair, partition, pick, pluck, pluckObject, promise, propertyMatch, randomFloat, randomInt, range, rangeDown, rangeUp, rawURLDecode, reArg, regexTestFactory, remainder, remove, removeBy, replaceList, rest, restString, returnValue, right, rightString, sample, sanitize, setKey, setValue, shuffle, smallest, snakeCase, sortCollectionAlphabetically, sortCollectionAlphabeticallyReverse, sortCollectionAscending, sortCollectionAscendingFilter, sortCollectionDescending, sortCollectionDescendingFilter, sortNumberAscending, sortNumberDescening, sortObjectsAlphabetically, sortObjectsAlphabeticallyReverse, sortUnique, stringify, stubArray, stubFalse, stubObject, stubString, stubTrue, subtract, subtractAll, subtractReverse, sumAll, take, takeRight, throttle, timer, timers, times, timesAsync, timesMap, timesMapAsync, toArray, toPath, toggle, tokenize, truncate, truncateRight, truth, unZip, unZipObject, union, uniqID, unique, untilFalseArray, untilTrueArray, upperCase, upperFirst, upperFirstAll, upperFirstLetter, upperFirstOnly, upperFirstOnlyAll, virtualStorage, whileCompactMap, whileEachArray, whileMapArray, without, words, wrap, xor, zip, zipObject }; +export { Chain, Intervals, Model, Store, Timers, UniqID, VirtualStorage, add, after, apply, arrayToRegex, arraysToObject, ary, assert, assertAsync, assign, before, bindAll, cacheNativeMethod, calcProgress, camelCase, chain, chunk, chunkString, clear, clearArray, clearBuffer, clearIntervals, clearTimers, clone, cloneArray, cloneType, compact, compactKeys, compactMap, compactMapArray, compactMapAsyncArray, compactMapAsyncObject, compactMapObject, concurrent, concurrentStatus, construct, constructorName, copyFolder, countBy, countKey, countWithoutKey, currentFile, currentPath, curry, curryRight, debounce, deduct, defProp, difference, divide, drop, dropRight, each, eachArray, eachAsyncArray, eachAsyncObject, eachObject, eachRight, eachRightAsync, ensureArray, ensureBuffer, escapeRegex, escapeRegexRegex, every, everyArg, everyArray, everyAsyncArray, everyAsyncObject, everyObject, falsy, filter, filterArray, filterAsyncArray, filterAsyncObject, filterObject, findIndex, findIndexCache, findItem, first, flatten, flattenDeep, flow, flowAsync, flowAsyncRight, flowRight, forEach, forEachAsync, forMap, forOf, forOfAsync, forOfCompactMap, forOfCompactMapAsync, forOfEvery, forOfEveryAsync, forOfFilter, forOfFilterAsync, forOfMap, forOfMapAsync, generateLoop, get, getEntries, getFileExtension, getFilename, getHighest, getLowest, getNumberInsertIndex, getPropDesc, getPropNames, getType, getTypeName, groupBy, has, hasAnyKeys, hasDot, hasKeys, hasLength, hasProp, hasValue, htmlEntities, ifInvoke, ifNotAssign, ifValue, inAsync, inSync, increment, indexBy, initial, initialString, insertInRange, intersection, interval, intervals, invert, invokeArray, invokeCollection, invokeCollectionAsync, isArguments, isArray, isArrayBuffer, isArrayBufferCall, isArrayLike, isAsync, isAsyncCall, isBigInt, isBigIntCall, isBoolean, isBooleanCall, isBuffer, isBufferCall, isChild, isCloneable, isConstructor, isConstructorFactory, isConstructorNameFactory, isDate, isDateCall, isDeno, isEmpty, isEqual, isF32, isF32Call, isF64, isF64Call, isFalse, isFalsy, isFileCSS, isFileHTML, isFileJS, isFileJSON, isFloat, isFunction, isGenerator, isGeneratorCall, isI16, isI16Call, isI32, isI32Call, isI8, isI8Call, isIterable, isKindAsync, isMap, isMapCall, isMatchArray, isMatchObject, isNegative, isNodejs, isNotArray, isNotNumber, isNotString, isNull, isNumber, isNumberCall, isNumberEqual, isNumberInRange, isNumberNotInRange, isParent, isPlainObject, isPositive, isPrimitive, isPromise, isRegex, isRegexCall, isRelated, isSafeInt, isSame, isSameType, isSet, isSetCall, isString, isTrue, isTruthy, isTypeFactory, isTypedArray, isU16, isU16Call, isU32, isU32Call, isU8, isU8C, isU8CCall, isU8Call, isUndefined, isWeakMap, isWeakMapCall, isZero, jsonParse, kebabCase, keys, largest, last, lowerCase, map, mapArray, mapAsyncArray, mapAsyncObject, mapObject, mapRightArray, mapWhile, merge, model, multiply, negate, noValue, noop, notEqual, nthArg, objectAssign, objectEntries, objectSize, omit, once, onlyUnique, over, overEvery, pair, partition, pick, pluck, pluckObject, promise, propertyMatch, randomFloat, randomInt, range, rangeDown, rangeUp, rawURLDecode, reArg, regexTestFactory, remainder, remove, removeBy, replaceList, rest, restString, returnValue, right, rightString, sample, sanitize, setKey, setValue, shuffle, smallest, snakeCase, sortCollectionAlphabetically, sortCollectionAlphabeticallyReverse, sortCollectionAscending, sortCollectionAscendingFilter, sortCollectionDescending, sortCollectionDescendingFilter, sortNumberAscending, sortNumberDescening, sortObjectsAlphabetically, sortObjectsAlphabeticallyReverse, sortUnique, stringify, stubArray, stubFalse, stubObject, stubString, stubTrue, subtract, subtractAll, subtractReverse, sumAll, take, takeRight, throttle, timer, timers, times, timesAsync, timesMap, timesMapAsync, toArray, toPath, toggle, tokenize, truncate, truncateRight, truth, unZip, unZipObject, union, uniqID, unique, untilFalseArray, untilTrueArray, upperCase, upperFirst, upperFirstAll, upperFirstLetter, upperFirstOnly, upperFirstOnlyAll, virtualStorage, whileCompactMap, whileEachArray, whileMapArray, without, words, wrap, xor, zip, zipObject }; //# sourceMappingURL=bundle.js.map diff --git a/build/module/bundle.js.map b/build/module/bundle.js.map index 705dc4a6..1d8739d2 100644 --- a/build/module/bundle.js.map +++ b/build/module/bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"bundle.js","sources":["../../source/arrays/chunk.js","../../source/arrays/clear.js","../../source/arrays/clone.js","../../source/types/isUndefined.js","../../source/utilities/hasLength.js","../../source/types/isNull.js","../../source/types/hasValue.js","../../source/utilities/returnValue.js","../../source/arrays/each.js","../../source/arrays/compactMap.js","../../source/arrays/eachAsync.js","../../source/arrays/compactMapAsync.js","../../source/numbers/isNegative.js","../../source/arrays/range.js","../../source/utilities/forEach.js","../../source/types/isArray.js","../../source/arrays/ensure.js","../../source/arrays/flattenDeep.js","../../source/classes/construct.js","../../source/arrays/difference.js","../../source/arrays/drop.js","../../source/arrays/dropRight.js","../../source/arrays/eachRight.js","../../source/arrays/eachRightAsync.js","../../source/arrays/every.js","../../source/arrays/everyAsync.js","../../source/arrays/filter.js","../../source/arrays/filterAsync.js","../../source/arrays/first.js","../../source/arrays/flatten.js","../../source/arrays/initial.js","../../source/arrays/intersect.js","../../source/objects/keys.js","../../source/utilities/toPath.js","../../source/utilities/get.js","../../source/objects/hasKeys.js","../../source/types/isPlainObject.js","../../source/types/isConstructor.js","../../source/types/isTypeFactory.js","../../source/types/isBuffer.js","../../source/utilities/isEqual.js","../../source/arrays/isMatch.js","../../source/arrays/largest.js","../../source/arrays/last.js","../../source/arrays/map.js","../../source/arrays/mapAsync.js","../../source/arrays/mapRight.js","../../source/arrays/mapWhile.js","../../source/math/subtract.js","../../source/arrays/sortNumberAscending.js","../../source/arrays/partition.js","../../source/math/subtractReverse.js","../../source/arrays/sortNumberDescening.js","../../source/arrays/remove.js","../../source/arrays/rest.js","../../source/arrays/right.js","../../source/math/randomInt.js","../../source/internal/array.js","../../source/numbers/isNumberEqual.js","../../source/arrays/shuffle.js","../../source/arrays/sample.js","../../source/arrays/smallest.js","../../source/arrays/getNumberInsertIndex.js","../../source/arrays/take.js","../../source/arrays/takeRight.js","../../source/arrays/unique.js","../../source/arrays/union.js","../../source/arrays/untilFalse.js","../../source/arrays/untilTrue.js","../../source/arrays/whileCompactMap.js","../../source/arrays/whileEach.js","../../source/arrays/whileMap.js","../../source/arrays/without.js","../../source/arrays/xor.js","../../source/arrays/zip.js","../../source/buffers/ensure.js","../../source/buffers/clear.js","../../source/collection/countBy.js","../../source/collection/countKey.js","../../source/collection/countWithoutKey.js","../../source/collection/findIndexCache.js","../../source/collection/findIndex.js","../../source/collection/findItem.js","../../source/collection/sortCollectionDescending.js","../../source/collection/sortCollectionAlphabetically.js","../../source/collection/sortCollectionAscending.js","../../source/collection/getHighest.js","../../source/collection/getLowest.js","../../source/collection/groupBy.js","../../source/collection/indexBy.js","../../source/collection/invoke.js","../../source/collection/invokeAsync.js","../../source/types/isNumber.js","../../source/types/isString.js","../../source/objects/pluckObject.js","../../source/collection/pluck.js","../../source/collection/sortCollectionAlphabeticallyReverse.js","../../source/files/getExtension.js","../../source/files/getFilename.js","../../source/internal/regexTestFactory.js","../../source/files/isFileCSS.js","../../source/files/isFileHTML.js","../../source/files/isFileJS.js","../../source/files/isFileJSON.js","../../source/functions/after.js","../../source/functions/ary.js","../../source/functions/before.js","../../source/objects/assign.js","../../source/objects/eachAsync.js","../../source/objects/each.js","../../source/utilities/forEachAsync.js","../../source/types/isSet.js","../../source/utilities/forOf.js","../../source/types/isGenerator.js","../../source/utilities/forOfAsync.js","../../source/types/isFunction.js","../../source/types/isAsync.js","../../source/utilities/generateLoop.js","../../source/utilities/each.js","../../source/functions/chain.js","../../source/functions/curry.js","../../source/functions/curryRight.js","../../source/utilities/stubTrue.js","../../source/utilities/stubFalse.js","../../source/utilities/noop.js","../../source/utilities/times.js","../../source/utilities/timer.js","../../source/internal/apply.js","../../source/functions/debounce.js","../../source/functions/ifInvoke.js","../../source/functions/inAsync.js","../../source/functions/inSync.js","../../source/functions/negate.js","../../source/functions/nthArg.js","../../source/functions/once.js","../../source/objects/mapAsync.js","../../source/objects/map.js","../../source/types/getType.js","../../source/types/cloneType.js","../../source/utilities/forOfMap.js","../../source/utilities/forOfMapAsync.js","../../source/utilities/map.js","../../source/functions/over.js","../../source/objects/everyAsync.js","../../source/objects/every.js","../../source/utilities/forOfEvery.js","../../source/utilities/forOfEveryAsync.js","../../source/utilities/every.js","../../source/functions/overEvery.js","../../source/functions/rearged.js","../../source/functions/throttle.js","../../source/functions/wrap.js","../../source/utilities/cacheNativeMethod.js","../../source/internal/object.js","../../source/internal/isSame.js","../../source/math/add.js","../../source/math/deduct.js","../../source/math/divide.js","../../source/math/increment.js","../../source/math/multiple.js","../../source/math/progress.js","../../source/math/randomFloat.js","../../source/math/remainder.js","../../source/math/subtractAll.js","../../source/math/sumAll.js","../../source/numbers/isNumberInRange.js","../../source/numbers/isNumberNotInRange.js","../../source/numbers/isPositive.js","../../source/numbers/isZero.js","../../source/objects/getEntries.js","../../source/objects/compactKeys.js","../../source/objects/compactMapAsync.js","../../source/objects/compactMap.js","../../source/objects/filter.js","../../source/objects/filterAsync.js","../../source/objects/invert.js","../../source/objects/isMatch.js","../../source/types/isRegex.js","../../source/regexps/escapeRegex.js","../../source/regexps/arrayToRegex.js","../../source/objects/omit.js","../../source/objects/pick.js","../../source/objects/size.js","../../source/objects/zip.js","../../source/strings/camelCase.js","../../source/strings/kebabCase.js","../../source/strings/snakeCase.js","../../source/strings/upperCase.js","../../source/strings/lowerCase.js","../../source/strings/range.js","../../source/strings/replace.js","../../source/strings/truncate.js","../../source/strings/sanitize.js","../../source/strings/tokenize.js","../../source/strings/typography.js","../../source/types/getTypeName.js","../../source/types/isArguments.js","../../source/types/noValue.js","../../source/types/isMap.js","../../source/types/isTypedArray.js","../../source/types/isArrayLike.js","../../source/types/isBigInt.js","../../source/types/isBoolean.js","../../source/types/isArrayBuffer.js","../../source/types/isChild.js","../../source/types/isCloneable.js","../../source/types/isDate.js","../../source/types/isEmpty.js","../../source/types/isFalse.js","../../source/types/isF32.js","../../source/types/isF64.js","../../source/types/isFloat.js","../../source/types/isI16.js","../../source/types/isI32.js","../../source/types/isI8.js","../../source/types/isIterable.js","../../source/types/isPromise.js","../../source/types/isKindAsync.js","../../source/types/isParent.js","../../source/types/isPrimitive.js","../../source/types/isRelated.js","../../source/types/isSafeInt.js","../../source/types/isSameType.js","../../source/types/isTrue.js","../../source/types/isU16.js","../../source/types/isU32.js","../../source/types/isU8.js","../../source/types/isU8C.js","../../source/types/isWeakMap.js","../../source/types/isDeno.js","../../source/types/isNode.js","../../source/types/isTruthy.js","../../source/types/isFalsy.js","../../source/utilities/ifValue.js","../../source/utilities/notEqual.js","../../source/utilities/json.js","../../source/utilities/assert.js","../../source/utilities/bindAll.js","../../source/utilities/clear.js","../../source/utilities/clone.js","../../source/utilities/compact.js","../../source/utilities/forOfCompactMapAsync.js","../../source/utilities/forOfCompactMap.js","../../source/utilities/compactMap.js","../../source/utilities/everyArg.js","../../source/utilities/forOfFilter.js","../../source/utilities/forOfFilterAsync.js","../../source/utilities/filter.js","../../source/utilities/flow.js","../../source/utilities/flowAsync.js","../../source/utilities/forMap.js","../../source/utilities/arraysToObject.js","../../source/utilities/has.js","../../source/utilities/hasDot.js","../../source/utilities/ifNotAssign.js","../../source/utilities/interval.js","../../source/utilities/merge.js","../../source/utilities/model.js","../../source/utilities/pair.js","../../source/utilities/concurrent.js","../../source/utilities/concurrentStatus.js","../../source/utilities/promise.js","../../source/utilities/propertyMatch.js","../../source/utilities/setKey.js","../../source/utilities/setValue.js","../../source/utilities/store.js","../../source/utilities/stubArray.js","../../source/utilities/stubObject.js","../../source/utilities/stubString.js","../../source/utilities/timesAsync.js","../../source/utilities/toggle.js","../../source/utilities/uid.js","../../source/utilities/virtualStorage.js","../../source/filesystem/copyFolder.js","../../source/filesystem/directory.js"],"sourcesContent":["/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invoke\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invoke(collection, property, value) {\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * (async () => {\n * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]);\n * });\n *\n * @example\n * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invokeAsync(collection, property, value) {\n\treturn mapAsyncArray(collection, async (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","import {\n\treaddir, copyFile, mkdir, stat\n} from 'fs/promises';\nimport path from 'path';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nasync function copyToPath(sourceFolder, destinationFolder, file) {\n\tconst sourcePath = path.join(sourceFolder, file);\n\tconst destinationPath = path.join(destinationFolder, file);\n\tawait copyFile(sourcePath, destinationPath);\n}\nexport async function copyFolder(sourceFolder, destinationFolder) {\n\tconst files = await readdir(sourceFolder);\n\tawait eachAsyncArray(files, async (file) => {\n\t\tconst sourcePath = path.join(sourceFolder, file);\n\t\tconst filestats = await stat(sourcePath);\n\t\tif (filestats.isDirectory()) {\n\t\t\tconst folderDestination = path.join(destinationFolder, file.replace(sourceFolder, ''));\n\t\t\tawait mkdir(folderDestination, {\n\t\t\t\trecursive: true\n\t\t\t});\n\t\t\tawait copyFolder(sourcePath, folderDestination);\n\t\t} else {\n\t\t\tawait copyToPath(sourceFolder, destinationFolder, file);\n\t\t}\n\t});\n\treturn true;\n}\n\n","import path from 'path';\nimport { fileURLToPath } from 'url';\nexport function currentFile(importMeta) {\n\tif (globalThis.__filename) {\n\t\treturn __filename;\n\t}\n\treturn fileURLToPath(importMeta.url);\n}\nexport function currentPath(importMeta) {\n\tif (globalThis.__dirname) {\n\t\treturn __dirname;\n\t}\n\treturn path.dirname(fileURLToPath(importMeta.url));\n}\n"],"names":["sign","random","normalizeCase","space","returnFlow"],"mappings":"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C;AACxB;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE;AAC/B,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;AACnB;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;AACtC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;AACvB;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,MAAM,EAAE;AAClC,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;AACnB;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;AACxC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;AACvB;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE;AACnD,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;AAClB,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE;AAC1B,EAAE,OAAO,CAAC,CAAC;AACX,EAAE;AACF,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,IAAI,GAAG,CAAC;AACtC;;ACtBA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;AAC1C,CAAC,OAAO,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACrC;;AClBA;AACA;AACA;AACA;AACA;AACA;AAC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,WAAW,GAAG,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACrB,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG,SAAS,CAAC,MAAM;;AChGtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,CAAC;AAC5B,CAAC,WAAW,CAAC,aAAa,GAAG,EAAE,EAAE;AACjC,EAAE,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;AAC7B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,OAAO,CAAC,GAAG,EAAE;AACd,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AACrB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,KAAK,GAAG;AACT,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAClB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,CAAC,GAAG,EAAE;AACjB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACzB,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,aAAa,EAAE;AAC9C,CAAC,OAAO,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;AAC1C;;AC/FA,eAAe,UAAU,CAAC,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE;AACjE,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AAC7C,CAAC;AACM,eAAe,UAAU,CAAC,YAAY,EAAE,iBAAiB,EAAE;AAClE,CAAC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;AAC3C,CAAC,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK;AAC7C,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACnD,EAAE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3C,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE;AAC/B,GAAG,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1F,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE;AAClC,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,CAAC,CAAC;AACN,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;AACnD,GAAG,MAAM;AACT,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAC3D,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,IAAI,CAAC;AACb;;ACxBO,SAAS,WAAW,CAAC,UAAU,EAAE;AACxC,CAAC,IAAI,UAAU,CAAC,UAAU,EAAE;AAC5B,EAAE,OAAO,UAAU,CAAC;AACpB,EAAE;AACF,CAAC,OAAO,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC;AACM,SAAS,WAAW,CAAC,UAAU,EAAE;AACxC,CAAC,IAAI,UAAU,CAAC,SAAS,EAAE;AAC3B,EAAE,OAAO,SAAS,CAAC;AACnB,EAAE;AACF,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD;;;;"} \ No newline at end of file +{"version":3,"file":"bundle.js","sources":["../../source/arrays/chunk.js","../../source/arrays/clear.js","../../source/arrays/clone.js","../../source/types/isUndefined.js","../../source/utilities/hasLength.js","../../source/types/isNull.js","../../source/types/hasValue.js","../../source/utilities/returnValue.js","../../source/arrays/each.js","../../source/arrays/compactMap.js","../../source/arrays/eachAsync.js","../../source/arrays/compactMapAsync.js","../../source/numbers/isNegative.js","../../source/arrays/range.js","../../source/utilities/forEach.js","../../source/types/isArray.js","../../source/arrays/ensure.js","../../source/arrays/flattenDeep.js","../../source/classes/construct.js","../../source/arrays/difference.js","../../source/arrays/drop.js","../../source/arrays/dropRight.js","../../source/arrays/eachRight.js","../../source/arrays/eachRightAsync.js","../../source/arrays/every.js","../../source/arrays/everyAsync.js","../../source/arrays/filter.js","../../source/arrays/filterAsync.js","../../source/arrays/first.js","../../source/arrays/flatten.js","../../source/arrays/initial.js","../../source/arrays/intersect.js","../../source/arrays/invoke.js","../../source/objects/keys.js","../../source/utilities/toPath.js","../../source/utilities/get.js","../../source/objects/hasKeys.js","../../source/types/isPlainObject.js","../../source/types/isConstructor.js","../../source/types/isTypeFactory.js","../../source/types/isBuffer.js","../../source/utilities/isEqual.js","../../source/arrays/isMatch.js","../../source/arrays/largest.js","../../source/arrays/last.js","../../source/arrays/map.js","../../source/arrays/mapAsync.js","../../source/arrays/mapRight.js","../../source/arrays/mapWhile.js","../../source/math/subtract.js","../../source/arrays/sortNumberAscending.js","../../source/arrays/partition.js","../../source/math/subtractReverse.js","../../source/arrays/sortNumberDescening.js","../../source/arrays/remove.js","../../source/arrays/rest.js","../../source/arrays/right.js","../../source/math/randomInt.js","../../source/internal/array.js","../../source/numbers/isNumberEqual.js","../../source/arrays/shuffle.js","../../source/arrays/sample.js","../../source/arrays/smallest.js","../../source/arrays/getNumberInsertIndex.js","../../source/arrays/take.js","../../source/arrays/takeRight.js","../../source/arrays/unique.js","../../source/arrays/union.js","../../source/arrays/untilFalse.js","../../source/arrays/untilTrue.js","../../source/arrays/whileCompactMap.js","../../source/arrays/whileEach.js","../../source/arrays/whileMap.js","../../source/arrays/without.js","../../source/arrays/xor.js","../../source/arrays/zip.js","../../source/buffers/ensure.js","../../source/buffers/clear.js","../../source/collection/countBy.js","../../source/collection/countKey.js","../../source/collection/countWithoutKey.js","../../source/collection/findIndexCache.js","../../source/collection/findIndex.js","../../source/collection/findItem.js","../../source/collection/sortCollectionDescending.js","../../source/collection/sortCollectionAlphabetically.js","../../source/collection/sortCollectionAscending.js","../../source/collection/getHighest.js","../../source/collection/getLowest.js","../../source/collection/groupBy.js","../../source/collection/indexBy.js","../../source/collection/invoke.js","../../source/collection/invokeAsync.js","../../source/types/isNumber.js","../../source/types/isString.js","../../source/objects/pluckObject.js","../../source/collection/pluck.js","../../source/collection/sortCollectionAlphabeticallyReverse.js","../../source/files/getExtension.js","../../source/files/getFilename.js","../../source/internal/regexTestFactory.js","../../source/files/isFileCSS.js","../../source/files/isFileHTML.js","../../source/files/isFileJS.js","../../source/files/isFileJSON.js","../../source/functions/after.js","../../source/functions/ary.js","../../source/functions/before.js","../../source/objects/assign.js","../../source/objects/eachAsync.js","../../source/objects/each.js","../../source/utilities/forEachAsync.js","../../source/types/isSet.js","../../source/utilities/forOf.js","../../source/types/isGenerator.js","../../source/utilities/forOfAsync.js","../../source/types/isFunction.js","../../source/types/isAsync.js","../../source/utilities/generateLoop.js","../../source/utilities/each.js","../../source/functions/chain.js","../../source/functions/curry.js","../../source/functions/curryRight.js","../../source/utilities/stubTrue.js","../../source/utilities/stubFalse.js","../../source/utilities/noop.js","../../source/utilities/times.js","../../source/utilities/timer.js","../../source/internal/apply.js","../../source/functions/debounce.js","../../source/functions/ifInvoke.js","../../source/functions/inAsync.js","../../source/functions/inSync.js","../../source/functions/negate.js","../../source/functions/nthArg.js","../../source/functions/once.js","../../source/objects/mapAsync.js","../../source/objects/map.js","../../source/types/getType.js","../../source/types/cloneType.js","../../source/utilities/forOfMap.js","../../source/utilities/forOfMapAsync.js","../../source/utilities/map.js","../../source/functions/over.js","../../source/objects/everyAsync.js","../../source/objects/every.js","../../source/utilities/forOfEvery.js","../../source/utilities/forOfEveryAsync.js","../../source/utilities/every.js","../../source/functions/overEvery.js","../../source/functions/rearged.js","../../source/functions/throttle.js","../../source/functions/wrap.js","../../source/utilities/cacheNativeMethod.js","../../source/internal/object.js","../../source/internal/isSame.js","../../source/math/add.js","../../source/math/deduct.js","../../source/math/divide.js","../../source/math/increment.js","../../source/math/multiple.js","../../source/math/progress.js","../../source/math/randomFloat.js","../../source/math/remainder.js","../../source/math/subtractAll.js","../../source/math/sumAll.js","../../source/numbers/isNumberInRange.js","../../source/numbers/isNumberNotInRange.js","../../source/numbers/isPositive.js","../../source/numbers/isZero.js","../../source/objects/getEntries.js","../../source/objects/compactKeys.js","../../source/objects/compactMapAsync.js","../../source/objects/compactMap.js","../../source/objects/filter.js","../../source/objects/filterAsync.js","../../source/objects/invert.js","../../source/objects/isMatch.js","../../source/types/isRegex.js","../../source/regexps/escapeRegex.js","../../source/regexps/arrayToRegex.js","../../source/objects/omit.js","../../source/objects/pick.js","../../source/objects/size.js","../../source/objects/zip.js","../../source/strings/camelCase.js","../../source/strings/kebabCase.js","../../source/strings/snakeCase.js","../../source/strings/upperCase.js","../../source/strings/lowerCase.js","../../source/strings/range.js","../../source/strings/replace.js","../../source/strings/truncate.js","../../source/strings/sanitize.js","../../source/strings/tokenize.js","../../source/strings/typography.js","../../source/types/getTypeName.js","../../source/types/isArguments.js","../../source/types/noValue.js","../../source/types/isMap.js","../../source/types/isTypedArray.js","../../source/types/isArrayLike.js","../../source/types/isBigInt.js","../../source/types/isBoolean.js","../../source/types/isArrayBuffer.js","../../source/types/isChild.js","../../source/types/isCloneable.js","../../source/types/isDate.js","../../source/types/isEmpty.js","../../source/types/isFalse.js","../../source/types/isF32.js","../../source/types/isF64.js","../../source/types/isFloat.js","../../source/types/isI16.js","../../source/types/isI32.js","../../source/types/isI8.js","../../source/types/isIterable.js","../../source/types/isPromise.js","../../source/types/isKindAsync.js","../../source/types/isParent.js","../../source/types/isPrimitive.js","../../source/types/isRelated.js","../../source/types/isSafeInt.js","../../source/types/isSameType.js","../../source/types/isTrue.js","../../source/types/isU16.js","../../source/types/isU32.js","../../source/types/isU8.js","../../source/types/isU8C.js","../../source/types/isWeakMap.js","../../source/types/isDeno.js","../../source/types/isNode.js","../../source/types/isTruthy.js","../../source/types/isFalsy.js","../../source/utilities/ifValue.js","../../source/utilities/notEqual.js","../../source/utilities/json.js","../../source/utilities/assert.js","../../source/utilities/bindAll.js","../../source/utilities/clear.js","../../source/utilities/clone.js","../../source/utilities/compact.js","../../source/utilities/forOfCompactMapAsync.js","../../source/utilities/forOfCompactMap.js","../../source/utilities/compactMap.js","../../source/utilities/everyArg.js","../../source/utilities/forOfFilter.js","../../source/utilities/forOfFilterAsync.js","../../source/utilities/filter.js","../../source/utilities/flow.js","../../source/utilities/flowAsync.js","../../source/utilities/forMap.js","../../source/utilities/arraysToObject.js","../../source/utilities/has.js","../../source/utilities/hasDot.js","../../source/utilities/ifNotAssign.js","../../source/utilities/interval.js","../../source/utilities/merge.js","../../source/utilities/model.js","../../source/utilities/pair.js","../../source/utilities/concurrent.js","../../source/utilities/concurrentStatus.js","../../source/utilities/promise.js","../../source/utilities/propertyMatch.js","../../source/utilities/setKey.js","../../source/utilities/setValue.js","../../source/utilities/store.js","../../source/utilities/stubArray.js","../../source/utilities/stubObject.js","../../source/utilities/stubString.js","../../source/utilities/timesAsync.js","../../source/utilities/toggle.js","../../source/utilities/uid.js","../../source/utilities/virtualStorage.js","../../source/filesystem/copyFolder.js","../../source/filesystem/directory.js"],"sourcesContent":["/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Invoke each function in the given array.\n *\n * @function invokeArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { invokeArray, assert } from '@universalweb/acid';\n * function test(arg){\n * \treturn [this, arg];\n * }\n * const results = invokeArray([test], 1, test);\n * assert(results, [test, 1]);\n */\nexport function invokeArray(source, arg, thisCall) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index].call(thisCall, arg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index](arg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollection\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * import { invokeCollection, assert } from '@universalweb/acid';\n * const results = invokeCollection([{\n *\ttest(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollection(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapArray(collection, (item, index) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollectionAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * import { invokeCollectionAsync, assert } from '@universalweb/acid';\n * const results = await invokeCollectionAsync([{\n *\tasync test(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollectionAsync(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapAsyncArray(collection, (item) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapAsyncArray(collection, async (item) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","import {\n\treaddir, copyFile, mkdir, stat\n} from 'fs/promises';\nimport path from 'path';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nasync function copyToPath(sourceFolder, destinationFolder, file) {\n\tconst sourcePath = path.join(sourceFolder, file);\n\tconst destinationPath = path.join(destinationFolder, file);\n\tawait copyFile(sourcePath, destinationPath);\n}\nexport async function copyFolder(sourceFolder, destinationFolder) {\n\tconst files = await readdir(sourceFolder);\n\tawait eachAsyncArray(files, async (file) => {\n\t\tconst sourcePath = path.join(sourceFolder, file);\n\t\tconst filestats = await stat(sourcePath);\n\t\tif (filestats.isDirectory()) {\n\t\t\tconst folderDestination = path.join(destinationFolder, file.replace(sourceFolder, ''));\n\t\t\tawait mkdir(folderDestination, {\n\t\t\t\trecursive: true\n\t\t\t});\n\t\t\tawait copyFolder(sourcePath, folderDestination);\n\t\t} else {\n\t\t\tawait copyToPath(sourceFolder, destinationFolder, file);\n\t\t}\n\t});\n\treturn true;\n}\n\n","import path from 'path';\nimport { fileURLToPath } from 'url';\nexport function currentFile(importMeta) {\n\tif (globalThis.__filename) {\n\t\treturn __filename;\n\t}\n\treturn fileURLToPath(importMeta.url);\n}\nexport function currentPath(importMeta) {\n\tif (globalThis.__dirname) {\n\t\treturn __dirname;\n\t}\n\treturn path.dirname(fileURLToPath(importMeta.url));\n}\n"],"names":["sign","random","normalizeCase","space","returnFlow"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE;AACvC,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;AACpB,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACf,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;AAC9B,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE;AACrB,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB,GAAG,IAAI,GAAG,EAAE;AACZ,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI;AACJ,GAAG;AACH,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,OAAO,CAAC;AAChB;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAC,MAAM,EAAE;AACnC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACnB,CAAC,OAAO,MAAM,CAAC;AACf;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAC,MAAM,EAAE;AACnC,CAAC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AACvB;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,MAAM,EAAE;AACpC,CAAC,OAAO,MAAM,KAAK,SAAS,CAAC;AAC7B;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,MAAM,EAAE;AAClC,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE;AAC/B,CAAC,OAAO,MAAM,KAAK,IAAI,CAAC;AACxB;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,MAAM,EAAE;AACjC,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAChD;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,MAAM,EAAE;AACpC,CAAC,OAAO,MAAM,CAAC;AACf;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE;AACrE,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACzB,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;AACpD,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AACrF,GAAG;AACH,EAAE,MAAM;AACR,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;AACpD,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AACtE,GAAG;AACH,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE;AACvG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACzB,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,KAAK;AACjE,GAAG,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAC7G,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC3B,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE,MAAM;AACR,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,KAAK;AACjE,GAAG,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACxG,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC3B,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF,CAAC,OAAO,OAAO,CAAC;AAChB;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE;AAChF,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACzB,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;AACpD,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAC3F,GAAG;AACH,EAAE,MAAM;AACR,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;AACpD,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAC5E,GAAG;AACH,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,oBAAoB,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE;AAC3E,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;AACpB,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,KAAK,EAAE,WAAW,KAAK;AAClE,EAAE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AACnE,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACxB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,OAAO,CAAC;AAChB;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAEA,MAAI,EAAE,GAAG,IAAI,CAAC;AACf,SAAS,UAAU,CAAC,MAAM,EAAE;AACnC,CAAC,OAAOA,MAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5B;;ACfO,SAAS,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE;AACvD,CAAC,IAAI,QAAQ,GAAG,KAAK,CAAC;AACtB,CAAC,OAAO,QAAQ,GAAG,GAAG,EAAE;AACxB,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7B,EAAE,QAAQ,IAAI,IAAI,CAAC;AACnB,EAAE;AACF,CAAC,OAAO,WAAW,CAAC;AACpB,CAAC;AACM,SAAS,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE;AACzD,CAAC,IAAI,QAAQ,GAAG,KAAK,CAAC;AACtB,CAAC,OAAO,QAAQ,GAAG,GAAG,EAAE;AACxB,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7B,EAAE,QAAQ,IAAI,IAAI,CAAC;AACnB,EAAE;AACF,CAAC,OAAO,WAAW,CAAC;AACpB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,EAAE,WAAW,GAAG,EAAE,EAAE;AAC9D,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AACvB,EAAE,OAAO,WAAW,CAAC;AACrB,EAAE;AACF,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE;AAClB,EAAE,OAAO,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAChD,EAAE,MAAM;AACR,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAClD,EAAE;AACF;;ACzCO,SAAS,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE;AAC1C,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC,OAAO,MAAM,CAAC;AACf;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,OAAO,GAAG,KAAK,CAAC,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAC,MAAM,EAAE;AACnC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,MAAM,EAAE;AACpC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5E;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,MAAM,EAAE;AACpC,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;AAEpC,SAAS,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,EAAE,EAAE,SAAS,EAAE;AACjE,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,aAAa,CAAC,CAAC;AACzE,CAAC,IAAI,SAAS,EAAE;AAChB,EAAE,OAAO,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AACnD,EAAE;AACF,CAAC,OAAO,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACvC;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAC,GAAG,OAAO,EAAE;AACvC,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AACxB,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,KAAK;AACnD,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK;AACjD,GAAG,IAAI,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7C,GAAG,IAAI,CAAC,SAAS,EAAE;AACnB,IAAI,SAAS,GAAG;AAChB,KAAK,KAAK,EAAE,CAAC;AACb,KAAK,WAAW;AAChB,KAAK,KAAK;AACV,KAAK,CAAC;AACN,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACzC,IAAI,MAAM,IAAI,SAAS,CAAC,WAAW,KAAK,WAAW,EAAE;AACrD,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;AACtB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,IAAI,KAAK;AACnC,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE;AAClD,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,WAAW,CAAC;AACpB;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE;AAC7D,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACnC;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK;AACrE,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;AACtC;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACtD,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,CAAC,KAAK,IAAI,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;AACtD,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AAChE,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE;AACvD,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,CAAC,KAAK,IAAI,KAAK,GAAG,WAAW,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;AACxD,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAC5D,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACvD,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE;AAClD,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,KAAK,EAAE;AAChF,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF,CAAC,OAAO,IAAI,CAAC;AACb;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAClE,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE;AAClD,EAAE,IAAI,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,KAAK,EAAE;AACtF,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF,CAAC,OAAO,IAAI,CAAC;AACb;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE;AACtE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,KAAK;AAChE,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;AACrF,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,OAAO,CAAC;AAChB;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE;AACjF,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,KAAK;AACjF,EAAE,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;AAC3F,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,OAAO,CAAC;AAChB;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;AACnC,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACjD;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE;AAC3C,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,IAAI,WAAW,GAAG,MAAM,CAAC;AAC1B,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AACjC,EAAE,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,YAAY,KAAK;AACpE,GAAG,OAAO,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1D,GAAG,EAAE,EAAE,CAAC,CAAC;AACT,EAAE;AACF,CAAC,OAAO,WAAW,CAAC;AACpB;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,KAAK,EAAE;AAC/B,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG,MAAM,EAAE;AAC/C,CAAC,OAAO,eAAe,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK;AACzC,EAAE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,SAAS,KAAK;AACzD,GAAG,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnC,GAAG,CAAC,CAAC;AACL,EAAE,IAAI,YAAY,EAAE;AACpB,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE;AACnD,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACzB,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;AACpD,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,MAAM;AACR,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;AACpD,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,GAAG;AACH,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,SAAS,IAAI,CAAC,MAAM,EAAE;AAC7B,CAAC,IAAI,MAAM,EAAE;AACb,EAAE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5B,EAAE;AACF;;ACjBA,MAAM,WAAW,GAAG,OAAO,CAAC;AAC5B,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE;AAC/B,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC1E;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE;AAC5C,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC;AACnB,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACvF,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,IAAI,KAAK;AACjC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,EAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxB,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,IAAI,CAAC;AACb;;AC9BA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,MAAM,EAAE,GAAG,UAAU,EAAE;AAC/C,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,OAAO,UAAU,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;AACzC,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACjC,EAAE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,GAAG,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC/B,GAAG,MAAM;AACT,GAAG,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;AACpC,GAAG,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACpD,GAAG,IAAI,iBAAiB,EAAE;AAC1B,IAAI,OAAO,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAC/C,IAAI;AACJ,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAC,MAAM,EAAE,GAAG,UAAU,EAAE;AAClD,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AAC1C,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACjC,EAAE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,GAAG,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC/B,GAAG,MAAM;AACT,GAAG,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;AACpC,GAAG,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACpD,GAAG,IAAI,iBAAiB,EAAE;AAC1B,IAAI,OAAO,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAC/C,IAAI;AACJ,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE,CAAC,CAAC,CAAC;AACL;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,aAAa,GAAG,CAAC,KAAK,KAAK;AACxC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtB,EAAE,OAAO,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;AAC5C,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,SAAS,CAAC;AAC/B,EAAE;AACF,CAAC,OAAO,KAAK,CAAC;AACd;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE;AAC9C,CAAC,OAAO,MAAM,EAAE,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC;AAChD,CAAC;AACM,SAAS,oBAAoB,CAAC,MAAM,EAAE;AAC7C,CAAC,OAAO,CAAC,MAAM,KAAK;AACpB,EAAE,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,EAAE,CAAC;AACH,CAAC;AACM,SAAS,eAAe,CAAC,MAAM,EAAE;AACxC,CAAC,OAAO,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC;AAClC,CAAC;AACM,SAAS,wBAAwB,CAAC,MAAM,EAAE;AACjD,CAAC,OAAO,CAAC,MAAM,KAAK;AACpB,EAAE,OAAO,eAAe,CAAC,MAAM,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC;AACrD,EAAE,CAAC;AACH;;AC5BO,SAAS,aAAa,CAAC,MAAM,EAAE;AACtC,CAAC,OAAO,SAAS,aAAa,EAAE,GAAG,YAAY,EAAE;AACjD,EAAE,IAAI,YAAY,EAAE;AACpB,GAAG,OAAO,MAAM,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACpE,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC;AAC/B,EAAE,CAAC;AACH;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,YAAY,GAAG,wBAAwB,CAAC,QAAQ,EAAE;AACnD,MAAC,QAAQ,GAAG,aAAa,CAAC,YAAY;;ACTlD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK;AAC3C,CAAC,IAAI,MAAM,KAAK,MAAM,EAAE;AACxB,EAAE,OAAO,IAAI,CAAC;AACd,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,EAAE,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE;AACrD,EAAE,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;AAC7B,GAAG,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACzC,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE;AAC1C,IAAI,OAAO,UAAU,CAAC,gBAAgB,EAAE,CAAC,GAAG,KAAK;AACjD,KAAK,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AAC9B,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;AACxC,IAAI,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;AAC/C,KAAK,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG;AACH,EAAE;AACF,CAAC,OAAO,KAAK,CAAC;AACd;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE;AACnD,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE;AAC5C,EAAE,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;AAC7C,GAAG,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7C,GAAG,CAAC,CAAC;AACL,EAAE;AACF,CAAC,OAAO,KAAK,CAAC;AACd;;ACvBA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,KAAK,EAAE;AAC/B,CAAC,OAAO,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC;AAChC;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE;AACvC,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AACjG;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE;AAClF,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACzB,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,KAAK;AACjE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAC7G,GAAG,CAAC,CAAC;AACL,EAAE,MAAM;AACR,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,KAAK;AACjE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAC9F,GAAG,CAAC,CAAC;AACL,EAAE;AACF,CAAC,OAAO,OAAO,CAAC;AAChB;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE;AACtD,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;AACpB,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,KAAK,EAAE,WAAW,KAAK;AAClE,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;AAC5D,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,OAAO,CAAC;AAChB;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE;AACxE,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC;AACnB,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,CAAC,KAAK,IAAI,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;AACtD,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AACrF,EAAE,SAAS,EAAE,CAAC;AACd,EAAE;AACF,CAAC,OAAO,OAAO,CAAC;AAChB;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE;AACnE,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,EAAE;AACjD,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7B,EAAE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AACjF,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,GAAG,MAAM;AACT,GAAG;AACH,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACxB,EAAE;AACF,CAAC,OAAO,OAAO,CAAC;AAChB;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE;AAC9C,CAAC,OAAO,OAAO,GAAG,UAAU,CAAC;AAC7B;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,CAAC,UAAU,EAAE;AAChD,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClC;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE;AAC5C,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;AACrB,CAAC,OAAO;AACR,EAAE,eAAe,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;AAC1C,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AAC/B,IAAI,OAAO,IAAI,CAAC;AAChB,IAAI;AACJ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,GAAG,CAAC;AACJ,EAAE,QAAQ;AACV,EAAE,CAAC;AACH;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,UAAU,EAAE,OAAO,EAAE;AACrD,CAAC,OAAO,OAAO,GAAG,UAAU,CAAC;AAC7B;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,CAAC,UAAU,EAAE;AAChD,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACzC;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE;AAC3C,CAAC,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;AAChC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;AACnD,EAAE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5B,EAAE,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAClC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,WAAW,EAAE,CAAC;AACjB,GAAG;AACH,EAAE;AACF,CAAC,OAAO,KAAK,CAAC;AACd,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE;AAC3C,CAAC,IAAI,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACjC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;AACnD,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7B,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AAC7B,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3B,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,WAAW,EAAE,CAAC;AACjB,GAAG;AACH,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI,CAAC,KAAK,EAAE;AAC5B,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACrC;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE;AACtC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AAC3C;;AChBA,MAAM;AACN,CAAC,KAAK;AACN,SAACC,QAAM;AACP,CAAC,GAAG,IAAI,CAAC;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;AACxC,CAAC,OAAO,KAAK,CAACA,QAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5C;;ACnBA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;AACnD,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC1B,EAAE,OAAO,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC9C,EAAE;AACF;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE;AAC9C,CAAC,OAAO,MAAM,KAAK,MAAM,CAAC;AAC1B;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;AACxD,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;AACzB,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,EAAE;AACF,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACf,CAAC,IAAI,KAAK,CAAC;AACX,CAAC,IAAI,KAAK,CAAC;AACX,CAAC,OAAO,KAAK,GAAG,MAAM,EAAE;AACxB,EAAE,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,EAAE,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;AAC9B,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5C,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC9B,EAAE,KAAK,EAAE,CAAC;AACV,EAAE;AACF,CAAC,OAAO,YAAY,CAAC;AACrB;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;AACvC,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,CAAC,IAAI,WAAW,KAAK,MAAM,IAAI,MAAM,GAAG,WAAW,EAAE;AACrD,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,EAAE;AACF,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;AACnB,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,EAAE;AACF,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AACxB,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;AACjB,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACf,CAAC,IAAI,KAAK,CAAC;AACX,CAAC,OAAO,KAAK,GAAG,MAAM,EAAE;AACxB,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACpB,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACtB,GAAG,KAAK,EAAE,CAAC;AACX,GAAG;AACH,EAAE;AACF,CAAC,OAAO,WAAW,CAAC;AACpB;;AC7CA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,KAAK,EAAE;AAChC,CAAC,OAAO,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC;AAChC;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE;AACrD,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC;AACrB,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;AACrC,EAAE,WAAW,GAAG,KAAK,CAAC;AACtB,EAAE,IAAI,MAAM,IAAI,IAAI,EAAE;AACtB,GAAG,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC;AAC3B,GAAG,OAAO,IAAI,CAAC;AACf,GAAG,MAAM;AACT,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,WAAW,CAAC;AACpB;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE;AAC3C,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClC;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE;AAClD,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,EAAE,WAAW,CAAC,CAAC;AAC5D;;ACjBO,SAAS,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AAChD,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AACvC,CAAC;AACM,SAAS,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AAC/C,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE;AACzC,CAAC,IAAI,QAAQ,EAAE;AACf,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACnC,EAAE;AACF,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAClC;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,GAAG,MAAM,EAAE;AACjC,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE;AAClD,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE;AAClD,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,KAAK,EAAE;AAChD,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF,CAAC,OAAO,IAAI,CAAC;AACb;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE;AACjD,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE;AAClD,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;AAC/C,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF,CAAC,OAAO,IAAI,CAAC;AACb;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE;AAC1E,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACf,CAAC,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;AAC/B,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/F,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACxB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB,GAAG;AACH,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC3D,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACf,CAAC,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;AAC/B,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAClE,EAAE,KAAK,EAAE,CAAC;AACV,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE;AACxE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACf,CAAC,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;AAC/B,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAChF,EAAE,KAAK,EAAE,CAAC;AACV,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AACzC,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK;AAChC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,EAAE,CAAC,CAAC;AACJ;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,GAAG,CAAC,GAAG,OAAO,EAAE;AAChC,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;AAClB,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;AACtC,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE;AAC1B,EAAE,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,EAAE;AACF,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,KAAK;AACnD,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK;AACjD,GAAG,IAAI,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrC,GAAG,IAAI,CAAC,SAAS,EAAE;AACnB,IAAI,SAAS,GAAG;AAChB,KAAK,KAAK,EAAE,CAAC;AACb,KAAK,WAAW;AAChB,KAAK,KAAK;AACV,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACjC,IAAI,MAAM,IAAI,SAAS,CAAC,WAAW,KAAK,WAAW,EAAE;AACrD,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;AACtB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AAC3B,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;AACxB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,KAAK,CAAC;AACd;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,GAAG,CAAC,GAAG,MAAM,EAAE;AAC/B,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AACvC,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AAC/B,GAAG,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;AACvB,GAAG,CAAC,CAAC;AACL,EAAE,CAAC,CAAC;AACJ,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,MAAM,EAAE;AAC9B,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AACvC,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK;AAClC,GAAG,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1B,GAAG,CAAC,CAAC;AACL,EAAE,CAAC,CAAC;AACJ;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,MAAM,EAAE;AACrC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrG;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,MAAM,EAAE;AACpC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC,OAAO,MAAM,CAAC;AACf;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE;AAC9C,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC;AACnB,CAAC,IAAI,MAAM,CAAC;AACZ,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;AACjC,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1B,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACvB,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACnB,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,MAAM,CAAC;AACf;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE;AACnD,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACf,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;AACjC,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE;AAC1B,GAAG,KAAK,EAAE,CAAC;AACX,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,KAAK,CAAC;AACd;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE;AAC1D,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACf,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;AACjC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAC3B,GAAG,KAAK,EAAE,CAAC;AACX,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,KAAK,CAAC;AACd;;ACvBO,SAAS,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE;AAChF,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,UAAU,EAAE;AAC3C,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,UAAU,EAAE,EAAE,EAAE,YAAY,GAAG,IAAI,EAAE;AAC/D,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK;AACzD,EAAE,OAAO,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;AACtE,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC;AACzC;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,UAAU,EAAE,EAAE,EAAE,YAAY,GAAG,IAAI,EAAE;AAC9D,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK;AACpD,EAAE,OAAO,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;AACtE,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC;AACzC;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,8BAA8B,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE;AACtF,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC5C,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC,IAAI,WAAW,KAAK,OAAO,IAAI,OAAO,EAAE;AACzC,EAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AAC/C,EAAE;AACF,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,EAAE,OAAO,CAAC,CAAC,CAAC;AACZ,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;AAC1B,EAAE,OAAO,CAAC,CAAC;AACX,EAAE,MAAM,IAAI,WAAW,GAAG,OAAO,EAAE;AACnC,EAAE,OAAO,CAAC,CAAC;AACX,EAAE,MAAM,IAAI,WAAW,GAAG,OAAO,EAAE;AACnC,EAAE,OAAO,CAAC,CAAC,CAAC;AACZ,EAAE;AACF,CAAC,OAAO,CAAC,CAAC;AACV,CAAC;AACM,SAAS,wBAAwB,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,EAAE;AACnF,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK;AAC5C,EAAE,OAAO,8BAA8B,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AAC/E,EAAE,CAAC,CAAC;AACJ;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE;AACjF,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC5C,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC,IAAI,WAAW,KAAK,OAAO,IAAI,OAAO,EAAE;AACzC,EAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AAC/C,EAAE;AACF,CAAC,OAAO,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AACM,SAAS,4BAA4B,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,EAAE;AACvF,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK;AAC5C,EAAE,OAAO,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AAC1E,EAAE,CAAC,CAAC;AACJ;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,6BAA6B,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE;AACrF,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC5C,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC,IAAI,WAAW,KAAK,OAAO,IAAI,OAAO,EAAE;AACzC,EAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AAC/C,EAAE;AACF,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,EAAE,OAAO,CAAC,CAAC;AACX,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;AAC1B,EAAE,OAAO,CAAC,CAAC,CAAC;AACZ,EAAE,MAAM,IAAI,WAAW,GAAG,OAAO,EAAE;AACnC,EAAE,OAAO,CAAC,CAAC,CAAC;AACZ,EAAE,MAAM,IAAI,WAAW,GAAG,OAAO,EAAE;AACnC,EAAE,OAAO,CAAC,CAAC;AACX,EAAE;AACF,CAAC,OAAO,CAAC,CAAC;AACV,CAAC;AACM,SAAS,uBAAuB,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,EAAE;AAClF,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK;AAC5C,EAAE,OAAO,6BAA6B,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AAC9E,EAAE,CAAC,CAAC;AACJ;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE;AAC5D,CAAC,OAAO,uBAAuB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE;AACpD,CAAC,OAAO,wBAAwB,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE;AAC9C,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AACzB,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;AACjC,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjC,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;AAC9B,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAC9B,GAAG;AACH,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,YAAY,CAAC;AACrB;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE;AACzD,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AACzB,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;AACjC,EAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC;AAC1C,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,YAAY,CAAC;AACrB;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;AACxE,CAAC,IAAI,QAAQ,EAAE;AACf,EAAE,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;AAC/C,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC/C,GAAG,CAAC,CAAC;AACL,EAAE;AACF,CAAC,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;AAC9C,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/B,EAAE,CAAC,CAAC;AACJ;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC7E,CAAC,IAAI,QAAQ,EAAE;AACf,EAAE,OAAO,aAAa,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;AAC7C,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC/C,GAAG,CAAC,CAAC;AACL,EAAE;AACF,CAAC,OAAO,aAAa,CAAC,UAAU,EAAE,OAAO,IAAI,KAAK;AAClD,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/B,EAAE,CAAC,CAAC;AACJ;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,YAAY,GAAG,wBAAwB,CAAC,QAAQ,EAAE;AACnD,MAAC,QAAQ,GAAG,aAAa,CAAC,YAAY,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,MAAM,EAAE;AACpC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1B;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,QAAQ,GAAG,oBAAoB,CAAC,MAAM,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,MAAM,EAAE;AACpC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1B;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE;AAC7C,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC/B,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,EAAE;AACF,CAAC,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK;AACpC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,EAAE,CAAC,CAAC;AACJ;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE;AAC3C,CAAC,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;AACvC,EAAE,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACpC,EAAE,CAAC,CAAC;AACJ;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gCAAgC,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE;AACxF,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC5C,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC,IAAI,WAAW,KAAK,OAAO,IAAI,OAAO,EAAE;AACzC,EAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AAC/C,EAAE;AACF,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAC3C,CAAC;AACM,SAAS,mCAAmC,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,EAAE;AAC9F,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK;AAC5C,EAAE,OAAO,gCAAgC,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AACjF,EAAE,CAAC,CAAC;AACJ;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,MAAM,EAAE;AACzC,CAAC,IAAI,MAAM,EAAE;AACb,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,EAAE;AACF;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,MAAM,EAAE;AACpC,CAAC,IAAI,MAAM,EAAE;AACb,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,EAAE;AACF;;ACfO,SAAS,gBAAgB,CAAC,SAAS,EAAE;AAC5C,CAAC,OAAO,CAAC,IAAI,KAAK;AAClB,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACzD,EAAE,CAAC;AACH;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,SAAS,GAAG,gBAAgB,CAAC,QAAQ;;ACZlD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,UAAU,GAAG,gBAAgB,CAAC,SAAS;;ACZpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,QAAQ,GAAG,gBAAgB,CAAC,OAAO;;ACZhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,UAAU,GAAG,gBAAgB,CAAC,SAAS;;ACbpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE;AACxC,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC;AACpB,CAAC,IAAI,KAAK,CAAC;AACX,CAAC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,KAAK;AAChC,EAAE,IAAI,KAAK,KAAK,IAAI,EAAE;AACtB,GAAG,KAAK,EAAE,CAAC;AACX,GAAG;AACH,EAAE,IAAI,KAAK,IAAI,CAAC,EAAE;AAClB,GAAG,KAAK,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7B,GAAG,KAAK,GAAG,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,OAAO,KAAK,CAAC;AACf,EAAE,CAAC;AACH,CAAC,OAAO,SAAS,CAAC;AAClB;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE;AACtC,CAAC,OAAO,CAAC,GAAG,IAAI,KAAK;AACrB,EAAE,OAAO,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,EAAE,CAAC;AACH;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE;AACzC,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC;AACpB,CAAC,IAAI,KAAK,CAAC;AACX,CAAC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,KAAK;AACjC,EAAE,IAAI,KAAK,KAAK,IAAI,EAAE;AACtB,GAAG,KAAK,EAAE,CAAC;AACX,GAAG;AACH,EAAE,IAAI,KAAK,IAAI,CAAC,EAAE;AAClB,GAAG,KAAK,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7B,GAAG,MAAM;AACT,GAAG,KAAK,GAAG,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,OAAO,KAAK,CAAC;AACf,EAAE,CAAC;AACH,CAAC,OAAO,UAAU,CAAC;AACnB;;AC7BY,MAAC,YAAY,GAAG,MAAM,CAAC,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE;AAC3C,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvB,EAAE,OAAO,YAAY,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;AAC1C,EAAE;AACF;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,eAAe,GAAG,OAAO,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,KAAK;AACpF,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACzB,EAAE,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,KAAK;AACzE,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AACtG,GAAG,CAAC,CAAC;AACL,EAAE,MAAM;AACR,EAAE,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,KAAK;AACzE,GAAG,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AACvF,GAAG,CAAC,CAAC;AACL,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE;AACtE,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACzB,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,KAAK;AACxE,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;AACpG,GAAG,CAAC,CAAC;AACL,EAAE,MAAM;AACR,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,KAAK;AACxE,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;AACrF,GAAG,CAAC,CAAC;AACL,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;ACpCO,eAAe,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE;AACrD,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC;AACnB,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AACvB,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;AACtB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;AAC/B,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;AAC9B,EAAE,UAAU,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;AAClC,EAAE,YAAY,EAAE,CAAC;AACjB,EAAE,CAAC,CAAC;AACJ,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,EAAE,KAAK,EAAE,EAAE;AACpD,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,SAAS,GAAG,wBAAwB,CAAC,KAAK,EAAE;AAC7C,MAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;ACfrC,SAAS,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE;AACxC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACpB,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC9B,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3B,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF,CAAC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;AACpC,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC/B,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,eAAe,GAAG,wBAAwB,CAAC,mBAAmB,EAAE;AACjE,MAAC,WAAW,GAAG,aAAa,CAAC,eAAe;;ACdjD,eAAe,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE;AAClE,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACpB,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC9B,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AAC1B,EAAE,WAAW,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE;AACrD,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChC,GAAG;AACH,EAAE;AACF,CAAC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;AACpC,EAAE,MAAM,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACrC,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,UAAU,GAAG,CAAC,MAAM,KAAK;AACtC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,YAAY,QAAQ,GAAG,KAAK,CAAC;AAChE;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,WAAW,GAAG,wBAAwB,CAAC,eAAe,EAAE;AACzD,MAAC,OAAO,GAAG,aAAa,CAAC,WAAW;;ACTzC,SAAS,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAE;AAChH,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,KAAK;AAC/D,EAAE,IAAI,QAAQ,CAAC;AACf,EAAE,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;AACtC,GAAG,OAAO;AACV,GAAG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AAC9B,GAAG,QAAQ,GAAG,CAAC,eAAe,IAAI,cAAc,GAAG,SAAS,CAAC;AAC7D,GAAG,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1D,GAAG,QAAQ,GAAG,CAAC,eAAe,IAAI,eAAe,GAAG,UAAU,CAAC;AAC/D,GAAG,MAAM,IAAI,SAAS,EAAE;AACxB,GAAG,QAAQ,GAAG,CAAC,eAAe,IAAI,cAAc,GAAG,SAAS,CAAC;AAC7D,GAAG,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AAClC,GAAG,QAAQ,GAAG,cAAc,CAAC;AAC7B,GAAG,MAAM;AACT,GAAG,QAAQ,GAAG,CAAC,eAAe,IAAI,eAAe,GAAG,UAAU,CAAC;AAC/D,GAAG;AACH,EAAE,OAAO,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACrE,EAAE,CAAC;AACH;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,IAAI,GAAG,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU;;ACvBnG,MAAM,KAAK,CAAC;AACnB,CAAC,WAAW,CAAC,OAAO,EAAE;AACtB,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC/B,EAAE;AACF,CAAC,cAAc,CAAC,OAAO,EAAE;AACzB,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC;AACzB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK;AACxC,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,EAAE;AAC7C,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;AAClE,IAAI,OAAO,SAAS,CAAC;AACrB,IAAI,CAAC;AACL,GAAG,CAAC,CAAC;AACL,EAAE;AACF,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF,CAAC,IAAI,GAAG;AACR,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACpB,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF,CAAC,KAAK,GAAG,IAAI,CAAC;AACd,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,MAAM,EAAE;AAC9B,CAAC,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE;AACzD,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;AACpB,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,SAAS,KAAK;AACnC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AAC7B,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;AAChC,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,CAAC;AACvC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AACvB,GAAG,OAAO,MAAM,CAAC;AACjB,GAAG;AACH,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE,CAAC;AACH,CAAC,OAAO,OAAO,CAAC;AAChB;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE;AAC9D,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;AACpB,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,SAAS,KAAK;AACnC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;AAChC,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;AAChC,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,CAAC;AACvC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AACvB,GAAG,OAAO,MAAM,CAAC;AACjB,GAAG;AACH,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE,CAAC;AACH,CAAC,OAAO,OAAO,CAAC;AAChB;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,KAAK,GAAG,KAAK;AACd,MAAC,QAAQ,GAAG,MAAM;AAC9B,CAAC,OAAO,KAAK,CAAC;AACd;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,KAAK,GAAG,MAAM;AACf,MAAC,SAAS,GAAG,MAAM;AAC/B,CAAC,OAAO,KAAK,CAAC;AACd;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,IAAI,GAAG,MAAM;AAC1B,CAAC,OAAO;AACR;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE;AACxC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AAC9C,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClB,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;AACzD,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AAC9C,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpC,EAAE;AACF,CAAC,OAAO,OAAO,CAAC;AAChB;;AC3CO,MAAM,MAAM,CAAC;AACpB,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC,SAAS,GAAG;AACb,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,MAAM,CAAC,EAAE,EAAE;AACZ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;AACnB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACvB,EAAE;AACF,CAAC,GAAG,CAAC,EAAE,EAAE;AACT,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3B,EAAE;AACF,CAAC,GAAG,CAAC,EAAE,EAAE;AACT,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE;AACrB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;AAC3B,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM;AAC9B,GAAG,QAAQ,EAAE,CAAC;AACd,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC1B,GAAG,EAAE,IAAI,CAAC,CAAC;AACX,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC3B,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,KAAK,GAAG;AACT,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;AAC3B,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;AACnC,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC1B,GAAG,CAAC,CAAC;AACL,EAAE;AACF,CAAC;AACW,MAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE;AACtC,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,GAAG;AAC9B,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAChC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK;AACtB,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,EAAE,CAAC,CAAC;AACJ;;ACzGA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;AAGlC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE;AAC3D,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;AACzB,EAAE,OAAO,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;AAC1D,EAAE;AACF;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE;AACzC,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE;AAC7B,EAAE,IAAI,SAAS,CAAC,EAAE,KAAK,KAAK,EAAE;AAC9B,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM;AAC7B,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/B,GAAG,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;AACxB,GAAG,EAAE,IAAI,CAAC,CAAC;AACX,EAAE;AACF,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;AACtB,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/C,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM;AACzB,EAAE,IAAI,SAAS,CAAC,EAAE,KAAK,KAAK,EAAE;AAC9B,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC/B,GAAG,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;AACxB,GAAG;AACH,EAAE,CAAC;AACH,CAAC,OAAO,SAAS,CAAC;AAClB;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE;AAC5C,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC3B,EAAE,OAAO,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3B,EAAE;AACF;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE;AACrD,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;AACnD,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,EAAE,MAAM,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAC1D,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG,CAAC,UAAU,EAAE,KAAK,KAAK;AAC7C,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK;AACnC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACd,EAAE,CAAC,CAAC;AACJ;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,QAAQ,EAAE;AACjC,CAAC,OAAO,CAAC,GAAG,IAAI,KAAK;AACrB,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AAC5B,EAAE,CAAC;AACH;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;AAClC,CAAC,OAAO,CAAC,GAAG,IAAI,KAAK;AACrB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,EAAE,CAAC;AACH;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,IAAI,GAAG,CAAC,QAAQ,KAAK;AAClC,CAAC,IAAI,KAAK,CAAC;AACX,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,KAAK;AAC/B,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACxB,GAAG,KAAK,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7B,GAAG;AACH,EAAE,OAAO,KAAK,CAAC;AACf,EAAE,CAAC;AACH,CAAC,OAAO,QAAQ,CAAC;AACjB;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;AACrE,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,KAAK;AAC3F,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;AAC3F,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,OAAO,CAAC;AAChB;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE;AACnF,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACzB,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,KAAK;AACzE,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAClH,GAAG,CAAC,CAAC;AACL,EAAE,MAAM;AACR,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,KAAK;AACzE,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AACnG,GAAG,CAAC,CAAC;AACL,EAAE;AACF,CAAC,OAAO,OAAO,CAAC;AAChB;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,MAAM,EAAE;AAChC,CAAC,OAAO,MAAM,EAAE,WAAW,CAAC;AAC5B;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE;AAC7C,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC9B,EAAE,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;AACtC,GAAG,OAAO,WAAW,EAAE,CAAC;AACxB,GAAG;AACH,EAAE;AACF,CAAC,OAAO,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACpC;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE,aAAa,EAAE;AACxE,CAAC,MAAM,OAAO,GAAG,aAAa,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACvC,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;AACjD,EAAE,MAAM,eAAe,GAAG,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjE,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC9B,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACnD,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAC3B,GAAG;AACH,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;AACpC,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACvD,EAAE,IAAI,SAAS,EAAE;AACjB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC5B,GAAG,MAAM;AACT,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AACzB,GAAG;AACH,EAAE;AACF,CAAC,OAAO,OAAO,CAAC;AAChB;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE;AAClG,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AAC1B,EAAE,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC9B,EAAE,WAAW,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE;AACrD,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;AACzE,GAAG;AACH,EAAE,OAAO,gBAAgB,CAAC;AAC1B,EAAE;AACF,CAAC,MAAM,OAAO,GAAG,aAAa,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACvC,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;AACjD,EAAE,MAAM,eAAe,GAAG,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjE,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC9B,GAAG,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACzD,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAC3B,GAAG;AACH,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC,WAAW,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;AAC1C,EAAE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7D,EAAE,IAAI,SAAS,EAAE;AACjB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC5B,GAAG,MAAM;AACT,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AACzB,GAAG;AACH,EAAE;AACF,CAAC,OAAO,OAAO,CAAC;AAChB;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa;;ACzB3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI,CAAC,SAAS,EAAE;AAChC,CAAC,OAAO,CAAC,GAAG,IAAI,KAAK;AACrB,EAAE,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,KAAK;AAClC,GAAG,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,GAAG,CAAC,CAAC;AACL,EAAE,CAAC;AACH;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE;AACzD,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,OAAO,eAAe,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,KAAK;AAC7E,EAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AACrE,EAAE,CAAC,CAAC;AACJ;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE;AAC9C,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,OAAO;AACT,EAAE;AACF,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,OAAO,UAAU,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,KAAK;AACxE,EAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AACrE,EAAE,CAAC,CAAC;AACJ;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE;AAC3D,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACvC,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC9B,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1C,GAAG,IAAI,MAAM,KAAK,KAAK,EAAE;AACzB,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG;AACH,EAAE,MAAM;AACR,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;AACrC,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC/C,GAAG,IAAI,MAAM,KAAK,KAAK,EAAE;AACzB,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG;AACH,EAAE;AACF,CAAC,OAAO,IAAI,CAAC;AACb;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,eAAe,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,EAAE,aAAa,EAAE;AACrF,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AAC1B,EAAE,WAAW,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE;AACrD,GAAG,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/C,GAAG,IAAI,MAAM,KAAK,KAAK,EAAE;AACzB,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG;AACH,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC9C,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC9B,GAAG,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAChD,GAAG,IAAI,MAAM,KAAK,KAAK,EAAE;AACzB,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG;AACH,EAAE,MAAM;AACR,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;AACrC,GAAG,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACrD,GAAG,IAAI,MAAM,KAAK,KAAK,EAAE;AACzB,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG;AACH,EAAE;AACF,CAAC,OAAO,IAAI,CAAC;AACb;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,KAAK,GAAG,YAAY,CAAC,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe;;ACtBzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,UAAU,EAAE;AACtC,CAAC,OAAO,CAAC,GAAG,KAAK;AACjB,EAAE,OAAO,KAAK,CAAC,UAAU,EAAE,CAAC,SAAS,KAAK;AAC1C,GAAG,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACzB,GAAG,CAAC,CAAC;AACL,EAAE,CAAC;AACH;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE;AACzC,CAAC,OAAO,CAAC,GAAG,IAAI,KAAK;AACrB,EAAE,OAAO,QAAQ,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAC3C,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,GAAG,CAAC,CAAC,CAAC;AACN,EAAE,CAAC;AACH;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE;AACzC,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE;AAC7B,EAAE,IAAI,SAAS,CAAC,EAAE,EAAE;AACpB,GAAG,SAAS,CAAC,cAAc,GAAG,KAAK,CAAC;AACpC,GAAG,OAAO;AACV,GAAG;AACH,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AAC9B,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM;AAC7B,GAAG,IAAI,SAAS,CAAC,cAAc,EAAE;AACjC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI;AACJ,GAAG,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;AACxB,GAAG,EAAE,IAAI,CAAC,CAAC;AACX,EAAE;AACF,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;AACtB,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/C,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM;AACzB,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC9B,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;AACvB,EAAE,CAAC;AACH,CAAC,OAAO,SAAS,CAAC;AAClB;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;AACrC,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK;AACpB,EAAE,OAAO,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;AAChC,EAAE,CAAC;AACH;;ACpBA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,MAAM,EAAE;AAC1C,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,YAAY,GAAG,MAAM,CAAC,oBAAoB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,WAAW,GAAG,MAAM,CAAC,yBAAyB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,OAAO,GAAG,MAAM,CAAC,eAAe;AACjC,MAAC,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,cAAc;;AC/C9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG,MAAM,CAAC;;ACd7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE;AACpC,CAAC,OAAO,MAAM,GAAG,MAAM,CAAC;AACxB;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE;AAC/B,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;AACnB;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;AACtC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;AACvB;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,MAAM,EAAE;AAClC,CAAC,OAAO,MAAM,GAAG,CAAC,CAAC;AACnB;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;AACxC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;AACvB;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE;AACnD,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;AAClB,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE;AAC1B,EAAE,OAAO,CAAC,CAAC;AACX,EAAE;AACF,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,IAAI,GAAG,CAAC;AACtC;;ACtBA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;AAC1C,CAAC,OAAO,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACrC;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;AACzC,CAAC,OAAO,MAAM,GAAG,KAAK,CAAC;AACvB;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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"} \ No newline at end of file diff --git a/build/module/index.js b/build/module/index.js index 9ae01263..671a3a50 100644 --- a/build/module/index.js +++ b/build/module/index.js @@ -1,2 +1,2 @@ -import{readdir as n,stat as t,mkdir as r,copyFile as e}from"fs/promises";import o from"path";import{fileURLToPath as u}from"url";function c(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function i(n){return n.length=0,n}function s(n){return n.slice()}function f(n){return void 0===n}function a(n){return Boolean(n.length)}function l(n){return null===n}function h(n){return!f(n)&&!l(n)}function g(n){return n}function p(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const s=t.call(e,n,u,r,c,i,o);h(s)&&r.push(s)})):p(n,((n,u,c,i)=>{const s=t(n,u,r,c,i,e,o);h(s)&&r.push(s)})),r}async function m(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const u=await t(n,e,r,o);h(u)&&r.push(u)})),r}const{sign:y}=Math;function b(n){return-1===y(n)}function v(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function E(n,t,r=1,e=[]){return b(r)?e:n{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function M(n,t=1,r=n.length){return n.splice(t,r)}const T=(n,t=1,r=n.length)=>M(n,0,r-t);function _(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function F(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function R(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function N(n,t,r=[],e){return await m(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function D(n,t){return t?n.slice(0,t):n[0]}function L(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(O(t))),[]);return r}function Z(n){return n.slice(0,n.length-1)}function k(n,...t){return d(n,(n=>{if(R(t,(t=>t.includes(n))))return n}))}const q=Object.keys;function V(n){if(n)return q(n)}const G=/\.|\[/,J=/]/g,W="";function z(n){return n.replace(J,W).split(G)}function H(n,t){if(!t)return!1;let r=t;return R(I(n)?n:z(n),(n=>(r=r[n],h(r)))),r}const K=Object.hasOwn;function Q(n,...t){if(n)return R(t,(t=>{const r=z(t);if(1===r.length)return K(n,t);{const t=r.pop(),e=H(r,n);return!!e&&K(e,t)}}))}function X(n,...t){if(n)return Boolean(t.find((t=>{const r=z(t);if(1===r.length)return K(n,t);{const t=r.pop(),e=H(r,n);return!!e&&K(e,t)}})))}const Y=n=>!!h(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function nn(n,t){return n?.constructor===t||!1}function tn(n){return t=>nn(t,n)}function rn(n){return n?.constructor?.name}function en(n){return t=>rn(t)===n||!1}function on(n){return function(t,...r){return r?n(t)&&R(r,n):n(t)}}const un=en("Buffer"),cn=on(un),sn=(n,t)=>{if(n===t)return!0;if(cn(n))return n.equals(t);if(n.toString()===t.toString())if(Y(n)){const r=V(n);if(Q(t,r))return R(r,(r=>sn(n[r],t[r])))}else if(I(n)&&n.length===t.length)return R(n,((n,r)=>sn(n,t[r])));return!1};function fn(n,t){return n.length===t.length&&R(n,((n,r)=>sn(t[r],n)))}const an=Math.max;function ln(n){return an(...n)}function hn(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function gn(n,t,r=[],e,o){return h(e)?p(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):p(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function pn(n,t){const r=[];return await m(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function dn(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function mn(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function vn(n,t){return t-n}function An(n){return n.sort(vn)}function En(n,t){let r=n.length;for(let e=0;er)return Tn(n);if(1===t)return[n[Bn(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Un(n,t=1){return n.slice(0,t)}function Nn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Dn(n,t,r){return r.indexOf(n)===t}function Ln(n,t,r){return n!==r[t-1]}function Zn(n,t){return t?n.filter(Ln):n.filter(Dn)}function kn(...n){return Zn($(n))}function qn(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function Hn(...n){const t=C(Map),r=[];return 2===n.length?S(n[0],n[1]):(p(n,((n,r)=>{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Kn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Qn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Xn(n){return cn(n)&&n||h(n)&&Buffer.from(n)||Buffer.alloc(0)}function Yn(n){return n.fill(0),n}function nt(n,t){const r={};let e;return p(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function tt(n,t){let r=0;return p(n,(n=>{n[t]&&r++})),r}function rt(n,t){let r=0;return p(n,(n=>{n[t]||r++})),r}function et(n,t,r,e,o){if(n[o]===e)return!0}function ot(n,t,r="id"){const e=n.findIndex(((n,e)=>et(n,0,0,t,r)));return-1!==e&&e}function ut(n,t,r="id"){const e=n.find(((n,e)=>et(n,0,0,t,r)));return-1!==e&&e}function ct(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function it(n,t="id",r){return n.sort(((n,e)=>ct(n,e,t,r)))}function st(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function ft(n,t="id",r){return n.sort(((n,e)=>st(n,e,t,r)))}function at(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function lt(n,t="id",r){return n.sort(((n,e)=>at(n,e,t,r)))}function ht(n,t="id"){return lt(n,t)[0]}function gt(n,t){return it(n,t,!1)[0]}function pt(n,t){const r={};return p(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function dt(n,t="id"){const r={};return p(n,(n=>{r[n[t]]=n})),r}function mt(n,t,r){return gn(n,((n,e)=>n[t](r,e)))}function wt(n,t,r){return pn(n,(async(n,e)=>n[t](r,e)))}const yt=en("Number"),bt=on(yt);function vt(n){return!bt(n)}const At=tn(String);function Et(n){return!At(n)}function jt(n,t){if(n)return At(t)?n[t]:gn(t,(t=>n[t]))}function It(n,t){return gn(n,(n=>jt(n,t)))}function xt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function Ot(n,t="id",r){return n.sort(((n,e)=>xt(n,e,t,r)))}function $t(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function Bt(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function Ct(n){return t=>!!h(t)&&n.test(t)}const St=Ct(/\.css$/),Mt=Ct(/\.html$/),Tt=Ct(/\.js$/),_t=Ct(/\.json$/);function Ft(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function Rt(n,t){return(...r)=>n(...r.splice(0,t))}function Pt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Ut=Object.assign;function Nt(n,...t){if(h(n))return Ut(n,...t)}const Dt=async(n,t,r,e)=>{if(!n)return;const o=V(n);return h(r)?await m(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await m(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Lt(n,t,r,e){if(!n)return;const o=V(n);return h(r)?p(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):p(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function Zt(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!h(n)&&n instanceof Function,Ht=en("AsyncFunction"),Kt=on(Ht);function Qt(n,t,r,e,o,u){return(c,i,s,f,a)=>{let l;const g=Kt(i);if(h(c)&&i)return l=I(c)?g?t:n:Y(c)||zt(c)?g?e:r:o?g?u:o:Jt(c)?u:g?e:r,l(c,i,s,f,a)}}const Xt=Qt(p,m,Lt,Dt,Vt,Wt);class Yt{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Xt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function nr(n){return C(Yt,[n])}function tr(n,t=n.length){const r=[],e=(...o)=>{if(r.push(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}function rr(n,t=n.length){const r=[],e=(...o)=>{if(r.unshift(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}const er=!0,or=()=>er,ur=!1,cr=()=>ur,ir=()=>{};function sr(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,er),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const lr=C(ar);function hr(n,t){return lr.set(n,t)}function gr(){sr(setTimeout(ir,0),(n=>{lr.remove(n)}))}const pr=Reflect.apply;function dr(n,t,r){if(zt(n))return pr(n,t,r)}function mr(n,t){function r(...n){r.id!==ur&&lr.remove(r.id),r.id=hr((()=>{r.callable(...n),r.id=ur}),t)}return r.id=ur,r.callable=n.bind(r),r.clear=()=>{r.id!==ur&&(lr.remove(r.id),r.id=ur)},r}function wr(n,...t){if(zt(n))return n(...t)}async function yr(n,t){const r=n.length;for(let e=0;eXt(n,(n=>{n(t)}));function vr(n){return(...t)=>!n(...t)}function Ar(n=0){return(...t)=>t[n]}const Er=n=>{let t;return(...r)=>(h(t)||(t=n(...r)),t)};async function jr(n,t,r={}){if(n)return await Dt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function Ir(n,t,r={},e,o){if(n)return h(e)?Lt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Lt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function xr(n){return n?.constructor}function Or(n,t=[]){const r=xr(n);return r===Function&&"function"===r.name?function(){}:C(r,t)}function $r(n,t=g,r){const e=r||Or(n);if(I(n)||qt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=zt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Br(n,t=g,r,e){if(Jt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||Or(n);if(I(n)||qt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=zt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const Cr=Qt(gn,pn,Ir,jr,$r,Br);function Sr(n){return(...t)=>Cr(n,(n=>n(...t)))}async function Mr(n,t){if(!n)return;return P(V(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function Tr(n,t){if(!n)return;return R(V(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function _r(n,t=g){if(I(n)||qt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Fr(n,t=g,r){if(Jt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(I(n)||qt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Rr=Qt(R,P,Tr,Mr,_r,Fr);function Pr(n){return t=>Rr(n,(n=>n(t)))}function Ur(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Nr(n,t){function r(...n){r.id?r.shouldThrottle=er:(r.callable(...n),r.id=hr((()=>{r.shouldThrottle&&r.callable(...n),r.id=ur}),t))}return r.id=ur,r.callable=n.bind(r),r.clear=()=>{lr.remove(r.id),r.id=ur},r}function Dr(n,t){return(...r)=>t(n,...r)}const Lr=Function.prototype;function Zr(n){return Lr.call.bind(n)}const kr=Object.getOwnPropertyNames,qr=Object.getOwnPropertyDescriptor,Vr=Object.defineProperty,Gr=Zr(Object.hasOwnProperty),Jr=Object.is;function Wr(n,t){return n+t}function zr(n){return n-1}function Hr(n,t){return n/t}function Kr(n){return n+1}function Qr(n,t){return n*t}function Xr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:Yr}=Math;function ne(n,t=0){return Yr()*(n-t)+t}function te(n,t){return n%t}function re(n){return n.reduce(((n,t)=>n-t),0)}function ee(n){return n.reduce(((n,t)=>n+t),0)}function oe(n,t,r){return n>t&&nr}const{sign:ce}=Math;function ie(n){return 1===ce(n)}function se(n){return 0===n}const fe=Object.entries;function ae(n){if(h(n))return fe(n)}function le(n){const t=[];return Lt(n,((n,r)=>{h(n)&&t.push(r)})),t}async function he(n,t=g,r={}){return await Dt(n,(async(n,e,o,u,c)=>{const i=await t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function ge(n,t=g,r={}){return Lt(n,((n,e,o,u,c)=>{const i=t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function pe(n,t,r={}){return Lt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function de(n,t,r={}){return await Dt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function me(n,t={}){if(n)return Lt(n,((n,r)=>{t[n]=r})),t}const we=(n,t)=>{if(n===t)return!0;const r=V(n),e=V(t);return r.length===e.length&&R(r,(r=>n[r]===t[r]))},ye=en("RegExp"),be=on(ye),ve=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Ae(n){return n.replace(ve,"\\$&")}function Ee(n,t){return t?Ee(gn(n,Ae)):RegExp(n.join("|"))}function je(n,t){if(n){if(I(t)){const r=Ee(t);return pe(n,((n,t)=>!r.test(t)))}if(be(t))return pe(n,((n,r)=>!t.test(r)));if(At(t))return pe(n,((n,r)=>r!==t));if(bt(t)){const r=t.toString();return pe(n,((n,t)=>t!==r))}return zt(t)?pe(n,((n,r)=>!t(n,r))):void 0}}const Ie=(n,t,r={})=>{if(n)return p(t,(t=>{r[t]=n[t]})),r};function xe(n){if(n)return V(n).length}const Oe=(n,t)=>{const r={};return p(n,((n,e)=>{r[n]=t[e]})),r},$e=n=>{const t=[],r=[];return Lt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Be=/[ _-]+/g;function Ce(n){let t="";return n.replace(Be," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const Se=/[ _-]+/g,Me=/[ ]+/g;function Te(n){return n.replace(/([A-Z]+)/g," $1").replace(Se," ").trim().toLowerCase().replace(Me,"-")}const _e=/[ _-]+/g,Fe=/[ ]+/g;function Re(n){return n.replace(/([A-Z]+)/g," $1").replace(_e," ").trim().toLowerCase().replace(Fe,"_")}const Pe=/[ _-]+/g;function Ue(n){return n.replace(/([A-Z]+)/g," $1").replace(Pe," ").trim().toUpperCase()}const Ne=/[ _-]+/g;function De(n){return n.replace(/([A-Z]+)/g," $1").replace(Ne," ").trim().toLowerCase()}function Le(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function Ze(n,t=1){return n[n.length-t]}function ke(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function qe(n,t=1){return n.slice(0,-1*t)}function Ve(n,t=1){return n.substring(t)}function Ge(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function Je(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function We(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const ze=/%(?![\da-f]{2})/gi,He=/&/g,Ke=//g,Xe=/"/g;function Ye(n){return decodeURIComponent(n.replace(ze,(()=>"%25")))}function no(n){return n.replace(He,"&").replace(Ke,"<").replace(Qe,">").replace(Xe,""")}function to(n){return no(Ye(n))}const ro=/\S+/g,eo=/\w+/g;function oo(n){return n.match(ro)||[]}function uo(n){return n.match(eo)||[]}const co=/\w+/g;function io(n){return n[0].toUpperCase()}function so(n){return io(n)+Ve(n)}function fo(n){return io(n)+Ve(n).toLowerCase()}function ao(n){return n.replace(co,(n=>so(n)))}function lo(n){return n.replace(co,(n=>fo(n)))}function ho(n){return xr(n)?.name}function go(n){return!!h(n)&&"[object Arguments]"===n.toString()}function po(n){return!h(n)}const mo=en("Map"),wo=on(mo),yo=/Array/,bo="Array";function vo(n){if(n){const t=ho(n);if(yo.test(t)&&t!==bo)return!0}return!1}function Ao(n,t){if(po(n)||zt(n))return!1;if(I(n)||vo(n))return!0;const r=n.length;if(!po(r)||!bt(r)||r<0)return!1;if(t){const t=V(n);return!!t&&Rr(t,((n,t)=>t>=0&&bt(t)))}return!0}const Eo=en("BigInt"),jo=on(Eo),Io=en("Boolean"),xo=on(Io),Oo=en("ArrayBuffer"),$o=on(Oo);function Bo(n,t){return!(!n||!t)&&n instanceof t}const Co=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function So(n){if(h(n)){const t=n?.constructor?.name;return Co.test(t)}return!1}const Mo=en("Date"),To=on(Mo);function _o(n){return At(n)||I(n)?!a(n):Y(n)?!xe(n):!h(n)}function Fo(n){return!1===n}const Ro=en("Float32Array"),Po=on(Ro),Uo=en("Float64Array"),No=on(Uo),{isInteger:Do}=Number,Lo=Do,Zo=en("Int16Array"),ko=on(Zo),qo=en("Int32Array"),Vo=on(qo),Go=en("Int8Array"),Jo=on(Go);function Wo(n){return h(n)&&"function"==typeof n[Symbol.iterator]}function zo(n){return!!n&&n instanceof Promise}function Ho(n){return!!n&&(zo(n)||Kt(n)||Jt(n))}function Ko(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Qo(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Xo(n,t){return!po(n)&&!po(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:Yo}=Number,nu=Yo;function tu(n,t){const r=xr(n),e=xr(t);return r===e&&r.name===e.name}function ru(n){return!0===n}const eu=en("Uint16Array"),ou=on(eu),uu=en("Uint32Array"),cu=on(uu),iu=en("Uint8Array"),su=on(iu),fu=en("Uint8ClampedArray"),au=on(fu),lu=en("WeakMap"),hu=on(lu),gu=void 0!==globalThis.Deno,pu=void 0!==globalThis.process&&process.versions&&process.versions.node;function du(n,t=!0){return Boolean(n)&&t}function mu(n,t=!0){return!1===Boolean(n)&&t}function wu(n,t,r,e){if(h(n)){if(zt(t))return r?dr(t,r,e):t(...e);if(Y(t))return t[r]=n,t}}function yu(n,t){return Fo(sn(n,t))}const bu=JSON;function vu(n,t){if(n)return bu.parse(n,t)}const Au=bu.stringify;function Eu(n,t,r){const e=globalThis.options||r;let o;return zt(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Au(n)}\n\t\tExpected: ${Au(t)}`,e)}async function ju(n,t,r){const e=await n;return!(zt(t)&&!1===await t(e,r))&&!yu(e,t)||Eu(e,t,r)}function Iu(n,t,r){if(Ho(n)||Ho(t))return ju(n,t,r);return!(zt(t)&&!1===t(n,r))&&!yu(n,t)||Eu(n,t,r)}function xu(n,t,r){const e=Cr(n,(n=>zt(n)?n.bind(t):n));return r?Nt(r,e):e}function Ou(n){if(n){if(cn(n))return Yn(n);if(I(n))return i(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const $u=globalThis.structuredClone;function Bu(n){return $u(n)}function Cu(n){if(Y(n)){const t=V(n),r=t.length,e={};for(let o=0;odu(n)))}async function Su(n,t=g,r,e){if(Jt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);h(e)&&r.push(e)}return r}const o=r||Or(n);if(I(n)||qt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);h(u)&&e(u)}return o}const u=zt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);h(c)&&(u?o.set(r,c):o[r]=c)}return o}function Mu(n,t=g,r){const e=r||Or(n);if(I(n)||qt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);h(u)&&o(u)}return e}const o=zt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);h(c)&&(o?e.set(r,c):e[r]=c)}return e}const Tu=Qt(d,w,ge,he,Mu,Su);function _u(...n){return Kt(n[0])?async function(...t){return Rr(n,(async n=>Rr(t,(async t=>n(t)))))}:function(...t){return Rr(n,(n=>Rr(t,(t=>n(t)))))}}function Fu(n,t=g,r){const e=r||Or(n);if(I(n)||qt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=zt(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Ru(n,t=g,r,e){if(Jt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||Or(n);if(I(n)||qt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=zt(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Pu=Qt(U,N,pe,de,Fu,Ru);function Uu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Nu=Uu(p),Du=Uu(_);function Lu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const Zu=Lu(m),ku=Lu(F);function qu(n,t){const r=Or(n),e=r.push||r.add;if(e&&zt(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else zt(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function Vu(n,t){const r={};return p(n,((n,e)=>{r[t[e]]=n})),r}function Gu(n,t,r){if(po(n)||po(t))return!1;if(At(n))return At(t)?n.includes(t,r):be(t)?t.test(n):zt(t)?Boolean(t(n)):Rr(t,(t=>Boolean(Gu(n,t))));if(I(n)){if(At(t))return n.includes(t,r);if(be(t))return Rr(n,(n=>n.test(t)));if(I(t))return Rr(t,(t=>Boolean(Gu(n,t))))}return!1}const Ju=Ct(/\./),Wu=(n,t,r)=>(t&&!h(n[t])&&(n[t]=r),n);class zu{list=C(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,er),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const Hu=C(zu);function Ku(n,t){return Hu.set(n,t)}function Qu(){sr(setTimeout(ir,0),(n=>{Hu.remove(n)}))}function Xu(n,...t){return Xt(t,(t=>{Xt(t,((t,r)=>{if(n[r]&&(Y(t)||I(t)||t.forEach))return Xu(n[r],t);n[r]=t}))})),n}class Yu{static models={};constructor(n,t){h(t)?(Nt(this,t),this.modelName=n,Yu.models.set(n,t)):Nt(this,n)}}function nc(n,t){return h(t)?C(Yu,[n,t]):H(n,Yu.models)}function tc(n,t){return[n,t]}function rc(n,t,r){const e=n.length,o=[];for(let u=0;uR(r,(r=>sn(n[r],t[r])));function cc(n,t,r){return t&&Y(n)||bt(t)&&I(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function ic(n,t,r){return bt(r)&&I(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class sc{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Lt(n,(t=>{n[t]=new sc(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new sc(r),!0)})}}const fc=()=>[],ac=()=>({}),lc=()=>"";async function hc(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const mc=C(dc);class wc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function yc(n){return new wc(n)}async function bc(u,c){const i=await n(u);return await m(i,(async n=>{const i=o.join(u,n);if((await t(i)).isDirectory()){const t=o.join(c,n.replace(u,""));await r(t,{recursive:!0}),await bc(i,t)}else await async function(n,t,r){const u=o.join(n,r),c=o.join(t,r);await e(u,c)}(u,c,n)})),!0}function vc(n){return globalThis.__filename?__filename:u(n.url)}function Ac(n){return globalThis.__dirname?__dirname:o.dirname(u(n.url))}export{Yt as Chain,zu as Intervals,Yu as Model,sc as Store,ar as Timers,dc as UniqID,wc as VirtualStorage,Wr as add,Ft as after,dr as apply,Ee as arrayToRegex,Vu as arraysToObject,Rt as ary,Iu as assert,ju as assertAsync,Nt as assign,Pt as before,xu as bindAll,Zr as cacheNativeMethod,Xr as calcProgress,Ce as camelCase,nr as chain,c as chunk,ke as chunkString,Ou as clear,i as clearArray,Yn as clearBuffer,Qu as clearIntervals,gr as clearTimers,Bu as clone,s as cloneArray,Or as cloneType,Cu as compact,le as compactKeys,Tu as compactMap,d as compactMapArray,w as compactMapAsyncArray,he as compactMapAsyncObject,ge as compactMapObject,rc as concurrent,ec as concurrentStatus,C as construct,rn as constructorName,bc as copyFolder,nt as countBy,tt as countKey,rt as countWithoutKey,vc as currentFile,Ac as currentPath,tr as curry,rr as curryRight,mr as debounce,zr as deduct,Vr as defProp,S as difference,Hr as divide,M as drop,T as dropRight,Xt as each,p as eachArray,m as eachAsyncArray,Dt as eachAsyncObject,Lt as eachObject,_ as eachRight,F as eachRightAsync,O as ensureArray,Xn as ensureBuffer,Ae as escapeRegex,ve as escapeRegexRegex,Rr as every,_u as everyArg,R as everyArray,P as everyAsyncArray,Mr as everyAsyncObject,Tr as everyObject,ur as falsy,Pu as filter,U as filterArray,N as filterAsyncArray,de as filterAsyncObject,pe as filterObject,ot as findIndex,et as findIndexCache,ut as findItem,D as first,L as flatten,$ as flattenDeep,Nu as flow,Zu as flowAsync,ku as flowAsyncRight,Du as flowRight,j as forEach,Zt as forEachAsync,qu as forMap,Vt as forOf,Wt as forOfAsync,Mu as forOfCompactMap,Su as forOfCompactMapAsync,_r as forOfEvery,Fr as forOfEveryAsync,Fu as forOfFilter,Ru as forOfFilterAsync,$r as forOfMap,Br as forOfMapAsync,Qt as generateLoop,H as get,ae as getEntries,$t as getFileExtension,Bt as getFilename,ht as getHighest,gt as getLowest,Pn as getNumberInsertIndex,qr as getPropDesc,kr as getPropNames,xr as getType,ho as getTypeName,pt as groupBy,Gu as has,X as hasAnyKeys,Ju as hasDot,Q as hasKeys,a as hasLength,Gr as hasProp,h as hasValue,no as htmlEntities,wr as ifInvoke,Wu as ifNotAssign,wu as ifValue,yr as inAsync,br as inSync,Kr as increment,dt as indexBy,Z as initial,qe as initialString,Le as insertInRange,k as intersection,Ku as interval,Hu as intervals,me as invert,mt as invoke,wt as invokeAsync,go as isArguments,I as isArray,$o as isArrayBuffer,Oo as isArrayBufferCall,Ao as isArrayLike,Kt as isAsync,Ht as isAsyncCall,jo as isBigInt,Eo as isBigIntCall,xo as isBoolean,Io as isBooleanCall,cn as isBuffer,un as isBufferCall,Bo as isChild,So as isCloneable,nn as isConstructor,tn as isConstructorFactory,en as isConstructorNameFactory,To as isDate,Mo as isDateCall,gu as isDeno,_o as isEmpty,sn as isEqual,Po as isF32,Ro as isF32Call,No as isF64,Uo as isF64Call,Fo as isFalse,mu as isFalsy,St as isFileCSS,Mt as isFileHTML,Tt as isFileJS,_t as isFileJSON,Lo as isFloat,zt as isFunction,Jt as isGenerator,Gt as isGeneratorCall,ko as isI16,Zo as isI16Call,Vo as isI32,qo as isI32Call,Jo as isI8,Go as isI8Call,Wo as isIterable,Ho as isKindAsync,wo as isMap,mo as isMapCall,fn as isMatchArray,we as isMatchObject,b as isNegative,pu as isNodejs,x as isNotArray,vt as isNotNumber,Et as isNotString,l as isNull,bt as isNumber,yt as isNumberCall,Mn as isNumberEqual,oe as isNumberInRange,ue as isNumberNotInRange,Ko as isParent,Y as isPlainObject,ie as isPositive,Qo as isPrimitive,zo as isPromise,be as isRegex,ye as isRegexCall,Xo as isRelated,nu as isSafeInt,Jr as isSame,tu as isSameType,qt as isSet,kt as isSetCall,At as isString,ru as isTrue,du as isTruthy,on as isTypeFactory,vo as isTypedArray,ou as isU16,eu as isU16Call,cu as isU32,uu as isU32Call,su as isU8,au as isU8C,fu as isU8CCall,iu as isU8Call,f as isUndefined,hu as isWeakMap,lu as isWeakMapCall,se as isZero,vu as jsonParse,Te as kebabCase,V as keys,ln as largest,hn as last,De as lowerCase,Cr as map,gn as mapArray,pn as mapAsyncArray,jr as mapAsyncObject,Ir as mapObject,dn as mapRightArray,mn as mapWhile,Xu as merge,nc as model,Qr as multiply,vr as negate,po as noValue,ir as noop,yu as notEqual,Ar as nthArg,Ut as objectAssign,fe as objectEntries,xe as objectSize,je as omit,Er as once,Dn as onlyUnique,Sr as over,Pr as overEvery,tc as pair,bn as partition,Ie as pick,It as pluck,jt as pluckObject,oc as promise,uc as propertyMatch,ne as randomFloat,Bn as randomInt,E as range,A as rangeDown,v as rangeUp,Ye as rawURLDecode,Ur as reArg,Ct as regexTestFactory,te as remainder,En as remove,jn as removeBy,Ge as replaceList,In as rest,Ve as restString,g as returnValue,xn as right,Ze as rightString,_n as sample,to as sanitize,cc as setKey,ic as setValue,Tn as shuffle,Rn as smallest,Re as snakeCase,ft as sortCollectionAlphabetically,Ot as sortCollectionAlphabeticallyReverse,lt as sortCollectionAscending,at as sortCollectionAscendingFilter,it as sortCollectionDescending,ct as sortCollectionDescendingFilter,yn as sortNumberAscending,An as sortNumberDescening,st as sortObjectsAlphabetically,xt as sortObjectsAlphabeticallyReverse,Ln as sortUnique,Au as stringify,fc as stubArray,cr as stubFalse,ac as stubObject,lc as stubString,or as stubTrue,wn as subtract,re as subtractAll,vn as subtractReverse,ee as sumAll,Un as take,Nn as takeRight,Nr as throttle,hr as timer,lr as timers,sr as times,hc as timesAsync,fr as timesMap,gc as timesMapAsync,Sn as toArray,z as toPath,pc as toggle,oo as tokenize,Je as truncate,We as truncateRight,er as truth,Qn as unZip,$e as unZipObject,kn as union,mc as uniqID,Zn as unique,qn as untilFalseArray,Vn as untilTrueArray,Ue as upperCase,so as upperFirst,ao as upperFirstAll,io as upperFirstLetter,fo as upperFirstOnly,lo as upperFirstOnlyAll,yc as virtualStorage,Gn as whileCompactMap,Jn as whileEachArray,Wn as whileMapArray,zn as without,uo as words,Dr as wrap,Hn as xor,Kn as zip,Oe as zipObject}; +import{readdir as n,stat as t,mkdir as r,copyFile as e}from"fs/promises";import o from"path";import{fileURLToPath as u}from"url";function c(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function i(n){return n.length=0,n}function s(n){return n.slice()}function f(n){return void 0===n}function a(n){return Boolean(n.length)}function l(n){return null===n}function h(n){return!f(n)&&!l(n)}function g(n){return n}function p(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const s=t.call(e,n,u,r,c,i,o);h(s)&&r.push(s)})):p(n,((n,u,c,i)=>{const s=t(n,u,r,c,i,e,o);h(s)&&r.push(s)})),r}async function m(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const u=await t(n,e,r,o);h(u)&&r.push(u)})),r}const{sign:y}=Math;function b(n){return-1===y(n)}function v(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function E(n,t,r=1,e=[]){return b(r)?e:n{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function M(n,t=1,r=n.length){return n.splice(t,r)}const T=(n,t=1,r=n.length)=>M(n,0,r-t);function _(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function F(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function R(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function N(n,t,r=[],e){return await m(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function D(n,t){return t?n.slice(0,t):n[0]}function L(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(O(t))),[]);return r}function Z(n){return n.slice(0,n.length-1)}function k(n,...t){return d(n,(n=>{if(R(t,(t=>t.includes(n))))return n}))}function q(n,t,r){if(!n)return;const e=n.length;if(h(r))for(let o=0;o(r=r[n],h(r)))),r}const Q=Object.hasOwn;function X(n,...t){if(n)return R(t,(t=>{const r=H(t);if(1===r.length)return Q(n,t);{const t=r.pop(),e=K(r,n);return!!e&&Q(e,t)}}))}function Y(n,...t){if(n)return Boolean(t.find((t=>{const r=H(t);if(1===r.length)return Q(n,t);{const t=r.pop(),e=K(r,n);return!!e&&Q(e,t)}})))}const nn=n=>!!h(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function tn(n,t){return n?.constructor===t||!1}function rn(n){return t=>tn(t,n)}function en(n){return n?.constructor?.name}function on(n){return t=>en(t)===n||!1}function un(n){return function(t,...r){return r?n(t)&&R(r,n):n(t)}}const cn=on("Buffer"),sn=un(cn),fn=(n,t)=>{if(n===t)return!0;if(sn(n))return n.equals(t);if(n.toString()===t.toString())if(nn(n)){const r=G(n);if(X(t,r))return R(r,(r=>fn(n[r],t[r])))}else if(I(n)&&n.length===t.length)return R(n,((n,r)=>fn(n,t[r])));return!1};function an(n,t){return n.length===t.length&&R(n,((n,r)=>fn(t[r],n)))}const ln=Math.max;function hn(n){return ln(...n)}function gn(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function pn(n,t,r=[],e,o){return h(e)?p(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):p(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function dn(n,t){const r=[];return await m(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function mn(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function wn(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function An(n,t){return t-n}function En(n){return n.sort(An)}function jn(n,t){let r=n.length;for(let e=0;er)return _n(n);if(1===t)return[n[Cn(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Nn(n,t=1){return n.slice(0,t)}function Dn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Ln(n,t,r){return r.indexOf(n)===t}function Zn(n,t,r){return n!==r[t-1]}function kn(n,t){return t?n.filter(Zn):n.filter(Ln)}function qn(...n){return kn($(n))}function Vn(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function Kn(...n){const t=C(Map),r=[];return 2===n.length?S(n[0],n[1]):(p(n,((n,r)=>{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Qn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Xn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Yn(n){return sn(n)&&n||h(n)&&Buffer.from(n)||Buffer.alloc(0)}function nt(n){return n.fill(0),n}function tt(n,t){const r={};let e;return p(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function rt(n,t){let r=0;return p(n,(n=>{n[t]&&r++})),r}function et(n,t){let r=0;return p(n,(n=>{n[t]||r++})),r}function ot(n,t,r,e,o){if(n[o]===e)return!0}function ut(n,t,r="id"){const e=n.findIndex(((n,e)=>ot(n,0,0,t,r)));return-1!==e&&e}function ct(n,t,r="id"){const e=n.find(((n,e)=>ot(n,0,0,t,r)));return-1!==e&&e}function it(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function st(n,t="id",r){return n.sort(((n,e)=>it(n,e,t,r)))}function ft(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function at(n,t="id",r){return n.sort(((n,e)=>ft(n,e,t,r)))}function lt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function ht(n,t="id",r){return n.sort(((n,e)=>lt(n,e,t,r)))}function gt(n,t="id"){return ht(n,t)[0]}function pt(n,t){return st(n,t,!1)[0]}function dt(n,t){const r={};return p(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function mt(n,t="id"){const r={};return p(n,(n=>{r[n[t]]=n})),r}function wt(n,t,r,e){return pn(n,e?(n,o)=>n[t].call(e,r):(n,e)=>n[t](r))}function yt(n,t,r,e){return dn(n,e?n=>n[t].call(e,r):async n=>n[t](r))}const bt=on("Number"),vt=un(bt);function At(n){return!vt(n)}const Et=rn(String);function jt(n){return!Et(n)}function It(n,t){if(n)return Et(t)?n[t]:pn(t,(t=>n[t]))}function xt(n,t){return pn(n,(n=>It(n,t)))}function Ot(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function $t(n,t="id",r){return n.sort(((n,e)=>Ot(n,e,t,r)))}function Bt(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function Ct(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function St(n){return t=>!!h(t)&&n.test(t)}const Mt=St(/\.css$/),Tt=St(/\.html$/),_t=St(/\.js$/),Ft=St(/\.json$/);function Rt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function Pt(n,t){return(...r)=>n(...r.splice(0,t))}function Ut(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Nt=Object.assign;function Dt(n,...t){if(h(n))return Nt(n,...t)}const Lt=async(n,t,r,e)=>{if(!n)return;const o=G(n);return h(r)?await m(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await m(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Zt(n,t,r,e){if(!n)return;const o=G(n);return h(r)?p(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):p(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function kt(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!h(n)&&n instanceof Function,Kt=on("AsyncFunction"),Qt=un(Kt);function Xt(n,t,r,e,o,u){return(c,i,s,f,a)=>{let l;const g=Qt(i);if(h(c)&&i)return l=I(c)?g?t:n:nn(c)||Ht(c)?g?e:r:o?g?u:o:Wt(c)?u:g?e:r,l(c,i,s,f,a)}}const Yt=Xt(p,m,Zt,Lt,Gt,zt);class nr{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Yt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function tr(n){return C(nr,[n])}function rr(n,t=n.length){const r=[],e=(...o)=>{if(r.push(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}function er(n,t=n.length){const r=[],e=(...o)=>{if(r.unshift(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}const or=!0,ur=()=>or,cr=!1,ir=()=>cr,sr=()=>{};function fr(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,or),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const hr=C(lr);function gr(n,t){return hr.set(n,t)}function pr(){fr(setTimeout(sr,0),(n=>{hr.remove(n)}))}const dr=Reflect.apply;function mr(n,t,r){if(Ht(n))return dr(n,t,r)}function wr(n,t){function r(...n){r.id!==cr&&hr.remove(r.id),r.id=gr((()=>{r.callable(...n),r.id=cr}),t)}return r.id=cr,r.callable=n.bind(r),r.clear=()=>{r.id!==cr&&(hr.remove(r.id),r.id=cr)},r}function yr(n,...t){if(Ht(n))return n(...t)}async function br(n,t){const r=n.length;for(let e=0;eYt(n,(n=>{n(t)}));function Ar(n){return(...t)=>!n(...t)}function Er(n=0){return(...t)=>t[n]}const jr=n=>{let t;return(...r)=>(h(t)||(t=n(...r)),t)};async function Ir(n,t,r={}){if(n)return await Lt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function xr(n,t,r={},e,o){if(n)return h(e)?Zt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Zt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function Or(n){return n?.constructor}function $r(n,t=[]){const r=Or(n);return r===Function&&"function"===r.name?function(){}:C(r,t)}function Br(n,t=g,r){const e=r||$r(n);if(I(n)||Vt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=Ht(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Cr(n,t=g,r,e){if(Wt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||$r(n);if(I(n)||Vt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=Ht(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const Sr=Xt(pn,dn,xr,Ir,Br,Cr);function Mr(n){return(...t)=>Sr(n,(n=>n(...t)))}async function Tr(n,t){if(!n)return;return P(G(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function _r(n,t){if(!n)return;return R(G(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function Fr(n,t=g){if(I(n)||Vt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Rr(n,t=g,r){if(Wt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(I(n)||Vt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Pr=Xt(R,P,_r,Tr,Fr,Rr);function Ur(n){return t=>Pr(n,(n=>n(t)))}function Nr(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Dr(n,t){function r(...n){r.id?r.shouldThrottle=or:(r.callable(...n),r.id=gr((()=>{r.shouldThrottle&&r.callable(...n),r.id=cr}),t))}return r.id=cr,r.callable=n.bind(r),r.clear=()=>{hr.remove(r.id),r.id=cr},r}function Lr(n,t){return(...r)=>t(n,...r)}const Zr=Function.prototype;function kr(n){return Zr.call.bind(n)}const qr=Object.getOwnPropertyNames,Vr=Object.getOwnPropertyDescriptor,Gr=Object.defineProperty,Jr=kr(Object.hasOwnProperty),Wr=Object.is;function zr(n,t){return n+t}function Hr(n){return n-1}function Kr(n,t){return n/t}function Qr(n){return n+1}function Xr(n,t){return n*t}function Yr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:ne}=Math;function te(n,t=0){return ne()*(n-t)+t}function re(n,t){return n%t}function ee(n){return n.reduce(((n,t)=>n-t),0)}function oe(n){return n.reduce(((n,t)=>n+t),0)}function ue(n,t,r){return n>t&&nr}const{sign:ie}=Math;function se(n){return 1===ie(n)}function fe(n){return 0===n}const ae=Object.entries;function le(n){if(h(n))return ae(n)}function he(n){const t=[];return Zt(n,((n,r)=>{h(n)&&t.push(r)})),t}async function ge(n,t=g,r={}){return await Lt(n,(async(n,e,o,u,c)=>{const i=await t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function pe(n,t=g,r={}){return Zt(n,((n,e,o,u,c)=>{const i=t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function de(n,t,r={}){return Zt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function me(n,t,r={}){return await Lt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function we(n,t={}){if(n)return Zt(n,((n,r)=>{t[n]=r})),t}const ye=(n,t)=>{if(n===t)return!0;const r=G(n),e=G(t);return r.length===e.length&&R(r,(r=>n[r]===t[r]))},be=on("RegExp"),ve=un(be),Ae=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Ee(n){return n.replace(Ae,"\\$&")}function je(n,t){return t?je(pn(n,Ee)):RegExp(n.join("|"))}function Ie(n,t){if(n){if(I(t)){const r=je(t);return de(n,((n,t)=>!r.test(t)))}if(ve(t))return de(n,((n,r)=>!t.test(r)));if(Et(t))return de(n,((n,r)=>r!==t));if(vt(t)){const r=t.toString();return de(n,((n,t)=>t!==r))}return Ht(t)?de(n,((n,r)=>!t(n,r))):void 0}}const xe=(n,t,r={})=>{if(n)return p(t,(t=>{r[t]=n[t]})),r};function Oe(n){if(n)return G(n).length}const $e=(n,t)=>{const r={};return p(n,((n,e)=>{r[n]=t[e]})),r},Be=n=>{const t=[],r=[];return Zt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Ce=/[ _-]+/g;function Se(n){let t="";return n.replace(Ce," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const Me=/[ _-]+/g,Te=/[ ]+/g;function _e(n){return n.replace(/([A-Z]+)/g," $1").replace(Me," ").trim().toLowerCase().replace(Te,"-")}const Fe=/[ _-]+/g,Re=/[ ]+/g;function Pe(n){return n.replace(/([A-Z]+)/g," $1").replace(Fe," ").trim().toLowerCase().replace(Re,"_")}const Ue=/[ _-]+/g;function Ne(n){return n.replace(/([A-Z]+)/g," $1").replace(Ue," ").trim().toUpperCase()}const De=/[ _-]+/g;function Le(n){return n.replace(/([A-Z]+)/g," $1").replace(De," ").trim().toLowerCase()}function Ze(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function ke(n,t=1){return n[n.length-t]}function qe(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function Ve(n,t=1){return n.slice(0,-1*t)}function Ge(n,t=1){return n.substring(t)}function Je(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function We(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function ze(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const He=/%(?![\da-f]{2})/gi,Ke=/&/g,Qe=//g,Ye=/"/g;function no(n){return decodeURIComponent(n.replace(He,(()=>"%25")))}function to(n){return n.replace(Ke,"&").replace(Qe,"<").replace(Xe,">").replace(Ye,""")}function ro(n){return to(no(n))}const eo=/\S+/g,oo=/\w+/g;function uo(n){return n.match(eo)||[]}function co(n){return n.match(oo)||[]}const io=/\w+/g;function so(n){return n[0].toUpperCase()}function fo(n){return so(n)+Ge(n)}function ao(n){return so(n)+Ge(n).toLowerCase()}function lo(n){return n.replace(io,(n=>fo(n)))}function ho(n){return n.replace(io,(n=>ao(n)))}function go(n){return Or(n)?.name}function po(n){return!!h(n)&&"[object Arguments]"===n.toString()}function mo(n){return!h(n)}const wo=on("Map"),yo=un(wo),bo=/Array/,vo="Array";function Ao(n){if(n){const t=go(n);if(bo.test(t)&&t!==vo)return!0}return!1}function Eo(n,t){if(mo(n)||Ht(n))return!1;if(I(n)||Ao(n))return!0;const r=n.length;if(!mo(r)||!vt(r)||r<0)return!1;if(t){const t=G(n);return!!t&&Pr(t,((n,t)=>t>=0&&vt(t)))}return!0}const jo=on("BigInt"),Io=un(jo),xo=on("Boolean"),Oo=un(xo),$o=on("ArrayBuffer"),Bo=un($o);function Co(n,t){return!(!n||!t)&&n instanceof t}const So=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function Mo(n){if(h(n)){const t=n?.constructor?.name;return So.test(t)}return!1}const To=on("Date"),_o=un(To);function Fo(n){return Et(n)||I(n)?!a(n):nn(n)?!Oe(n):!h(n)}function Ro(n){return!1===n}const Po=on("Float32Array"),Uo=un(Po),No=on("Float64Array"),Do=un(No),{isInteger:Lo}=Number,Zo=Lo,ko=on("Int16Array"),qo=un(ko),Vo=on("Int32Array"),Go=un(Vo),Jo=on("Int8Array"),Wo=un(Jo);function zo(n){return h(n)&&"function"==typeof n[Symbol.iterator]}function Ho(n){return!!n&&n instanceof Promise}function Ko(n){return!!n&&(Ho(n)||Qt(n)||Wt(n))}function Qo(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Xo(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Yo(n,t){return!mo(n)&&!mo(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:nu}=Number,tu=nu;function ru(n,t){const r=Or(n),e=Or(t);return r===e&&r.name===e.name}function eu(n){return!0===n}const ou=on("Uint16Array"),uu=un(ou),cu=on("Uint32Array"),iu=un(cu),su=on("Uint8Array"),fu=un(su),au=on("Uint8ClampedArray"),lu=un(au),hu=on("WeakMap"),gu=un(hu),pu=void 0!==globalThis.Deno,du=void 0!==globalThis.process&&process.versions&&process.versions.node;function mu(n,t=!0){return Boolean(n)&&t}function wu(n,t=!0){return!1===Boolean(n)&&t}function yu(n,t,r,e){if(h(n)){if(Ht(t))return r?mr(t,r,e):t(...e);if(nn(t))return t[r]=n,t}}function bu(n,t){return Ro(fn(n,t))}const vu=JSON;function Au(n,t){if(n)return vu.parse(n,t)}const Eu=vu.stringify;function ju(n,t,r){const e=globalThis.options||r;let o;return Ht(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Eu(n)}\n\t\tExpected: ${Eu(t)}`,e)}async function Iu(n,t,r){const e=await n;return!(Ht(t)&&!1===await t(e,r))&&!bu(e,t)||ju(e,t,r)}function xu(n,t,r){if(Ko(n)||Ko(t))return Iu(n,t,r);return!(Ht(t)&&!1===t(n,r))&&!bu(n,t)||ju(n,t,r)}function Ou(n,t,r){const e=Sr(n,(n=>Ht(n)?n.bind(t):n));return r?Dt(r,e):e}function $u(n){if(n){if(sn(n))return nt(n);if(I(n))return i(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const Bu=globalThis.structuredClone;function Cu(n){return Bu(n)}function Su(n){if(nn(n)){const t=G(n),r=t.length,e={};for(let o=0;omu(n)))}async function Mu(n,t=g,r,e){if(Wt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);h(e)&&r.push(e)}return r}const o=r||$r(n);if(I(n)||Vt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);h(u)&&e(u)}return o}const u=Ht(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);h(c)&&(u?o.set(r,c):o[r]=c)}return o}function Tu(n,t=g,r){const e=r||$r(n);if(I(n)||Vt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);h(u)&&o(u)}return e}const o=Ht(e.set);for(const[r,u]of n){const c=t(u,r,e,n);h(c)&&(o?e.set(r,c):e[r]=c)}return e}const _u=Xt(d,w,pe,ge,Tu,Mu);function Fu(...n){return Qt(n[0])?async function(...t){return Pr(n,(async n=>Pr(t,(async t=>n(t)))))}:function(...t){return Pr(n,(n=>Pr(t,(t=>n(t)))))}}function Ru(n,t=g,r){const e=r||$r(n);if(I(n)||Vt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=Ht(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Pu(n,t=g,r,e){if(Wt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||$r(n);if(I(n)||Vt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=Ht(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Uu=Xt(U,N,de,me,Ru,Pu);function Nu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Du=Nu(p),Lu=Nu(_);function Zu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const ku=Zu(m),qu=Zu(F);function Vu(n,t){const r=$r(n),e=r.push||r.add;if(e&&Ht(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else Ht(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function Gu(n,t){const r={};return p(n,((n,e)=>{r[t[e]]=n})),r}function Ju(n,t,r){if(mo(n)||mo(t))return!1;if(Et(n))return Et(t)?n.includes(t,r):ve(t)?t.test(n):Ht(t)?Boolean(t(n)):Pr(t,(t=>Boolean(Ju(n,t))));if(I(n)){if(Et(t))return n.includes(t,r);if(ve(t))return Pr(n,(n=>n.test(t)));if(I(t))return Pr(t,(t=>Boolean(Ju(n,t))))}return!1}const Wu=St(/\./),zu=(n,t,r)=>(t&&!h(n[t])&&(n[t]=r),n);class Hu{list=C(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,or),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const Ku=C(Hu);function Qu(n,t){return Ku.set(n,t)}function Xu(){fr(setTimeout(sr,0),(n=>{Ku.remove(n)}))}function Yu(n,...t){return Yt(t,(t=>{Yt(t,((t,r)=>{if(n[r]&&(nn(t)||I(t)||t.forEach))return Yu(n[r],t);n[r]=t}))})),n}class nc{static models={};constructor(n,t){h(t)?(Dt(this,t),this.modelName=n,nc.models.set(n,t)):Dt(this,n)}}function tc(n,t){return h(t)?C(nc,[n,t]):K(n,nc.models)}function rc(n,t){return[n,t]}function ec(n,t,r){const e=n.length,o=[];for(let u=0;uR(r,(r=>fn(n[r],t[r])));function ic(n,t,r){return t&&nn(n)||vt(t)&&I(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function sc(n,t,r){return vt(r)&&I(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class fc{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Zt(n,(t=>{n[t]=new fc(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new fc(r),!0)})}}const ac=()=>[],lc=()=>({}),hc=()=>"";async function gc(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const wc=C(mc);class yc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function bc(n){return new yc(n)}async function vc(u,c){const i=await n(u);return await m(i,(async n=>{const i=o.join(u,n);if((await t(i)).isDirectory()){const t=o.join(c,n.replace(u,""));await r(t,{recursive:!0}),await vc(i,t)}else await async function(n,t,r){const u=o.join(n,r),c=o.join(t,r);await e(u,c)}(u,c,n)})),!0}function Ac(n){return globalThis.__filename?__filename:u(n.url)}function Ec(n){return globalThis.__dirname?__dirname:o.dirname(u(n.url))}export{nr as Chain,Hu as Intervals,nc as Model,fc as Store,lr as Timers,mc as UniqID,yc as VirtualStorage,zr as add,Rt as after,mr as apply,je as arrayToRegex,Gu as arraysToObject,Pt as ary,xu as assert,Iu as assertAsync,Dt as assign,Ut as before,Ou as bindAll,kr as cacheNativeMethod,Yr as calcProgress,Se as camelCase,tr as chain,c as chunk,qe as chunkString,$u as clear,i as clearArray,nt as clearBuffer,Xu as clearIntervals,pr as clearTimers,Cu as clone,s as cloneArray,$r as cloneType,Su as compact,he as compactKeys,_u as compactMap,d as compactMapArray,w as compactMapAsyncArray,ge as compactMapAsyncObject,pe as compactMapObject,ec as concurrent,oc as concurrentStatus,C as construct,en as constructorName,vc as copyFolder,tt as countBy,rt as countKey,et as countWithoutKey,Ac as currentFile,Ec as currentPath,rr as curry,er as curryRight,wr as debounce,Hr as deduct,Gr as defProp,S as difference,Kr as divide,M as drop,T as dropRight,Yt as each,p as eachArray,m as eachAsyncArray,Lt as eachAsyncObject,Zt as eachObject,_ as eachRight,F as eachRightAsync,O as ensureArray,Yn as ensureBuffer,Ee as escapeRegex,Ae as escapeRegexRegex,Pr as every,Fu as everyArg,R as everyArray,P as everyAsyncArray,Tr as everyAsyncObject,_r as everyObject,cr as falsy,Uu as filter,U as filterArray,N as filterAsyncArray,me as filterAsyncObject,de as filterObject,ut as findIndex,ot as findIndexCache,ct as findItem,D as first,L as flatten,$ as flattenDeep,Du as flow,ku as flowAsync,qu as flowAsyncRight,Lu as flowRight,j as forEach,kt as forEachAsync,Vu as forMap,Gt as forOf,zt as forOfAsync,Tu as forOfCompactMap,Mu as forOfCompactMapAsync,Fr as forOfEvery,Rr as forOfEveryAsync,Ru as forOfFilter,Pu as forOfFilterAsync,Br as forOfMap,Cr as forOfMapAsync,Xt as generateLoop,K as get,le as getEntries,Bt as getFileExtension,Ct as getFilename,gt as getHighest,pt as getLowest,Un as getNumberInsertIndex,Vr as getPropDesc,qr as getPropNames,Or as getType,go as getTypeName,dt as groupBy,Ju as has,Y as hasAnyKeys,Wu as hasDot,X as hasKeys,a as hasLength,Jr as hasProp,h as hasValue,to as htmlEntities,yr as ifInvoke,zu as ifNotAssign,yu as ifValue,br as inAsync,vr as inSync,Qr as increment,mt as indexBy,Z as initial,Ve as initialString,Ze as insertInRange,k as intersection,Qu as interval,Ku as intervals,we as invert,q as invokeArray,wt as invokeCollection,yt as invokeCollectionAsync,po as isArguments,I as isArray,Bo as isArrayBuffer,$o as isArrayBufferCall,Eo as isArrayLike,Qt as isAsync,Kt as isAsyncCall,Io as isBigInt,jo as isBigIntCall,Oo as isBoolean,xo as isBooleanCall,sn as isBuffer,cn as isBufferCall,Co as isChild,Mo as isCloneable,tn as isConstructor,rn as isConstructorFactory,on as isConstructorNameFactory,_o as isDate,To as isDateCall,pu as isDeno,Fo as isEmpty,fn as isEqual,Uo as isF32,Po as isF32Call,Do as isF64,No as isF64Call,Ro as isFalse,wu as isFalsy,Mt as isFileCSS,Tt as isFileHTML,_t as isFileJS,Ft as isFileJSON,Zo as isFloat,Ht as isFunction,Wt as isGenerator,Jt as isGeneratorCall,qo as isI16,ko as isI16Call,Go as isI32,Vo as isI32Call,Wo as isI8,Jo as isI8Call,zo as isIterable,Ko as isKindAsync,yo as isMap,wo as isMapCall,an as isMatchArray,ye as isMatchObject,b as isNegative,du as isNodejs,x as isNotArray,At as isNotNumber,jt as isNotString,l as isNull,vt as isNumber,bt as isNumberCall,Tn as isNumberEqual,ue as isNumberInRange,ce as isNumberNotInRange,Qo as isParent,nn as isPlainObject,se as isPositive,Xo as isPrimitive,Ho as isPromise,ve as isRegex,be as isRegexCall,Yo as isRelated,tu as isSafeInt,Wr as isSame,ru as isSameType,Vt as isSet,qt as isSetCall,Et as isString,eu as isTrue,mu as isTruthy,un as isTypeFactory,Ao as isTypedArray,uu as isU16,ou as isU16Call,iu as isU32,cu as isU32Call,fu as isU8,lu as isU8C,au as isU8CCall,su as isU8Call,f as isUndefined,gu as isWeakMap,hu as isWeakMapCall,fe as isZero,Au as jsonParse,_e as kebabCase,G as keys,hn as largest,gn as last,Le as lowerCase,Sr as map,pn as mapArray,dn as mapAsyncArray,Ir as mapAsyncObject,xr as mapObject,mn as mapRightArray,wn as mapWhile,Yu as merge,tc as model,Xr as multiply,Ar as negate,mo as noValue,sr as noop,bu as notEqual,Er as nthArg,Nt as objectAssign,ae as objectEntries,Oe as objectSize,Ie as omit,jr as once,Ln as onlyUnique,Mr as over,Ur as overEvery,rc as pair,vn as partition,xe as pick,xt as pluck,It as pluckObject,uc as promise,cc as propertyMatch,te as randomFloat,Cn as randomInt,E as range,A as rangeDown,v as rangeUp,no as rawURLDecode,Nr as reArg,St as regexTestFactory,re as remainder,jn as remove,In as removeBy,Je as replaceList,xn as rest,Ge as restString,g as returnValue,On as right,ke as rightString,Fn as sample,ro as sanitize,ic as setKey,sc as setValue,_n as shuffle,Pn as smallest,Pe as snakeCase,at as sortCollectionAlphabetically,$t as sortCollectionAlphabeticallyReverse,ht as sortCollectionAscending,lt as sortCollectionAscendingFilter,st as sortCollectionDescending,it as sortCollectionDescendingFilter,bn as sortNumberAscending,En as sortNumberDescening,ft as sortObjectsAlphabetically,Ot as sortObjectsAlphabeticallyReverse,Zn as sortUnique,Eu as stringify,ac as stubArray,ir as stubFalse,lc as stubObject,hc as stubString,ur as stubTrue,yn as subtract,ee as subtractAll,An as subtractReverse,oe as sumAll,Nn as take,Dn as takeRight,Dr as throttle,gr as timer,hr as timers,fr as times,gc as timesAsync,ar as timesMap,pc as timesMapAsync,Mn as toArray,H as toPath,dc as toggle,uo as tokenize,We as truncate,ze as truncateRight,or as truth,Xn as unZip,Be as unZipObject,qn as union,wc as uniqID,kn as unique,Vn as untilFalseArray,Gn as untilTrueArray,Ne as upperCase,fo as upperFirst,lo as upperFirstAll,so as upperFirstLetter,ao as upperFirstOnly,ho as upperFirstOnlyAll,bc as virtualStorage,Jn as whileCompactMap,Wn as whileEachArray,zn as whileMapArray,Hn as without,co as words,Lr as wrap,Kn as xor,Qn as zip,$e as zipObject}; //# sourceMappingURL=index.js.map diff --git a/build/module/index.js.map b/build/module/index.js.map index 895f911e..294dfee2 100644 --- a/build/module/index.js.map +++ b/build/module/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../../source/arrays/chunk.js","../../source/arrays/clear.js","../../source/arrays/clone.js","../../source/types/isUndefined.js","../../source/utilities/hasLength.js","../../source/types/isNull.js","../../source/types/hasValue.js","../../source/utilities/returnValue.js","../../source/arrays/each.js","../../source/arrays/compactMap.js","../../source/arrays/eachAsync.js","../../source/arrays/compactMapAsync.js","../../source/numbers/isNegative.js","../../source/arrays/range.js","../../source/utilities/forEach.js","../../source/types/isArray.js","../../source/arrays/ensure.js","../../source/arrays/flattenDeep.js","../../source/classes/construct.js","../../source/arrays/difference.js","../../source/arrays/drop.js","../../source/arrays/dropRight.js","../../source/arrays/eachRight.js","../../source/arrays/eachRightAsync.js","../../source/arrays/every.js","../../source/arrays/everyAsync.js","../../source/arrays/filter.js","../../source/arrays/filterAsync.js","../../source/arrays/first.js","../../source/arrays/flatten.js","../../source/arrays/initial.js","../../source/arrays/intersect.js","../../source/objects/keys.js","../../source/utilities/toPath.js","../../source/utilities/get.js","../../source/objects/hasKeys.js","../../source/types/isPlainObject.js","../../source/types/isConstructor.js","../../source/types/isTypeFactory.js","../../source/types/isBuffer.js","../../source/utilities/isEqual.js","../../source/arrays/isMatch.js","../../source/arrays/largest.js","../../source/arrays/last.js","../../source/arrays/map.js","../../source/arrays/mapAsync.js","../../source/arrays/mapRight.js","../../source/arrays/mapWhile.js","../../source/math/subtract.js","../../source/arrays/sortNumberAscending.js","../../source/arrays/partition.js","../../source/math/subtractReverse.js","../../source/arrays/sortNumberDescening.js","../../source/arrays/remove.js","../../source/arrays/rest.js","../../source/arrays/right.js","../../source/math/randomInt.js","../../source/internal/array.js","../../source/numbers/isNumberEqual.js","../../source/arrays/shuffle.js","../../source/arrays/sample.js","../../source/arrays/smallest.js","../../source/arrays/getNumberInsertIndex.js","../../source/arrays/take.js","../../source/arrays/takeRight.js","../../source/arrays/unique.js","../../source/arrays/union.js","../../source/arrays/untilFalse.js","../../source/arrays/untilTrue.js","../../source/arrays/whileCompactMap.js","../../source/arrays/whileEach.js","../../source/arrays/whileMap.js","../../source/arrays/without.js","../../source/arrays/xor.js","../../source/arrays/zip.js","../../source/buffers/ensure.js","../../source/buffers/clear.js","../../source/collection/countBy.js","../../source/collection/countKey.js","../../source/collection/countWithoutKey.js","../../source/collection/findIndexCache.js","../../source/collection/findIndex.js","../../source/collection/findItem.js","../../source/collection/sortCollectionDescending.js","../../source/collection/sortCollectionAlphabetically.js","../../source/collection/sortCollectionAscending.js","../../source/collection/getHighest.js","../../source/collection/getLowest.js","../../source/collection/groupBy.js","../../source/collection/indexBy.js","../../source/collection/invoke.js","../../source/collection/invokeAsync.js","../../source/types/isNumber.js","../../source/types/isString.js","../../source/objects/pluckObject.js","../../source/collection/pluck.js","../../source/collection/sortCollectionAlphabeticallyReverse.js","../../source/files/getExtension.js","../../source/files/getFilename.js","../../source/internal/regexTestFactory.js","../../source/files/isFileCSS.js","../../source/files/isFileHTML.js","../../source/files/isFileJS.js","../../source/files/isFileJSON.js","../../source/functions/after.js","../../source/functions/ary.js","../../source/functions/before.js","../../source/objects/assign.js","../../source/objects/eachAsync.js","../../source/objects/each.js","../../source/utilities/forEachAsync.js","../../source/types/isSet.js","../../source/utilities/forOf.js","../../source/types/isGenerator.js","../../source/utilities/forOfAsync.js","../../source/types/isFunction.js","../../source/types/isAsync.js","../../source/utilities/generateLoop.js","../../source/utilities/each.js","../../source/functions/chain.js","../../source/functions/curry.js","../../source/functions/curryRight.js","../../source/utilities/stubTrue.js","../../source/utilities/stubFalse.js","../../source/utilities/noop.js","../../source/utilities/times.js","../../source/utilities/timer.js","../../source/internal/apply.js","../../source/functions/debounce.js","../../source/functions/ifInvoke.js","../../source/functions/inAsync.js","../../source/functions/inSync.js","../../source/functions/negate.js","../../source/functions/nthArg.js","../../source/functions/once.js","../../source/objects/mapAsync.js","../../source/objects/map.js","../../source/types/getType.js","../../source/types/cloneType.js","../../source/utilities/forOfMap.js","../../source/utilities/forOfMapAsync.js","../../source/utilities/map.js","../../source/functions/over.js","../../source/objects/everyAsync.js","../../source/objects/every.js","../../source/utilities/forOfEvery.js","../../source/utilities/forOfEveryAsync.js","../../source/utilities/every.js","../../source/functions/overEvery.js","../../source/functions/rearged.js","../../source/functions/throttle.js","../../source/functions/wrap.js","../../source/utilities/cacheNativeMethod.js","../../source/internal/object.js","../../source/internal/isSame.js","../../source/math/add.js","../../source/math/deduct.js","../../source/math/divide.js","../../source/math/increment.js","../../source/math/multiple.js","../../source/math/progress.js","../../source/math/randomFloat.js","../../source/math/remainder.js","../../source/math/subtractAll.js","../../source/math/sumAll.js","../../source/numbers/isNumberInRange.js","../../source/numbers/isNumberNotInRange.js","../../source/numbers/isPositive.js","../../source/numbers/isZero.js","../../source/objects/getEntries.js","../../source/objects/compactKeys.js","../../source/objects/compactMapAsync.js","../../source/objects/compactMap.js","../../source/objects/filter.js","../../source/objects/filterAsync.js","../../source/objects/invert.js","../../source/objects/isMatch.js","../../source/types/isRegex.js","../../source/regexps/escapeRegex.js","../../source/regexps/arrayToRegex.js","../../source/objects/omit.js","../../source/objects/pick.js","../../source/objects/size.js","../../source/objects/zip.js","../../source/strings/camelCase.js","../../source/strings/kebabCase.js","../../source/strings/snakeCase.js","../../source/strings/upperCase.js","../../source/strings/lowerCase.js","../../source/strings/range.js","../../source/strings/replace.js","../../source/strings/truncate.js","../../source/strings/sanitize.js","../../source/strings/tokenize.js","../../source/strings/typography.js","../../source/types/getTypeName.js","../../source/types/isArguments.js","../../source/types/noValue.js","../../source/types/isMap.js","../../source/types/isTypedArray.js","../../source/types/isArrayLike.js","../../source/types/isBigInt.js","../../source/types/isBoolean.js","../../source/types/isArrayBuffer.js","../../source/types/isChild.js","../../source/types/isCloneable.js","../../source/types/isDate.js","../../source/types/isEmpty.js","../../source/types/isFalse.js","../../source/types/isF32.js","../../source/types/isF64.js","../../source/types/isFloat.js","../../source/types/isI16.js","../../source/types/isI32.js","../../source/types/isI8.js","../../source/types/isIterable.js","../../source/types/isPromise.js","../../source/types/isKindAsync.js","../../source/types/isParent.js","../../source/types/isPrimitive.js","../../source/types/isRelated.js","../../source/types/isSafeInt.js","../../source/types/isSameType.js","../../source/types/isTrue.js","../../source/types/isU16.js","../../source/types/isU32.js","../../source/types/isU8.js","../../source/types/isU8C.js","../../source/types/isWeakMap.js","../../source/types/isDeno.js","../../source/types/isNode.js","../../source/types/isTruthy.js","../../source/types/isFalsy.js","../../source/utilities/ifValue.js","../../source/utilities/notEqual.js","../../source/utilities/json.js","../../source/utilities/assert.js","../../source/utilities/bindAll.js","../../source/utilities/clear.js","../../source/utilities/clone.js","../../source/utilities/compact.js","../../source/utilities/forOfCompactMapAsync.js","../../source/utilities/forOfCompactMap.js","../../source/utilities/compactMap.js","../../source/utilities/everyArg.js","../../source/utilities/forOfFilter.js","../../source/utilities/forOfFilterAsync.js","../../source/utilities/filter.js","../../source/utilities/flow.js","../../source/utilities/flowAsync.js","../../source/utilities/forMap.js","../../source/utilities/arraysToObject.js","../../source/utilities/has.js","../../source/utilities/hasDot.js","../../source/utilities/ifNotAssign.js","../../source/utilities/interval.js","../../source/utilities/merge.js","../../source/utilities/model.js","../../source/utilities/pair.js","../../source/utilities/concurrent.js","../../source/utilities/concurrentStatus.js","../../source/utilities/promise.js","../../source/utilities/propertyMatch.js","../../source/utilities/setKey.js","../../source/utilities/setValue.js","../../source/utilities/store.js","../../source/utilities/stubArray.js","../../source/utilities/stubObject.js","../../source/utilities/stubString.js","../../source/utilities/timesAsync.js","../../source/utilities/toggle.js","../../source/utilities/uid.js","../../source/utilities/virtualStorage.js","../../source/filesystem/copyFolder.js","../../source/filesystem/directory.js"],"sourcesContent":["/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invoke\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invoke(collection, property, value) {\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * (async () => {\n * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]);\n * });\n *\n * @example\n * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n * // => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n */\nexport function invokeAsync(collection, property, value) {\n\treturn mapAsyncArray(collection, async (item, index) => {\n\t\treturn item[property](value, index);\n\t});\n}\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","import {\n\treaddir, copyFile, mkdir, stat\n} from 'fs/promises';\nimport path from 'path';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nasync function copyToPath(sourceFolder, destinationFolder, file) {\n\tconst sourcePath = path.join(sourceFolder, file);\n\tconst destinationPath = path.join(destinationFolder, file);\n\tawait copyFile(sourcePath, destinationPath);\n}\nexport async function copyFolder(sourceFolder, destinationFolder) {\n\tconst files = await readdir(sourceFolder);\n\tawait eachAsyncArray(files, async (file) => {\n\t\tconst sourcePath = path.join(sourceFolder, file);\n\t\tconst filestats = await stat(sourcePath);\n\t\tif (filestats.isDirectory()) {\n\t\t\tconst folderDestination = path.join(destinationFolder, file.replace(sourceFolder, ''));\n\t\t\tawait mkdir(folderDestination, {\n\t\t\t\trecursive: true\n\t\t\t});\n\t\t\tawait copyFolder(sourcePath, folderDestination);\n\t\t} else {\n\t\t\tawait copyToPath(sourceFolder, destinationFolder, file);\n\t\t}\n\t});\n\treturn true;\n}\n\n","import path from 'path';\nimport { fileURLToPath } from 'url';\nexport function currentFile(importMeta) {\n\tif (globalThis.__filename) {\n\t\treturn __filename;\n\t}\n\treturn fileURLToPath(importMeta.url);\n}\nexport function currentPath(importMeta) {\n\tif (globalThis.__dirname) {\n\t\treturn __dirname;\n\t}\n\treturn path.dirname(fileURLToPath(importMeta.url));\n}\n"],"names":["chunk","array","size","chunked","index","forEach","item","key","push","clearArray","source","length","cloneArray","slice","isUndefined","undefined","hasLength","Boolean","isNull","hasValue","returnValue","eachArray","iteratee","thisCall","additionalArg","arrayLength","call","compactMapArray","results","arrayOriginal","returned","async","eachAsyncArray","compactMapAsyncArray","result","sign","Math","isNegative","rangeUp","start","end","step","sourceArray","position","rangeDown","range","callback","isArray","Array","isNotArray","ensureArray","flattenDeep","flat","Infinity","reflectConstruct","Reflect","construct","target","argumentsList","newTarget","args","difference","sources","differencesMap","Map","differences","currentArray","parentIndex","child","childIndex","childRoot","get","count","set","drop","amount","upTo","splice","dropRight","eachRight","thisBind","eachRightAsync","everyArray","sourceLength","everyAsyncArray","filterArray","filterAsyncArray","first","flatten","level","i","reduce","previousValue","currentValue","concat","initial","intersection","arrays","otherItem","includes","objectKeys","Object","keys","regexToPath","regexCloseBracket","emptyString","toPath","replace","split","propertyString","link","hasOwn","hasKeys","properties","pathArray","lastPath","pop","initialPathObject","hasAnyKeys","find","isPlainObject","value","constructor","toString","trim","isConstructor","isConstructorFactory","constructorName","name","isConstructorNameFactory","isTypeFactory","method","primarySource","otherSources","isBufferCall","isBuffer","isEqual","equals","sourceProperties","isMatchArray","compareArray","mathNativeMax","max","largest","last","indexFrom","mapArray","mapAsyncArray","mapRightArray","trueIndex","mapWhile","subtract","minuend","subtrahend","sortNumberAscending","numberList","sort","partition","predicate","rejected","subtractReverse","sortNumberDescening","remove","removeThese","removeBy","rest","right","floor","random","randomInt","min","arrayFrom","from","toArray","arrayLike","mapFn","thisArg","isNumberEqual","shuffle","shuffleArray","sample","sampleArray","used","mathNativeMin","smallest","getNumberInsertIndex","insertIndex","take","endIndex","takeRight","indexRight","onlyUnique","indexOf","sortUnique","unique","isSorted","filter","union","untilFalseArray","untilTrueArray","whileCompactMap","whileEachArray","whileMapArray","without","sourcesSet","Set","has","xor","xorMap","xored","zip","map","unZip","arraySet","ensureBuffer","Buffer","alloc","clearBuffer","fill","countBy","collection","object","countKey","propertyName","countWithoutKey","findIndexCache","element","indexMatch","findIndex","id","findItem","sortCollectionDescendingFilter","previous","next","ifMatch","previousKey","nextKey","sortCollectionDescending","sortObjectsAlphabetically","localeCompare","sortCollectionAlphabetically","sortCollectionAscendingFilter","sortCollectionAscending","getHighest","getLowest","groupBy","sortedObject","indexBy","invoke","property","invokeAsync","isNumberCall","isNumber","isNotNumber","isString","String","isNotString","pluckObject","targets","pluck","sortObjectsAlphabeticallyReverse","sortCollectionAlphabeticallyReverse","getFileExtension","substring","lastIndexOf","getFilename","regexTestFactory","regexType","test","isFileCSS","isFileHTML","isFileJS","isFileJSON","after","callable","point","ary","before","objectAssign","assign","eachAsyncObject","propertyCount","eachObject","objectKeysArray","forEachAsync","values","valuesLength","isSetCall","isSet","forOf","isGeneratorCall","isGenerator","forOfAsync","generatorArgs","isFunction","Function","isAsyncCall","isAsync","generateLoop","arrayLoop","arrayLoopAsync","objectLoop","objectLoopAsync","forOfLoop","forOfLoopAsync","argument1","argument2","argument3","isIterateeAsync","each","Chain","methods","this","addChainMethod","thisChain","methodName","setValue","done","chain","config","curry","arity","curries","curried","curryArgs","curryRight","unshift","truth","stubTrue","falsy","stubFalse","noop","times","timesMap","Timers","list","clearTimeout","delete","time","currentThis","setTimeout","clear","timers","timer","clearTimers","applyNative","apply","thisArgument","debounce","debounced","bind","ifInvoke","inAsync","firstArgument","inSync","negate","nthArg","once","mapAsyncObject","thisObject","mapObject","original","getType","cloneType","sourceType","forOfMap","resultsObject","methodPush","add","methodPushBound","methodSet","forOfMapAsync","resultsGenerator","over","iteratees","everyAsyncObject","everyObject","forOfEvery","forOfEveryAsync","every","overEvery","predicates","arg","reArg","indexes","throttle","throttled","shouldThrottle","wrap","wrapper","functionPrototype","prototype","cacheNativeMethod","getPropNames","getOwnPropertyNames","getPropDesc","getOwnPropertyDescriptor","defProp","defineProperty","hasProp","hasOwnProperty","isSame","is","augend","addend","deduct","divide","increment","multiply","calcProgress","total","currentAmount","randomFloat","remainder","subtractAll","a","b","sumAll","isNumberInRange","isNumberNotInRange","isPositive","isZero","objectEntries","entries","getEntries","compactKeys","compactedKeys","compactMapAsyncObject","compactMapObject","filterObject","filterAsyncObject","invert","isMatchObject","sourceKeys","targetKeys","isRegexCall","isRegex","escapeRegexRegex","escapeRegex","arrayToRegex","makeSafe","RegExp","join","omit","blacklist","blacklistRegex","numberToString","pick","whitelist","objectSize","zipObject","zipedObject","unZipObject","unZippedKeys","normalizeCase","camelCase","toLowerCase","toUpperCase","space","kebabCase","snakeCase","upperCase","lowerCase","insertInRange","string","text","rightString","chunkString","match","initialString","restString","replaceList","words","truncate","maxLength","stringLength","breakAll","breakAllLength","truncateDown","truncateRight","truncateUp","rawURLDecodeRegex","andRegex","lessThanRegex","moreThanRegex","doubleQuoteRegex","rawURLDecode","decodeURIComponent","htmlEntities","sanitize","tokenizeRegEx","wordsRegEx","tokenize","getWords","upperFirstLetter","upperFirst","upperFirstOnly","upperFirstAll","upperFirstOnlyAll","getTypeName","isArguments","noValue","isMapCall","isMap","typedArrayRegex","arrayConstructorName","isTypedArray","isArrayLike","strictFlag","isBigIntCall","isBigInt","isBooleanCall","isBoolean","isArrayBufferCall","isArrayBuffer","isChild","sourceChild","targetParent","constructorNames","isCloneable","isDateCall","isDate","isEmpty","isFalse","isF32Call","isF32","isF64Call","isF64","isInteger","Number","isFloat","isI16Call","isI16","isI32Call","isI32","isI8Call","isI8","isIterable","Symbol","iterator","isPromise","Promise","isKindAsync","isParent","sourceParent","targetChild","isPrimitive","type","isRelated","targetOne","targetTwo","isSafeInteger","isSafeInt","isSameType","other","otherType","isTrue","isU16Call","isU16","isU32Call","isU32","isU8Call","isU8","isU8CCall","isU8C","isWeakMapCall","isWeakMap","isDeno","globalThis","Deno","isNodejs","process","versions","node","isTruthy","returnIfTrue","isFalsy","ifValue","optional","notEqual","jsonNative","JSON","jsonParse","reviver","parse","stringify","createAssertError","expected","localOptions","options","errorTitle","title","file","Error","assertAsync","sourceArg","assert","bindAll","bindThis","targetAssign","structuredCloneSafe","structuredClone","clone","compact","sourceKeysLength","targetObject","keyName","forOfCompactMapAsync","forOfCompactMap","compactMap","everyArg","forOfFilter","forOfFilterAsync","returnFlow","flow","flowRight","flowAsync","flowAsyncRight","forMap","cloned","methodBound","arraysToObject","search","hasDot","ifNotAssign","rootObject","equalThis","Intervals","clearInterval","setInterval","intervals","interval","clearIntervals","merge","currentSource","sourceItem","sourceKey","Model","static","modelName","modelValue","models","model","pair","concurrent","queue","all","concurrentStatus","allSettled","promise","propertyMatch","compared","setKey","Store","data","Proxy","proxySource","console","log","stubArray","stubObject","stubString","timesAsync","timesMapAsync","toggle","on","off","UniqID","totalActive","freed","totalFree","shift","free","isActive","shouldReset","reset","uniqID","VirtualStorage","initialObject","items","getItem","setItem","removeItem","virtualStorage","copyFolder","sourceFolder","destinationFolder","files","readdir","sourcePath","path","stat","isDirectory","folderDestination","mkdir","recursive","destinationPath","copyFile","copyToPath","currentFile","importMeta","__filename","fileURLToPath","url","currentPath","__dirname","dirname"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../../source/arrays/chunk.js","../../source/arrays/clear.js","../../source/arrays/clone.js","../../source/types/isUndefined.js","../../source/utilities/hasLength.js","../../source/types/isNull.js","../../source/types/hasValue.js","../../source/utilities/returnValue.js","../../source/arrays/each.js","../../source/arrays/compactMap.js","../../source/arrays/eachAsync.js","../../source/arrays/compactMapAsync.js","../../source/numbers/isNegative.js","../../source/arrays/range.js","../../source/utilities/forEach.js","../../source/types/isArray.js","../../source/arrays/ensure.js","../../source/arrays/flattenDeep.js","../../source/classes/construct.js","../../source/arrays/difference.js","../../source/arrays/drop.js","../../source/arrays/dropRight.js","../../source/arrays/eachRight.js","../../source/arrays/eachRightAsync.js","../../source/arrays/every.js","../../source/arrays/everyAsync.js","../../source/arrays/filter.js","../../source/arrays/filterAsync.js","../../source/arrays/first.js","../../source/arrays/flatten.js","../../source/arrays/initial.js","../../source/arrays/intersect.js","../../source/arrays/invoke.js","../../source/objects/keys.js","../../source/utilities/toPath.js","../../source/utilities/get.js","../../source/objects/hasKeys.js","../../source/types/isPlainObject.js","../../source/types/isConstructor.js","../../source/types/isTypeFactory.js","../../source/types/isBuffer.js","../../source/utilities/isEqual.js","../../source/arrays/isMatch.js","../../source/arrays/largest.js","../../source/arrays/last.js","../../source/arrays/map.js","../../source/arrays/mapAsync.js","../../source/arrays/mapRight.js","../../source/arrays/mapWhile.js","../../source/math/subtract.js","../../source/arrays/sortNumberAscending.js","../../source/arrays/partition.js","../../source/math/subtractReverse.js","../../source/arrays/sortNumberDescening.js","../../source/arrays/remove.js","../../source/arrays/rest.js","../../source/arrays/right.js","../../source/math/randomInt.js","../../source/internal/array.js","../../source/numbers/isNumberEqual.js","../../source/arrays/shuffle.js","../../source/arrays/sample.js","../../source/arrays/smallest.js","../../source/arrays/getNumberInsertIndex.js","../../source/arrays/take.js","../../source/arrays/takeRight.js","../../source/arrays/unique.js","../../source/arrays/union.js","../../source/arrays/untilFalse.js","../../source/arrays/untilTrue.js","../../source/arrays/whileCompactMap.js","../../source/arrays/whileEach.js","../../source/arrays/whileMap.js","../../source/arrays/without.js","../../source/arrays/xor.js","../../source/arrays/zip.js","../../source/buffers/ensure.js","../../source/buffers/clear.js","../../source/collection/countBy.js","../../source/collection/countKey.js","../../source/collection/countWithoutKey.js","../../source/collection/findIndexCache.js","../../source/collection/findIndex.js","../../source/collection/findItem.js","../../source/collection/sortCollectionDescending.js","../../source/collection/sortCollectionAlphabetically.js","../../source/collection/sortCollectionAscending.js","../../source/collection/getHighest.js","../../source/collection/getLowest.js","../../source/collection/groupBy.js","../../source/collection/indexBy.js","../../source/collection/invoke.js","../../source/collection/invokeAsync.js","../../source/types/isNumber.js","../../source/types/isString.js","../../source/objects/pluckObject.js","../../source/collection/pluck.js","../../source/collection/sortCollectionAlphabeticallyReverse.js","../../source/files/getExtension.js","../../source/files/getFilename.js","../../source/internal/regexTestFactory.js","../../source/files/isFileCSS.js","../../source/files/isFileHTML.js","../../source/files/isFileJS.js","../../source/files/isFileJSON.js","../../source/functions/after.js","../../source/functions/ary.js","../../source/functions/before.js","../../source/objects/assign.js","../../source/objects/eachAsync.js","../../source/objects/each.js","../../source/utilities/forEachAsync.js","../../source/types/isSet.js","../../source/utilities/forOf.js","../../source/types/isGenerator.js","../../source/utilities/forOfAsync.js","../../source/types/isFunction.js","../../source/types/isAsync.js","../../source/utilities/generateLoop.js","../../source/utilities/each.js","../../source/functions/chain.js","../../source/functions/curry.js","../../source/functions/curryRight.js","../../source/utilities/stubTrue.js","../../source/utilities/stubFalse.js","../../source/utilities/noop.js","../../source/utilities/times.js","../../source/utilities/timer.js","../../source/internal/apply.js","../../source/functions/debounce.js","../../source/functions/ifInvoke.js","../../source/functions/inAsync.js","../../source/functions/inSync.js","../../source/functions/negate.js","../../source/functions/nthArg.js","../../source/functions/once.js","../../source/objects/mapAsync.js","../../source/objects/map.js","../../source/types/getType.js","../../source/types/cloneType.js","../../source/utilities/forOfMap.js","../../source/utilities/forOfMapAsync.js","../../source/utilities/map.js","../../source/functions/over.js","../../source/objects/everyAsync.js","../../source/objects/every.js","../../source/utilities/forOfEvery.js","../../source/utilities/forOfEveryAsync.js","../../source/utilities/every.js","../../source/functions/overEvery.js","../../source/functions/rearged.js","../../source/functions/throttle.js","../../source/functions/wrap.js","../../source/utilities/cacheNativeMethod.js","../../source/internal/object.js","../../source/internal/isSame.js","../../source/math/add.js","../../source/math/deduct.js","../../source/math/divide.js","../../source/math/increment.js","../../source/math/multiple.js","../../source/math/progress.js","../../source/math/randomFloat.js","../../source/math/remainder.js","../../source/math/subtractAll.js","../../source/math/sumAll.js","../../source/numbers/isNumberInRange.js","../../source/numbers/isNumberNotInRange.js","../../source/numbers/isPositive.js","../../source/numbers/isZero.js","../../source/objects/getEntries.js","../../source/objects/compactKeys.js","../../source/objects/compactMapAsync.js","../../source/objects/compactMap.js","../../source/objects/filter.js","../../source/objects/filterAsync.js","../../source/objects/invert.js","../../source/objects/isMatch.js","../../source/types/isRegex.js","../../source/regexps/escapeRegex.js","../../source/regexps/arrayToRegex.js","../../source/objects/omit.js","../../source/objects/pick.js","../../source/objects/size.js","../../source/objects/zip.js","../../source/strings/camelCase.js","../../source/strings/kebabCase.js","../../source/strings/snakeCase.js","../../source/strings/upperCase.js","../../source/strings/lowerCase.js","../../source/strings/range.js","../../source/strings/replace.js","../../source/strings/truncate.js","../../source/strings/sanitize.js","../../source/strings/tokenize.js","../../source/strings/typography.js","../../source/types/getTypeName.js","../../source/types/isArguments.js","../../source/types/noValue.js","../../source/types/isMap.js","../../source/types/isTypedArray.js","../../source/types/isArrayLike.js","../../source/types/isBigInt.js","../../source/types/isBoolean.js","../../source/types/isArrayBuffer.js","../../source/types/isChild.js","../../source/types/isCloneable.js","../../source/types/isDate.js","../../source/types/isEmpty.js","../../source/types/isFalse.js","../../source/types/isF32.js","../../source/types/isF64.js","../../source/types/isFloat.js","../../source/types/isI16.js","../../source/types/isI32.js","../../source/types/isI8.js","../../source/types/isIterable.js","../../source/types/isPromise.js","../../source/types/isKindAsync.js","../../source/types/isParent.js","../../source/types/isPrimitive.js","../../source/types/isRelated.js","../../source/types/isSafeInt.js","../../source/types/isSameType.js","../../source/types/isTrue.js","../../source/types/isU16.js","../../source/types/isU32.js","../../source/types/isU8.js","../../source/types/isU8C.js","../../source/types/isWeakMap.js","../../source/types/isDeno.js","../../source/types/isNode.js","../../source/types/isTruthy.js","../../source/types/isFalsy.js","../../source/utilities/ifValue.js","../../source/utilities/notEqual.js","../../source/utilities/json.js","../../source/utilities/assert.js","../../source/utilities/bindAll.js","../../source/utilities/clear.js","../../source/utilities/clone.js","../../source/utilities/compact.js","../../source/utilities/forOfCompactMapAsync.js","../../source/utilities/forOfCompactMap.js","../../source/utilities/compactMap.js","../../source/utilities/everyArg.js","../../source/utilities/forOfFilter.js","../../source/utilities/forOfFilterAsync.js","../../source/utilities/filter.js","../../source/utilities/flow.js","../../source/utilities/flowAsync.js","../../source/utilities/forMap.js","../../source/utilities/arraysToObject.js","../../source/utilities/has.js","../../source/utilities/hasDot.js","../../source/utilities/ifNotAssign.js","../../source/utilities/interval.js","../../source/utilities/merge.js","../../source/utilities/model.js","../../source/utilities/pair.js","../../source/utilities/concurrent.js","../../source/utilities/concurrentStatus.js","../../source/utilities/promise.js","../../source/utilities/propertyMatch.js","../../source/utilities/setKey.js","../../source/utilities/setValue.js","../../source/utilities/store.js","../../source/utilities/stubArray.js","../../source/utilities/stubObject.js","../../source/utilities/stubString.js","../../source/utilities/timesAsync.js","../../source/utilities/toggle.js","../../source/utilities/uid.js","../../source/utilities/virtualStorage.js","../../source/filesystem/copyFolder.js","../../source/filesystem/directory.js"],"sourcesContent":["/**\n * Chunks an array according to a user defined number.\n *\n * @function chunk\n * @category Array\n * @type {Function}\n * @param {Array} array - Array to be chunked.\n * @param {Number} size - Number which determines the size of each chunk.\n * @returns {Array} - A chunked version of the source array.\n *\n * @example\n * import { chunk, assert } from '@universalweb/acid';\n * assert(chunk([1,2,3], 1), [[1],[2],[3]]);\n */\nexport function chunk(array, size = 1) {\n\tconst chunked = [];\n\tlet index = 0;\n\tarray.forEach((item, key) => {\n\t\tif (!(key % size)) {\n\t\t\tchunked.push([]);\n\t\t\tif (key) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\tchunked[index].push(item);\n\t});\n\treturn chunked;\n}\n","/**\n * Clears the values out of an array.\n *\n * @function clearArray\n * @category Array\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearArray, assert } from '@universalweb/acid';\n * assert(clearArray([1,'B', 'Cat']), []);\n */\nexport function clearArray(source) {\n\tsource.length = 0;\n\treturn source;\n}\n\n","/**\n * Clone an array (uses .slice()) and assign the source arrays values to the new array.\n *\n * @function cloneArray\n * @category Array\n * @type {Function}\n * @param {Array} source - The array to be quick cloned.\n * @returns {Array} - The newly cloned array with assigned items.\n *\n * @example\n * import { cloneArray, assert } from '@universalweb/acid';\n * assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);\n */\nexport function cloneArray(source) {\n\treturn source.slice();\n}\n\n","/** Checks if the value is undefined.\n *\n * @function isUndefined\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isUndefined, assert } from '@universalweb/acid';\n * assert(isUndefined(undefined), true);\n */\nexport function isUndefined(source) {\n\treturn source === undefined;\n}\n","import { isUndefined } from '../types/isUndefined.js';\n/**\n * Checks if the value has length greater than 0.\n *\n * @function hasLength\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasLength, assert } from '@universalweb/acid';\n * assert(hasLength([1]), true);\n */\nexport function hasLength(source) {\n\treturn Boolean(source.length);\n}\n","import { hasLength } from '../utilities/hasLength.js';\n/**\n * Checks if the value is null.\n *\n * @function isNull\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNull, assert } from '@universalweb/acid';\n * assert(isNull(null), true);\n */\nexport function isNull(source) {\n\treturn source === null;\n}\n","import { isUndefined } from './isUndefined.js';\nimport { isNull } from './isNull.js';\n/**\n * Checks if the value is not null or undefined.\n *\n * @function hasValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasValue, assert } from '@universalweb/acid';\n * assert(hasValue(1), true);\n */\nexport function hasValue(source) {\n\treturn !isUndefined(source) && !isNull(source);\n}\n","/**\n * A simple function which returns the value it's given.\n *\n * @function returnValue\n * @category utility\n * @param {*} source - The source object.\n * @returns {source} The source object.\n */\nexport function returnValue(source) {\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array.\n *\n * @function eachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachArray, assert } from '@universalweb/acid';\n * const list = [];\n * eachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function eachArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\titeratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array = []} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapArray, assert } from '@universalweb/acid';\n * assert(compactMapArray([null, 2, 3], (item) => {\n * return item;\n * }), [2, 3]);\n */\nexport function compactMapArray(source, iteratee = returnValue, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tconst returned = iteratee(item, index, results, arrayOriginal, arrayLength, thisCall, additionalArg);\n\t\t\tif (hasValue(returned)) {\n\t\t\t\tresults.push(returned);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n}\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - Returns source the originally given array.\n *\n * @example\n * import { eachAsyncArray, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncArray([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [1, 2, 3]);\n */\nexport async function eachAsyncArray(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee.call(thisCall, source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tawait iteratee(source[index], index, source, arrayLength, additionalArg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { eachAsyncArray } from './eachAsync.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.\n *\n * @function compactMapAsyncArray\n * @type {Function}\n * @category array\n * @async\n * @param {Array} source - Array to be compacted.\n * @param {Function} iteratee - Iteratee to be performed on array.\n * @returns {Array} - Array values after being put through an iterator.\n *\n * @example\n * import { compactMapAsync, assert } from '@universalweb/acid';\n * assert(await compactMapAsync([1, 2, 3, null], async (item) => {\n * return item;\n * }), [1, 2, 3]);\n */\nexport async function compactMapAsyncArray(source, iteratee = returnValue) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tconst result = await iteratee(item, index, results, arrayLength);\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isNegative\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNegative, assert } from '@universalweb/acid';\n * assert(isNegative(-1), true);\n */\nconst { sign } = Math;\nexport function isNegative(source) {\n\treturn sign(source) === -1;\n}\n","import { isNegative } from '../numbers/isNegative.js';\nexport function rangeUp(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position < end) {\n\t\tsourceArray.push(position);\n\t\tposition += step;\n\t}\n\treturn sourceArray;\n}\nexport function rangeDown(start, end, step, sourceArray) {\n\tlet position = start;\n\twhile (position > end) {\n\t\tsourceArray.push(position);\n\t\tposition -= step;\n\t}\n\treturn sourceArray;\n}\n/**\n * Create a numbered list of integers.\n *\n * @function range\n * @category array\n * @type {Function}\n * @param {Number} start - Value which determines the start of the range.\n * @param {Number} end - Value which determines the end of the range.\n * @param {Number} step - Value used to step between integers.\n * @returns {Array} - An array of integers.\n *\n * @example\n * import { range, assert } from '@universalweb/acid';\n * assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n */\nexport function range(start, end, step = 1, sourceArray = []) {\n\tif (isNegative(step)) {\n\t\treturn sourceArray;\n\t}\n\tif (start < end) {\n\t\treturn rangeUp(start, end, step, sourceArray);\n\t} else {\n\t\treturn rangeDown(start, end, step, sourceArray);\n\t}\n}\n","export function forEach(source, callback) {\n\tsource.forEach(callback);\n\treturn source;\n}\n","/**\n * Checks if the value is an array. This references Array.isArray.\n *\n * @function isArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArray, assert } from '@universalweb/acid';\n * assert(isArray([]), true);\n * assert(isArray(2), false);\n */\nexport const isArray = Array.isArray;\n/**\n * Checks if the value is not an array. This references Array.isArray.\n *\n * @function isNotArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotArray, assert } from '@universalweb/acid';\n * assert(isNotArray([]), false);\n * assert(isNotArray(2), true);\n */\nexport function isNotArray(source) {\n\treturn !isArray(source);\n}\n","import { isArray } from '../types/isArray.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.\n *\n * @function ensureArray\n * @category array\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isArray, ensureArray, assert } from '@universalweb/acid';\n * assert(isArray(ensureArray('test')), ['test']);\n */\nexport function ensureArray(source) {\n\treturn (isArray(source) && source) || (hasValue(source) && [source]) || [];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array to a single level.\n *\n * @function flattenDeep\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { flattenDeep, assert } from '@universalweb/acid';\n * assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n */\nexport function flattenDeep(source) {\n\treturn source.flat(Infinity);\n}\n\n","/**\n * A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined\n * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.\n *\n * @function construct\n * @category class\n * @param {Function} target - The target function or class.\n * @param {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.\n * @param {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.\n * @returns {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n *\n * @example\n * import { construct, assert } from '@universalweb/acid';\n * class test {\n * \tconstructor(a) {\n * \t\treturn 1;\n * \t}\n * }\n * const newClass = construct(test, [1]);\n * assert(test, 1);\n */\nconst reflectConstruct = Reflect.construct;\nimport { isArray } from '../types/isArray.js';\nexport function construct(target, argumentsList = [], newTarget) {\n\tconst args = (isArray(argumentsList)) ? argumentsList : [argumentsList];\n\tif (newTarget) {\n\t\treturn reflectConstruct(target, args, newTarget);\n\t}\n\treturn reflectConstruct(target, args);\n}\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { flattenDeep } from './flattenDeep.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.\n *\n * @function difference\n * @category array\n * @type {Function}\n * @param {Array} sources - Source array.\n * @param {...Array} compare - Array(s) source array is compared against.\n * @returns {Array} - An array which contains the differences between the source and compare array.\n *\n * @example\n * import { difference, assert } from '@universalweb/acid';\n * assert(difference([1, 2, 3], [1, 2]), [3]);\n */\nexport function difference(...sources) {\n\tconst differencesMap = construct(Map);\n\tconst differences = [];\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = differencesMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\tdifferencesMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(differencesMap, (item) => {\n\t\tif (item.count === 1 && item.parentIndex === 0) {\n\t\t\tdifferences.push(item.child);\n\t\t}\n\t});\n\treturn differences;\n}\n\n","/**\n * Removes all items from an array after a specified index.\n *\n * @function drop\n * @category array\n * @type {Function}\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed after a user defined index.\n *\n * @example\n * import { drop, assert } from '@universalweb/acid';\n * assert(drop([1, 2, 3]), [2, 3]);\n * assert(drop([1, 2, 3], 2), [3]);\n */\nexport function drop(array, amount = 1, upTo = array.length) {\n\treturn array.splice(amount, upTo);\n}\n","import { drop } from './drop.js';\n/**\n * Removes all items from an array before a specified index.\n *\n * @function dropRight\n * @type {Function}\n * @category array\n * @param {Array} array - Source array.\n * @param {Number} amount - Amount of items to drop from the array.\n * @param {Number} [upTo = array.length] - Index to stop at.\n * @returns {Array} - An array with all values removed before a user defined index.\n *\n * @example\n * import { dropRight, assert } from '@universalweb/acid';\n * assert(dropRight([1, 2, 3]), [1, 2]);\n * assert(dropRight([1, 2, 3], 2), [1]);\n */\nexport const dropRight = (array, amount = 1, upTo = array.length) => {\n\treturn drop(array, 0, upTo - amount);\n};\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array in reverse.\n *\n * @function eachRight\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { eachRight, assert } from '@universalweb/acid';\n * const tempList = [];\n * eachRight([1, 2, 3], (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport function eachRight(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\titeratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn source;\n}\n\n","/**\n * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.\n *\n * @function eachRightAsync\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { eachRightAsync, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachRightAsync([1, 2, 3], async (item) => {\n * tempList.push(item);\n * });\n * assert(tempList, [3, 2, 1]);\n */\nexport async function eachRightAsync(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1; index >= 0; index--) {\n\t\tawait iteratee(source[index], index, source, arrayLength);\n\t}\n\treturn source;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyArray, assert } from '@universalweb/acid';\n * assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport function everyArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array while the iteratee returns true else the loop exits & returns false.\n *\n * @function everyAsyncArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncArray, assert } from '@universalweb/acid';\n * assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), false);\n * assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => {\n * return item;\n * }), true);\n */\nexport async function everyAsyncArray(source, iteratee, thisBind) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (await iteratee(source[index], index, source, sourceLength, thisBind) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterArray, assert } from '@universalweb/acid';\n * assert(filterArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport function filterArray(source, iteratee, results = [], thisBind) {\n\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\tif (iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachAsyncArray } from './eachAsync.js';\n/**\n * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncArray\n * @category array\n * @type {Function}\n * @category array\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { filterAsyncArray, assert } from '@universalweb/acid';\n * assert(filterAsyncArray([false, true, true], (item) => {\n * return item;\n * }), [true, true]);\n */\nexport async function filterAsyncArray(source, iteratee, results = [], thisBind) {\n\tawait eachAsyncArray(source, async (item, index, arrayOriginal, arrayLength) => {\n\t\tif (await iteratee(item, index, results, arrayOriginal, arrayLength, thisBind) === true) {\n\t\t\tresults.push(item);\n\t\t}\n\t});\n\treturn results;\n}\n\n","/**\n * Takes the first or multiple items from an array.\n *\n * @function first\n * @type {Function}\n * @category array\n * @param {Array} array - Array to extract from.\n * @param {Number} upTo - Number which determines how many items after the first item are extracted from the array.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { first, assert } from '@universalweb/acid';\n * assert(first([1, 2, 3]), 1);\n */\nexport function first(array, upTo) {\n\treturn (upTo) ? array.slice(0, upTo) : array[0];\n}\n\n","import { ensureArray } from './ensure.js';\n/**\n * Flattens an array up to the provided level.\n *\n * @function flatten\n * @type {Function}\n * @category array\n * @param {Array} source - Array to flatten.\n * @param {Number} [level = 1] - Number which determines how deep the array nest can be.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { flatten, assert } from '@universalweb/acid';\n * assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n */\nexport function flatten(source, level = 1) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tlet sourceArray = source;\n\tfor (let i = 0; i < level; i++) {\n\t\tsourceArray = sourceArray.reduce((previousValue, currentValue) => {\n\t\t\treturn previousValue.concat(ensureArray(currentValue));\n\t\t}, []);\n\t}\n\treturn sourceArray;\n}\n\n","/**\n * Takes all but the last item in the array.\n *\n * @function initial\n * @category array\n * @type {Function}\n * @param {Array} array - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { initial, assert } from '@universalweb/acid';\n * assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n */\nexport function initial(array) {\n\treturn array.slice(0, array.length - 1);\n}\n\n","import { compactMapArray } from './compactMap.js';\nimport { everyArray } from './every.js';\n// Add intersectionBy & intersectionWith\n/**\n * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory))\n * of the array and the input array(s).\n *\n * @function intersection\n * @param {Array} array - Array to compare other arrays to.\n * @param {...Array} arrays - A variable number of arrays.\n * @category array\n * @returns {Array} - The new array of unique values shared by all of the arrays.\n *\n * @example\n * import { intersection, assert } from '@universalweb/acid';\n * assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n */\nexport function intersection(array, ...arrays) {\n\treturn compactMapArray(array, (item) => {\n\t\tconst shouldReturn = everyArray(arrays, (otherItem) => {\n\t\t\treturn otherItem.includes(item);\n\t\t});\n\t\tif (shouldReturn) {\n\t\t\treturn item;\n\t\t}\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Invoke each function in the given array.\n *\n * @function invokeArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { invokeArray, assert } from '@universalweb/acid';\n * function test(arg){\n * \treturn [this, arg];\n * }\n * const results = invokeArray([test], 1, test);\n * assert(results, [test, 1]);\n */\nexport function invokeArray(source, arg, thisCall) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst arrayLength = source.length;\n\tif (hasValue(thisCall)) {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index].call(thisCall, arg);\n\t\t}\n\t} else {\n\t\tfor (let index = 0; index < arrayLength; index++) {\n\t\t\tsource[index](arg);\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Get object's keys.\n *\n * @function keys\n * @category object\n * @param {*} source - The source object to pull keys from.\n * @returns {Array} - Array of keys.\n *\n * @example\n * keys({a: 1, b: 2});\n * // => ['a', 'b']\n*/\nconst objectKeys = Object.keys;\nexport function keys(source) {\n\tif (source) {\n\t\treturn objectKeys(source);\n\t}\n}\n","const regexToPath = /\\.|\\[/;\nconst regexCloseBracket = /]/g;\nconst emptyString = '';\n/**\n * Breaks up string into object chain list.\n *\n * @function toPath\n * @type {Function}\n * @category utility\n * @param {String} source - String to be broken up.\n * @returns {Array} - Array used to go through object chain.\n *\n * @example\n * import { toPath, assert } from '@universalweb/acid';\n * assert(toPath('post.like[2]'), ['post', 'like', '2']);\n */\nexport function toPath(source) {\n\treturn source.replace(regexCloseBracket, emptyString).split(regexToPath);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { isArray } from '../types/isArray.js';\nimport { toPath } from './toPath.js';\nimport { everyArray } from '../arrays/every.js';\n/**\n * Returns property on an object.\n *\n * @function get\n * @category utility\n * @type {Function}\n * @param {String} propertyString - String used to retrieve properties.\n * @param {Object} target - Object which has a property retrieved from it.\n * @returns {Object} - Returns property from the given object.\n *\n * @example\n * import { get, assert } from '@universalweb/acid';\n * const objectTarget = {\n * post: {\n * like: ['a','b','c']\n * }\n * };\n * assert(get('post.like[2]', objectTarget), 'c');\n */\nexport function get(propertyString, target) {\n\tif (!target) {\n\t\treturn false;\n\t}\n\tlet link = target;\n\tconst pathArray = (isArray(propertyString)) ? propertyString : toPath(propertyString);\n\teveryArray(pathArray, (item) => {\n\t\tlink = link[item];\n\t\treturn hasValue(link);\n\t});\n\treturn link;\n}\n\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\nimport { toPath } from '../utilities/toPath.js';\nimport { get } from '../utilities/get.js';\nconst hasOwn = Object.hasOwn;\n/**\n * Checks to see if an object has all of the given property names.\n *\n * @function hasKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {...String} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasKeys, assert } from '@universalweb/acid';\n * assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);\n */\nexport function hasKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn everyArray(properties, (item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t});\n}\n/**\n * Checks to see if an object has any of the given property names.\n *\n * @function hasAnyKeys\n * @category object\n * @type {Function}\n * @param {Object} source - Source object to check for keys.\n * @param {Array} properties - List of strings to check.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasAnyKeys, assert } from '@universalweb/acid';\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true);\n * assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);\n */\nexport function hasAnyKeys(source, ...properties) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn Boolean(properties.find((item) => {\n\t\tconst pathArray = toPath(item);\n\t\tif (pathArray.length === 1) {\n\t\t\treturn hasOwn(source, item);\n\t\t} else {\n\t\t\tconst lastPath = pathArray.pop();\n\t\t\tconst initialPathObject = get(pathArray, source);\n\t\t\tif (initialPathObject) {\n\t\t\t\treturn hasOwn(initialPathObject, lastPath);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}));\n}\n\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is a plain object.\n *\n * @function isPlainObject\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPlainObject } from '@universalweb/acid';\n * isPlainObject({});\n * // => true\n */\nexport const isPlainObject = (value) => {\n\tif (hasValue(value)) {\n\t\treturn value.constructor.toString().trim()\n\t\t\t.slice(9, 16) === 'Object(';\n\t}\n\treturn false;\n};\n","import { hasValue } from './hasValue.js';\n/**\n * Checks to see if the constructor is that of a native object.\n *\n * @function isConstructor\n * @category type\n * @param {Object} target - The object to be checked.\n * @param {Object} source - The source constructor object.\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { isConstructor, assert } from '@universalweb/acid';\n * assert(isConstructor(2, Number), true);\n */\nexport function isConstructor(target, source) {\n\treturn target?.constructor === source || false;\n}\nexport function isConstructorFactory(source) {\n\treturn (target) => {\n\t\treturn isConstructor(target, source);\n\t};\n}\nexport function constructorName(source) {\n\treturn source?.constructor?.name;\n}\nexport function isConstructorNameFactory(source) {\n\treturn (target) => {\n\t\treturn constructorName(target) === source || false;\n\t};\n}\n","import { everyArray } from '../arrays/every.js';\nexport function isTypeFactory(method) {\n\treturn function(primarySource, ...otherSources) {\n\t\tif (otherSources) {\n\t\t\treturn method(primarySource) && everyArray(otherSources, method);\n\t\t}\n\t\treturn method(primarySource);\n\t};\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Buffer.\n *\n * @function isBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(Buffer.from('test')), true);\n */\nexport const isBufferCall = isConstructorNameFactory('Buffer');\nexport const isBuffer = isTypeFactory(isBufferCall);\n","import { hasKeys } from '../objects/hasKeys.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isBuffer } from '../types/isBuffer.js';\n/**\n * Performs a deep comparison between two objects & determines if the value is the same using strict comparison.\n *\n * @function isEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEqual, assert } from '@universalweb/acid';\n * assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);\n */\n// Add map & buffer Support - Review required for performance and support for more types\nexport const isEqual = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t} else if (isBuffer(source)) {\n\t\treturn source.equals(target);\n\t} else if (source.toString() === target.toString()) {\n\t\tif (isPlainObject(source)) {\n\t\t\tconst sourceProperties = keys(source);\n\t\t\tif (hasKeys(target, sourceProperties)) {\n\t\t\t\treturn everyArray(sourceProperties, (key) => {\n\t\t\t\t\treturn isEqual(source[key], target[key]);\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (isArray(source)) {\n\t\t\tif (source.length === target.length) {\n\t\t\t\treturn everyArray(source, (item, index) => {\n\t\t\t\t\treturn isEqual(item, target[index]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n","import { everyArray } from './every.js';\nimport { isEqual } from '../utilities/isEqual.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchArray\n * @type {Function}\n * @category array\n * @param {Array} source - Source object.\n * @param {Array} compareArray - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMatchArray, assert } from '@universalweb/acid';\n * assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n */\nexport function isMatchArray(source, compareArray) {\n\tif (source.length === compareArray.length) {\n\t\treturn everyArray(source, (item, index) => {\n\t\t\treturn isEqual(compareArray[index], item);\n\t\t});\n\t}\n\treturn false;\n}\n\n","const mathNativeMax = Math.max;\n/**\n * Plucks the largest value from an array.\n *\n * @function largest\n * @type {Function}\n * @category array\n * @param {Array} array - Array from which largest number is taken.\n * @returns {Number} - The largest number.\n *\n * @example\n * import { largest, assert } from '@universalweb/acid';\n * assert(largest([1,2,3]), 3);\n */\nexport function largest(array) {\n\treturn mathNativeMax(...array);\n}\n\n","/**\n * Extracts item(s) from an array starting from the last item in the array.\n *\n * @function last\n * @type {Function}\n * @category array\n * @param {Array} array - Array to have items extracted from.\n * @param {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.\n * @returns {Array} - Items from the array.\n *\n * @example\n * import { last, assert } from '@universalweb/acid';\n * assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);\n */\nexport function last(array, indexFrom) {\n\tconst arrayLength = array.length;\n\treturn (indexFrom) ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1];\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapArray, assert } from '@universalweb/acid';\n * assert(mapArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport function mapArray(source, iteratee, results = [], thisCall, additionalArg) {\n\tif (hasValue(thisCall)) {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee.call(thisCall, item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(source, (item, index, arrayOriginal, arrayLength) => {\n\t\t\tresults[index] = iteratee(item, index, results, arrayOriginal, arrayLength, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","import { eachAsyncArray } from './eachAsync.js';\n/**\n * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n *\n * @function mapAsyncArray\n * @category array\n * @type {Function}\n * @async\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapAsyncArray, assert } from '@universalweb/acid';\n * assert(await mapAsyncArray([1, 2, 3], async (item) => {\n * return item * 2;\n * }), [2, 4, 6]);\n */\nexport async function mapAsyncArray(source, iteratee) {\n\tconst results = [];\n\tawait eachAsyncArray(source, async (item, index, arrayLength) => {\n\t\tresults[index] = await iteratee(item, index, arrayLength);\n\t});\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.\n *\n * @function mapRightArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array of the same calling array's type.\n *\n * @example\n * import { mapRightArray, assert } from '@universalweb/acid';\n * assert(mapRightArray([1, 2, 3], (item) => {\n * return item * 2;\n * }), [6, 4, 2]);\n */\nexport function mapRightArray(source, iteratee, results = [], thisBind) {\n\tlet trueIndex = 0;\n\tconst arrayLength = source.length;\n\tfor (let index = arrayLength - 1;index >= 0;index--) {\n\t\tresults[trueIndex] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t\ttrueIndex++;\n\t}\n\treturn results;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { eachArray } from './each.js';\n/**\n * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function mapWhile\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - An array with properties that passed the test.\n *\n * @example\n * import { mapWhile, assert } from '@universalweb/acid';\n * assert(mapWhile([1, 2, 0], (item) => {\n * return Boolean(item);\n * }), [1, 2]);\n */\nexport function mapWhile(source, iteratee, results = [], thisBind) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0;index < arrayLength;index++) {\n\t\tconst item = source[index];\n\t\tconst returned = iteratee(item, index, results, source, arrayLength, thisBind);\n\t\tif (returned === false) {\n\t\t\tbreak;\n\t\t}\n\t\tresults[index] = item;\n\t}\n\treturn results;\n}\n\n","/**\n * Subtracts the subtrahend (second argument) from the minuend (first argument).\n *\n * @function subtract\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtract, assert } from '@universalweb/acid';\n * assert(subtract(3, 1), 2);\n */\nexport function subtract(minuend, subtrahend) {\n\treturn minuend - subtrahend;\n}\n","import { subtract } from '../math/subtract.js';\n/**\n * Sorts an array of numbers in ascending order. Smallest to largest.\n *\n * @function sortNumberAscending\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberAscending, assert } from '@universalweb/acid';\n * assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n */\nexport function sortNumberAscending(numberList) {\n\treturn numberList.sort(subtract);\n}\n","import { compactMapArray } from './compactMap.js';\n/**\n * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.\n *\n * @function partition\n * @type {Function}\n * @category array\n * @param {Array} array - Takes an array to split.\n * @param {Function} predicate - Function run on each item in the array.\n * @returns {Array} - One array split into two arrays.\n *\n * @example\n * import { partition, assert } from '@universalweb/acid';\n * const result = partition([\n * {user: 'barney', age: 36, active: false},\n * {user: 'fred', age: 40, active: true},\n * {user: 'pebbles', age: 1, active: false}\n * ], (item) => { return item.active; });\n * assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}],\n * [{\"user\":\"barney\",\"age\":36,\"active\":false},\n * {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);\n */\nexport function partition(array, predicate) {\n\tconst rejected = [];\n\treturn [\n\t\tcompactMapArray(array, (item, index) => {\n\t\t\tif (predicate(item, index)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\trejected.push(item);\n\t\t}),\n\t\trejected\n\t];\n}\n\n","/**\n * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.\n *\n * @function subtractReverse\n * @category math\n * @type {Function}\n * @param {Number} minuend - The minuend.\n * @param {Number} subtrahend - The subtrahend.\n * @returns {Number} - Returns the difference.\n *\n * @example\n * import { subtractReverse, assert } from '@universalweb/acid';\n * assert(subtractReverse(1, 3), 2);\n */\nexport function subtractReverse(subtrahend, minuend) {\n\treturn minuend - subtrahend;\n}\n","import { subtractReverse } from '../math/subtractReverse.js';\n/**\n * Sorts an array of numbers in descending order. Largest to smallest.\n *\n * @function sortNumberDescening\n * @category array\n * @param {Array} numberList - Array of numbers.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * import { sortNumberDescening, assert } from '@universalweb/acid';\n * assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n */\nexport function sortNumberDescening(numberList) {\n\treturn numberList.sort(subtractReverse);\n}\n","/**\n * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function remove\n * @category array\n * @param {Array} array - Array to be mutated.\n * @param {String|Array} removeThese - Items to remove from the array.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * remove([1, 2, 3, 3, 4, 3, 5], 1);\n * // => [2, 3, 3, 4, 3, 5]\n * @example\n * remove([3, 3, 4, 5], 3, 4);\n * // => [5]\n */\nexport function remove(array, removeThese) {\n\tlet arrayLength = array.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = array[index];\n\t\tif (removeThese.includes(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn array;\n}\n/**\n * Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.\n *\n * @function removeBy\n * @category array\n * @param {Array} source - Array to be mutated.\n * @param {Function} iteratee - Function used to check object. Return true to remove the value.\n * @returns {Array} - The array this method was called on.\n *\n * @example\n * removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);});\n * // => [2, 4]\n */\nexport function removeBy(source, iteratee) {\n\tlet arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst item = source[index];\n\t\tif (iteratee(item, index)) {\n\t\t\tsource.splice(index, 1);\n\t\t\tindex--;\n\t\t\tarrayLength--;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Extracts all items in array except the first and last item.\n *\n * @function rest\n * @type {Function}\n * @category array\n * @param {Array} array - Array to be sliced.\n * @returns {Array} - Returns the aggregated array.\n *\n * @example\n * rest([1, 2, 3, 4, 5]);\n * // => [2, 3, 4, 5]\n */\nexport function rest(array) {\n\treturn array.slice(1, array.length);\n}\n\n","/**\n * Get the item at the supplied index starting at the end of the array.\n *\n * @function right\n * @type {Function}\n * @category array\n * @param {Array} source - Array to be sliced.\n * @param {Number} amount - Amount from the right.\n * @returns {*} - Returns the object at the evaluated position.\n *\n * @example\n * right([1, 2, 3, 4, 5] , 1);\n * // => 4\n */\nexport function right(source, amount) {\n\treturn source[source.length - 1 - amount];\n}\n\n","const {\n\tfloor,\n\trandom\n} = Math;\n/**\n * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomInt\n * @category number\n * @type {Function}\n * @param {Number} max - The highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomInt, assert } from '@universalweb/acid';\n * assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});\n */\nexport function randomInt(max, min = 0) {\n\treturn floor(random() * (max - min)) + min;\n}\n","import { hasValue } from '../types/hasValue.js';\nconst arrayFrom = Array.from;\n/**\n * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.\n *\n * @function toArray\n * @category array\n * @param {*} arrayLike - Array like object.\n * @param {Function} mapFn - Function to map over the array.\n * @param {*} thisArg - MapFn's \"this\".\n * @returns {Array} - New array.\n *\n * @example\n * import { toArray, assert } from '@universalweb/acid';\n * assert(toArray(new Map([[1, 2]])), [[1, 2]]);\n */\nexport function toArray(arrayLike, mapFn, thisArg) {\n\tif (hasValue(arrayLike)) {\n\t\treturn arrayFrom(arrayLike, mapFn, thisArg);\n\t}\n}\n","/**\n * Checks if two numbers are the same.\n *\n * @function isNumberEqual\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} target - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberEqual, assert } from '@universalweb/acid';\n * assert(isNumberEqual(0, 0), true);\n */\nexport function isNumberEqual(source, target) {\n\treturn source === target;\n}\n","import { randomInt } from '../math/randomInt.js';\nimport { toArray } from '../internal/array.js';\nimport { isNumberEqual } from '../numbers/isNumberEqual.js';\n/**\n * Shuffle an array and return a new array.\n *\n * @function shuffle\n * @category array\n * @param {Array} target - Target Array to be shuffled.\n * @param {Number} amount - The amount of times to shuffle the array.\n * @returns {Array} - An array with the shuffled results.\n *\n * @example\n * import { shuffle, assert } from '@universalweb/acid';\n * assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n */\nexport function shuffle(target, amount = target.length) {\n\tif (target.length <= 1) {\n\t\treturn toArray(target);\n\t}\n\tconst shuffleArray = toArray(target);\n\tlet count = 0;\n\tlet index;\n\tlet value;\n\twhile (count < amount) {\n\t\tindex = randomInt(shuffleArray.length - 1, 0);\n\t\tvalue = shuffleArray[count];\n\t\tshuffleArray[count] = shuffleArray[index];\n\t\tshuffleArray[index] = value;\n\t\tcount++;\n\t}\n\treturn shuffleArray;\n}\n\n","import { randomInt } from '../math/randomInt.js';\nimport { shuffle } from './shuffle.js';\n/**\n * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.\n *\n * @function sample\n * @category array\n * @param {Array} source - The array to pull sample(s) from.\n * @param {Number} amount - The amount of samples to take.\n * @returns {Array} - An array of randomly pulled samples.\n *\n * @test\n * (async () => {\n * const tempResult = sample([1, 2] , 2);\n * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n * });\n *\n * @example\n * sample([1, 2, 3, 4] , 2);\n * // => [1, 3]\n */\nexport function sample(source, amount) {\n\tif (!source) {\n\t\treturn false;\n\t}\n\tconst arrayLength = source.length;\n\tif (arrayLength === amount || amount > arrayLength) {\n\t\treturn shuffle(source);\n\t}\n\tif (amount === 1) {\n\t\treturn [source[randomInt(arrayLength - 1, 0)]];\n\t}\n\tconst sampleArray = [];\n\tconst used = {};\n\tlet count = 0;\n\tlet index;\n\twhile (count < amount) {\n\t\tindex = randomInt(source.length - 1, 0);\n\t\tif (!used[index]) {\n\t\t\tsampleArray.push(source[index]);\n\t\t\tused[index] = true;\n\t\t\tcount++;\n\t\t}\n\t}\n\treturn sampleArray;\n}\n\n","const mathNativeMin = Math.min;\n/**\n * Plucks the smallest value from an array.\n *\n * @function smallest\n * @category array\n * @type {Function}\n * @param {Array} array - Array from which smallest number is taken.\n * @returns {Number} - The smallest number.\n *\n * @example\n * smallest([1,2,3]);\n * // => 1\n */\nexport function smallest(array) {\n\treturn mathNativeMin(...array);\n}\n\n","import { everyArray } from './every.js';\n/**\n * What index should the number be inserted at to keep a sorted array still sorted.\n *\n * @function getNumberInsertIndex\n * @category array\n * @type {Function}\n * @param {Array} source - Array to be checked.\n * @param {Number} target - Number to check where to be inserted.\n * @returns {Number} - The index at which to insert.\n *\n * @example\n * import { getNumberInsertIndex, assert } from '@universalweb/acid';\n * assert(getNumberInsertIndex([30, 39, 50], 40), 1);\n */\nexport function getNumberInsertIndex(source, target) {\n\tlet insertIndex = 0;\n\teveryArray(source, (item, index) => {\n\t\tinsertIndex = index;\n\t\tif (target >= item) {\n\t\t\tinsertIndex = index + 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn insertIndex;\n}\n","/**\n * Returns a shallow copy of the array up to an amount.\n *\n * @function take\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take from.\n * @param {Array} [endIndex = 1] - Zero-based index before which to end extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { take, assert } from '@universalweb/acid';\n * assert(take([1,2,3], 2), [1, 2]);\n */\nexport function take(source, endIndex = 1) {\n\treturn source.slice(0, endIndex);\n}\n\n","/**\n * Returns a shallow copy of the array up to an amount starting from the right.\n *\n * @function takeRight\n * @category array\n * @type {Function}\n * @param {Array} source - The source array to take right from.\n * @param {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * import { takeRight, assert } from '@universalweb/acid';\n * assert(takeRight([1,2,3], 2), [2, 3]);\n */\nexport function takeRight(source, indexRight = 1) {\n\tconst arrayLength = source.length;\n\treturn source.slice(arrayLength - indexRight, arrayLength);\n}\n\n","export function onlyUnique(value, index, array) {\n\treturn array.indexOf(value) === index;\n}\nexport function sortUnique(item, index, array) {\n\treturn item !== array[index - 1];\n}\n/**\n * Filters the array down to unique elements.\n *\n * @function unique\n * @category array\n * @type {Function}\n * @param {Array} source - The array to be filtered.\n * @param {Boolean} isSorted - Flag which means the array is already sorted.\n * @returns {Array} - The filtered array.\n *\n * @example\n * unique([1, 2, 2, 4]);\n * // => [1, 2, 4]\n */\nexport function unique(source, isSorted) {\n\tif (isSorted) {\n\t\treturn source.filter(sortUnique);\n\t}\n\treturn source.filter(onlyUnique);\n}\n\n","import { flattenDeep } from './flattenDeep.js';\nimport { unique } from './unique.js';\n/**\n * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.\n *\n * @function union\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The arrays to be evaluated.\n * @returns {Array} - The aggregated array.\n *\n * @example\n * union([1,2,4], [1,2,3]);\n * // => [1, 2, 4, 3]\n */\nexport function union(...arrays) {\n\treturn unique(flattenDeep(arrays));\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned.\n * If and when the iteratee yields false the loop stops & false is returned.\n *\n * @function untilFalseArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are true or false if one value returns false.\n *\n * @example\n * import { untilFalseArray, assert } from '@universalweb/acid';\n * assert(untilFalseArray([true, true, false], (item) => {\n * return item;\n * }), false);\n * assert(untilFalseArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilFalseArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === false) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned.\n * If and when the iteratee yields true the loop stops & false is returned.\n *\n * @function untilTrueArray\n * @category array\n * @type {Function}\n * @param {Array} source - The array to iterate over.\n * @param {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned.\n * @returns {Array} - Returns true if all returns are false or false if one value returns true.\n *\n * @example\n * import { untilTrueArray, assert } from '@universalweb/acid';\n * assert(untilTrueArray([true], (item) => {\n * return item;\n * }), false);\n * assert(untilTrueArray([true, true, true], (item) => {\n * return item;\n * }), true);\n */\nexport function untilTrueArray(source, iteratee) {\n\tconst sourceLength = source.length;\n\tfor (let index = 0;index < sourceLength;index++) {\n\t\tif (iteratee(source[index], index) === true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results,\n * (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n * Re-checks the length each loop.\n *\n * @function whileCompactMap\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileCompactMap, assert } from '@universalweb/acid';\n * assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n * return item;\n * }), [1, 2, 3, false]);\n */\nexport function whileCompactMap(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tconst result = results.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t\tif (hasValue(result)) {\n\t\t\tresults.push(result);\n\t\t}\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.\n *\n * @function whileEachArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileEachArray, assert } from '@universalweb/acid';\n * const list = [];\n * whileEachArray([1, 2, 3], (item, index) => {\n * list[index] = item;\n * });\n * assert(list, [1, 2, 3]);\n */\nexport function whileEachArray(source, iteratee, thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\titeratee(source[index], index, source, source.length, thisBind);\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\n/**\n * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.\n * Re-checks the length each loop.\n *\n * @function whileMapArray\n * @category array\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {Array} results - Array that will be used to assign results. Default value is a new empty array.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { whileMapArray, assert } from '@universalweb/acid';\n * assert(whileMapArray([1, 2, 3], (item, index, source) => {\n * if (index === 0) {\n * source.push(4);\n * }\n * return item;\n * }), [1, 2, 3, 4]);\n */\nexport function whileMapArray(source, iteratee, results = [], thisBind) {\n\tlet index = 0;\n\twhile (index < source.length) {\n\t\tresults.push(iteratee(source[index], index, source, source.length, thisBind));\n\t\tindex++;\n\t}\n\treturn source;\n}\n\n","import { construct } from '../classes/construct.js';\n/**\n * Returns a copy of the array with all instances of the values removed.\n *\n * @function without\n * @type {Function}\n * @category array\n * @param {Array} target - The target array to be filtered.\n * @param {Array} sources - Items to be removed.\n * @returns {Array} - The target array filtered.\n *\n * @example\n * import { without, assert } from '@universalweb/acid';\n * assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n */\nexport function without(target, sources) {\n\tif (!sources) {\n\t\treturn target;\n\t}\n\tconst sourcesSet = construct(Set, sources);\n\treturn target.filter((item) => {\n\t\treturn !sourcesSet.has(item);\n\t});\n}\n\n","import { eachArray } from './each.js';\nimport { forEach } from '../utilities/forEach.js';\nimport { difference } from './difference.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates an array that is the symmetric difference of the provided arrays.\n *\n * @function xor\n * @category array\n * @type {Function}\n * @param {...Array} arrays - The array(s) to be filtered.\n * @returns {Array} - The filtered array.\n *\n * @example\n * xor([2, 1], [2, 3, 5], [6]);\n * // => [1, 3, 5, 6]\n */\nexport function xor(...sources) {\n\tconst xorMap = construct(Map);\n\tconst xored = [];\n\tconst sourcesLength = sources.length;\n\tif (sourcesLength === 2) {\n\t\treturn difference(sources[0], sources[1]);\n\t}\n\teachArray(sources, (currentArray, parentIndex) => {\n\t\teachArray(currentArray, (child, childIndex) => {\n\t\t\tlet childRoot = xorMap.get(child);\n\t\t\tif (!childRoot) {\n\t\t\t\tchildRoot = {\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tparentIndex,\n\t\t\t\t\tchild\n\t\t\t\t};\n\t\t\t\txorMap.set(child, childRoot);\n\t\t\t} else if (childRoot.parentIndex === parentIndex) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tchildRoot.count++;\n\t\t\t}\n\t\t});\n\t});\n\tforEach(xorMap, (item) => {\n\t\tif (item.count === 1) {\n\t\t\txored.push(item.child);\n\t\t}\n\t});\n\treturn xored;\n}\n\n","/**\n * Merges together the values of each of the arrays with the values at the corresponding position.\n *\n * @function zip\n * @type {Function}\n * @category array\n * @param {Array} arrays - The arrays to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\nexport function zip(...arrays) {\n\treturn arrays[0].map((item, index) => {\n\t\treturn arrays.map((array) => {\n\t\t\treturn array[index];\n\t\t});\n\t});\n}\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.\n *\n * @function unZip\n * @type {Function}\n * @category array\n * @param {Array} source - The array of grouped elements to process.\n * @returns {Array} - Returns the new array of regrouped elements.\n *\n * @example\n * unZip([['a', 1, true], ['b', 2, false]]);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\nexport function unZip(source) {\n\treturn source[0].map((item, index) => {\n\t\treturn source.map((arraySet) => {\n\t\t\treturn arraySet[index];\n\t\t});\n\t});\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.\n *\n * @function ensureBuffer\n * @category buffer\n * @type {Function}\n * @param {*} source - Object to be checked.\n * @returns {Array} - Returns an array.\n *\n * @example\n * import { isBuffer, ensureBuffer, assert } from '@universalweb/acid';\n * assert(isBuffer(ensureBuffer('test')), true);\n */\nexport function ensureBuffer(source) {\n\treturn (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0);\n}\n","/**\n * Clears the values out of a buffer.\n *\n * @function clearBuffer\n * @category buffer\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clearBuffer, assert } from '@universalweb/acid';\n * assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));\n */\nexport function clearBuffer(source) {\n\tsource.fill(0);\n\treturn source;\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { chunk } from '../arrays/chunk.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection through iteratee.\n *\n * @function countBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { countBy, assert } from '@universalweb/acid';\n * assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});\n */\nexport function countBy(collection, iteratee) {\n\tconst object = {};\n\tlet result;\n\teachArray(collection, (item) => {\n\t\tresult = iteratee(item);\n\t\tif (!object[result]) {\n\t\t\tobject[result] = 0;\n\t\t}\n\t\tobject[result]++;\n\t});\n\treturn object;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is present in a collection.\n *\n * @function countKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countKey, assert } from '@universalweb/acid';\n * assert(countKey([{a:1}, {a:3}], 'a'), 2);\n */\nexport function countKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Count the amount of times a key is not present in a collection.\n *\n * @function countWithoutKey\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The name of the key.\n * @returns {Number} - The count.\n *\n * @example\n * import { countWithoutKey, assert } from '@universalweb/acid';\n * assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);\n */\nexport function countWithoutKey(collection, propertyName) {\n\tlet count = 0;\n\teachArray(collection, (item) => {\n\t\tif (!item[propertyName]) {\n\t\t\tcount++;\n\t\t}\n\t});\n\treturn count;\n}\n","export function findIndexCache(element, index, array, indexMatch, propertyName) {\n\tif (element[propertyName] === indexMatch) {\n\t\treturn true;\n\t}\n}\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name and returns the array index of the object.\n *\n * @function findIndex\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Number} - The index of the object.\n *\n * @example\n * findIndex([{id: 1}, {id: 2}], 1);\n * // => 0\n */\nexport function findIndex(collection, id, propertyName = 'id') {\n\tconst result = collection.findIndex((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n\n","import { findIndexCache } from './findIndexCache.js';\n/**\n * Finds an object in a collection by the given id and property name.\n *\n * @function findItem\n * @type {Function}\n * @category collection\n * @param {Array} collection - Collection to be checked for an item.\n * @param {Number|string} id - The value to look for.\n * @param {String} [propertyName = 'id'] - The name of the property to compare.\n * @returns {Object} - The found object.\n *\n * @example\n * findItem([{id: 1}, {id: 2}], 1);\n * // => {id: 1}\n */\nexport function findItem(collection, id, propertyName = 'id') {\n\tconst result = collection.find((element, index) => {\n\t\treturn findIndexCache(element, index, collection, id, propertyName);\n\t});\n\treturn (result === -1) ? false : result;\n}\n","/**\n * Sorts an array in place using a key in descending order.\n *\n * @function sortCollectionDescending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionDescending, assert } from '@universalweb/acid';\n * const result = [{id: 1}, {id: 0}];\n * const collect = [{id: 0}, {id: 1}];\n * const prop = 'id';\n * assert(sortCollectionDescending(collect, prop), result);\n */\nexport function sortCollectionDescendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn -1;\n\t} else if (!previousKey) {\n\t\treturn 1;\n\t} else if (previousKey < nextKey) {\n\t\treturn 1;\n\t} else if (previousKey > nextKey) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionDescending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionDescendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n\n","/**\n * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabetically\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabetically, assert } from '@universalweb/acid';\n * const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}];\n * const prop = 'letter';\n * function ifMatchSort(c, n) {\n * if (c.g < n.g) {\n * return -1;\n * }\n * if (c.g > n.g) {\n * return 1;\n\t* }\n * }\n * assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n */\nexport function sortObjectsAlphabetically(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn previousKey.localeCompare(nextKey);\n}\nexport function sortCollectionAlphabetically(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabetically(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Sorts an array in place using a key in ascending order.\n *\n * @function sortCollectionAscending\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array and or a clone of the array sorted.\n *\n * @example\n * import { sortCollectionAscending, assert } from '@universalweb/acid';\n * const result = [{id: 0}, {id: 1}];\n * const collect = [{id: 1}, {id: 0}];\n * const prop = 'id';\n * assert(sortCollectionAscending(collect, prop), result);\n */\nexport function sortCollectionAscendingFilter(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\tif (!nextKey) {\n\t\treturn 1;\n\t} else if (!previousKey) {\n\t\treturn -1;\n\t} else if (previousKey < nextKey) {\n\t\treturn -1;\n\t} else if (previousKey > nextKey) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nexport function sortCollectionAscending(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortCollectionAscendingFilter(previous, next, propertyName, ifMatch);\n\t});\n}\n","import { sortCollectionAscending } from './sortCollectionAscending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\n/**\n * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.\n *\n * @function getHighest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getHighest, assert } from '@universalweb/acid';\n * assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});\n */\nexport function getHighest(collection, propertyName = 'id') {\n\treturn sortCollectionAscending(collection, propertyName)[0];\n}\n","import { sortCollectionDescending } from './sortCollectionDescending.js';\nimport { sortCollectionAlphabetically } from './sortCollectionAlphabetically';\nimport { getHighest } from './getHighest';\n/**\n * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.\n *\n * @function getLowest\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - The property name to sort by based on it's value.\n * @returns {Object} - The newest object in the collection.\n *\n * @example\n * import { getLowest, assert } from '@universalweb/acid';\n * assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});\n */\nexport function getLowest(collection, propertyName) {\n\treturn sortCollectionDescending(collection, propertyName, false)[0];\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * @function groupBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {Function} iteratee - The iteratee to transform keys.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n */\nexport function groupBy(collection, iteratee) {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tconst results = iteratee(item);\n\t\tif (!sortedObject[results]) {\n\t\t\tsortedObject[results] = [];\n\t\t}\n\t\tsortedObject[results].push(item);\n\t});\n\treturn sortedObject;\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.\n *\n * @function indexBy\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array of objects.\n * @param {String} propertyName - The property name to index by.\n * @returns {Object} - Returns the composed aggregate object.\n *\n * @example\n * import { indexBy, assert } from '@universalweb/acid';\n * const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}};\n * const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id');\n * assert(indexed, result);\n */\nexport function indexBy(collection, propertyName = 'id') {\n\tconst sortedObject = {};\n\teachArray(collection, (item) => {\n\t\tsortedObject[item[propertyName]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { mapArray } from '../arrays/map.js';\n/**\n * Invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollection\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @example\n * import { invokeCollection, assert } from '@universalweb/acid';\n * const results = invokeCollection([{\n *\ttest(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollection(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapArray(collection, (item, index) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapArray(collection, (item, index) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { mapAsyncArray } from '../arrays/mapAsync.js';\n/**\n * Asynchronously awaits & invokes a function on the provided property name in each object in the collection.\n *\n * @function invokeCollectionAsync\n * @category collection\n * @type {Function}\n * @async\n * @param {Array} collection - Collection from which method will be taken.\n * @param {String} property - Value used to pluck method from object.\n * @param {*} value - Value to be passed to callable property.\n * @returns {Array} - Returns the results of the invoked method.\n *\n * @test\n * import { invokeCollectionAsync, assert } from '@universalweb/acid';\n * const results = await invokeCollectionAsync([{\n *\tasync test(item, index) { return [item, index];}\n * }], 'test', ['EXAMPLE']);\n * assert(results, [['EXAMPLE', 0]]);\n */\nexport function invokeCollectionAsync(collection, property, value, thisBind) {\n\tif (thisBind) {\n\t\treturn mapAsyncArray(collection, (item) => {\n\t\t\treturn item[property].call(thisBind, value);\n\t\t});\n\t}\n\treturn mapAsyncArray(collection, async (item) => {\n\t\treturn item[property](value);\n\t});\n}\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a number.\n *\n * @function isNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumber, assert } from '@universalweb/acid';\n * assert(isNumber(1), true);\n */\nexport const isNumberCall = isConstructorNameFactory('Number');\nexport const isNumber = isTypeFactory(isNumberCall);\n/**\n * Checks if the value is not a number.\n *\n * @function isNotNumber\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotNumber, assert } from '@universalweb/acid';\n * assert(isNotNumber(1), false);\n */\nexport function isNotNumber(source) {\n\treturn !isNumber(source);\n}\n","import { isConstructorFactory } from './isConstructor.js';\nimport { isNumber } from './isNumber';\n/**\n * Checks if the value is a string.\n *\n * @function isString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isString, assert } from '@universalweb/acid';\n * assert(isString('hello'), true);\n * assert(isString(1), false);\n */\nexport const isString = isConstructorFactory(String);\n/**\n * Checks if the value is not a string.\n *\n * @function isNotString\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNotString, assert } from '@universalweb/acid';\n * assert(isNotString(1), true);\n * assert(isNotString('hello'), false);\n */\nexport function isNotString(source) {\n\treturn !isString(source);\n}\n","import { isString } from '../types/isString.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.\n *\n * @function pluckObject\n * @category object\n * @type {Function}\n * @param {Object} source - Array used to determine what sources to be plucked.\n * @param {String|Array} targets - Property name.\n * @returns {Array} - An array of plucked sources.\n *\n * @example\n * import { pluckObject, assert } from '@universalweb/acid';\n * assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);\n */\nexport function pluckObject(source, targets) {\n\tif (!source) {\n\t\treturn;\n\t} else if (isString(targets)) {\n\t\treturn source[targets];\n\t}\n\treturn mapArray(targets, (item) => {\n\t\treturn source[item];\n\t});\n}\n\n","import { mapArray } from '../arrays/map.js';\nimport { pluckObject } from '../objects/pluckObject.js';\n/**\n * Returns an array of the plucked values from the collection.\n *\n * @function pluck\n * @category collection\n * @type {Function}\n * @param {Array} collection - Array used to determine what value to be plucked.\n * @param {(String|Number|Array.)} targets - Property name.\n * @returns {Array} - An array of plucked values.\n *\n * @example\n * import { pluck, assert } from '@universalweb/acid';\n * assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]);\n * assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);\n */\nexport function pluck(collection, targets) {\n\treturn mapArray(collection, (item) => {\n\t\treturn pluckObject(item, targets);\n\t});\n}\n","/**\n * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.\n *\n * @function sortCollectionAlphabeticallyReverse\n * @category collection\n * @type {Function}\n * @param {Array} collection - Collection to be sorted.\n * @param {String} propertyName - Name of property to compare.\n * @param {Function} ifMatch - A function which returns a number for the sort function if two object properties match.\n * @returns {Array} - The sorted array.\n *\n * @example\n * import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid';\n * const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}];\n * const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}];\n * const prop = 'letter';\n * assert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n */\nexport function sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch) {\n\tconst previousKey = previous[propertyName];\n\tconst nextKey = next[propertyName];\n\tif (previousKey === nextKey && ifMatch) {\n\t\treturn ifMatch(previous, next, propertyName);\n\t}\n\treturn nextKey.localeCompare(previousKey);\n}\nexport function sortCollectionAlphabeticallyReverse(collection, propertyName = 'id', ifMatch) {\n\treturn collection.sort((previous, next) => {\n\t\treturn sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch);\n\t});\n}\n","/**\n * Return the file extension.\n *\n * @function getFileExtension\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFileExtension, assert } from '@universalweb/acid';\n * assert(getFileExtension('test.js'),'js');\n */\nexport function getFileExtension(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('.') + 1);\n\t}\n}\n","/**\n * Return the file extension.\n *\n * @function getFilename\n * @category file\n * @param {*} source - Object to be checked.\n * @returns {String} - Returns the extension.\n *\n * @example\n * import { getFilename, assert } from '@universalweb/acid';\n * assert(getFilename('./universalweb/test.js'),'test.js');\n */\nexport function getFilename(source) {\n\tif (source) {\n\t\treturn source.substring(source.lastIndexOf('/') + 1);\n\t}\n}\n","import { hasValue } from '../types/hasValue.js';\nexport function regexTestFactory(regexType) {\n\treturn (item) => {\n\t\treturn (hasValue(item)) ? regexType.test(item) : false;\n\t};\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .css extension.\n *\n * @function isFileCSS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileCSS, assert } from '@universalweb/acid';\n * assert(isFileCSS('test.css'), true);\n */\nexport const isFileCSS = regexTestFactory(/\\.css$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .html extension.\n *\n * @function isFileHTML\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileHTML, assert } from '@universalweb/acid';\n * assert(isFileHTML('test.html'), true);\n */\nexport const isFileHTML = regexTestFactory(/\\.html$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .js extension.\n *\n * @function isFileJS\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJS, assert } from '@universalweb/acid';\n * assert(isFileJS('test.js'), true);\n */\nexport const isFileJS = regexTestFactory(/\\.js$/);\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a .json extension.\n *\n * @function isFileJSON\n * @category file\n * @param {String} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFileJSON, assert } from '@universalweb/acid';\n * assert(isFileJSON('test.json'), true);\n */\nexport const isFileJSON = regexTestFactory(/\\.json$/);\n","/**\n * Creates a function that executes callable, only after being called n times.\n *\n * @function after\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls until method is invoked.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onlyAfter = after(2, (item) => { return item;});\n * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n * });\n *\n * @example\n * import { after, assert } from '@universalweb/acid';\n * const onlyAfter = after(1, (item) => { return item;});\n * assert(onlyAfter(1), undefined);\n * assert(onlyAfter(2), 2);\n */\nexport function after(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyAfter = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point <= 0) {\n\t\t\tvalue = callable(...args);\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyAfter;\n}\n","/**\n * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.\n *\n * @function ary\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to cap arguments for.\n * @param {Number} amount - The arity cap.\n * @returns {Object} - Returns the new capped function.\n *\n * @example\n * import { ary, assert } from '@universalweb/acid';\n * assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);\n */\nexport function ary(callable, amount) {\n\treturn (...args) => {\n\t\treturn callable(...args.splice(0, amount));\n\t};\n}\n\n","/**\n * Creates a function that executes callable, only before n times.\n *\n * @function before\n * @category function\n * @type {Function}\n * @param {Number} amount - The number of calls before n.\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * import { before, assert } from '@universalweb/acid';\n * const onlyBefore = before(3, () => { return 1;});\n * assert(onlyBefore(1), 1);\n */\nexport function before(amount, callable) {\n\tlet point = amount;\n\tlet value;\n\tconst onlyBefore = (...args) => {\n\t\tif (point !== null) {\n\t\t\tpoint--;\n\t\t}\n\t\tif (point >= 1) {\n\t\t\tvalue = callable(...args);\n\t\t} else {\n\t\t\tpoint = null;\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyBefore;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectAssign = Object.assign;\n/**\n * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.\n *\n * @function assign\n * @category object\n * @param {Object} target - The target object.\n * @param {...Object} sources - The source object(s).\n * @returns {Object} - Returns the target object.\n *\n * @example\n * import { assign, assert } from '@universalweb/acid';\n * assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});\n */\nexport function assign(target, ...sources) {\n\tif (hasValue(target)) {\n\t\treturn objectAssign(target, ...sources);\n\t}\n}\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { keys } from './keys.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the given object.\n *\n * @function eachAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.\n * @param {*} thisCall - Iteratee called with thisCall as this.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns source.\n *\n * @example\n * import { eachAsyncObject, assert } from '@universalweb/acid';\n * const tempList = [];\n * await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => {\n * tempList[key] = item;\n * });\n * assert(tempList, {a: 1, b: 2, c: 3});\n */\nexport const eachAsyncObject = async (source, iteratee, thisCall, additionalArg) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee.call(thisCall, source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\tawait eachAsyncArray(objectKeys, (key, index, array, propertyCount) => {\n\t\t\treturn iteratee(source[key], key, source, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn source;\n};\n\n","import { keys } from './keys.js';\nimport { eachArray } from '../arrays/each.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the given object.\n *\n * @function eachObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - Returns the calling object.\n *\n * @example\n * import { eachObject, assert } from '@universalweb/acid';\n * assert(eachObject({a: 1, b: 2, c: 3}, (item) => {\n * console.log(item);\n * }), {a: 1, b: 2, c: 3});\n */\nexport function eachObject(source, iteratee, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\tif (hasValue(thisCall)) {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee.call(thisCall, source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t} else {\n\t\teachArray(objectKeys, (key, index, objectKeysArray, propertyCount) => {\n\t\t\titeratee(source[key], key, source, propertyCount, objectKeysArray, additionalArg);\n\t\t});\n\t}\n\treturn source;\n}\n\n","export async function forEachAsync(source, callback) {\n\tconst values = [];\n\tconst properties = [];\n\tlet valuesLength = 0;\n\tsource.forEach((item, key) => {\n\t\tvalues[valuesLength] = item;\n\t\tproperties[valuesLength] = item;\n\t\tvaluesLength++;\n\t});\n\tfor (let index = 0; index < valuesLength; index++) {\n\t\tawait callback(values[index], properties[index]);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object(s) is a Set.\n *\n * @function isSet\n * @category type\n * @param {...*} sources - Objects to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSet, assert } from '@universalweb/acid';\n * assert(isSet(new Set()), true);\n */\nexport const isSetCall = isConstructorNameFactory('Set');\nexport const isSet = isTypeFactory(isSetCall);\n","import { isSet } from '../types/isSet.js';\nexport function forOf(source, iteratee) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\titeratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tfor (const [key, value] of source) {\n\t\titeratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isGenerator\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isGenerator } from '@universalweb/acid';\n * isGenerator(function* (){});\n * // => true\n */\nexport const isGeneratorCall = isConstructorNameFactory('GeneratorFunction');\nexport const isGenerator = isTypeFactory(isGeneratorCall);\n","import { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nexport async function forOfAsync(source, iteratee, generatorArgs) {\n\tif (isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tawait iteratee(value, source);\n\t\t}\n\t\treturn source;\n\t}\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tawait iteratee(item, source);\n\t\t}\n\t}\n\tfor (const [key, value] of source) {\n\t\tawait iteratee(value, key, source);\n\t}\n\treturn source;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a plain object.\n *\n * @function isFunction\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFunction } from '@universalweb/acid';\n * isFunction(() => {});\n * // => true\n */\nexport const isFunction = (source) => {\n\treturn (hasValue(source)) ? source instanceof Function : false;\n};\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object is an async function.\n *\n * @function isAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isAsync, assert } from '@universalweb/acid';\n * assert(isAsync(async() => {}), true);\n */\nexport const isAsyncCall = isConstructorNameFactory('AsyncFunction');\nexport const isAsync = isTypeFactory(isAsyncCall);\n\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { isAsync } from '../types/isAsync.js';\nimport { isGenerator } from '../types/isGenerator.js';\nexport function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) {\n\treturn (source, iteratee, argument1, argument2, argument3) => {\n\t\tlet returned;\n\t\tconst isIterateeAsync = isAsync(iteratee);\n\t\tif (!hasValue(source) || !iteratee) {\n\t\t\treturn;\n\t\t} else if (isArray(source)) {\n\t\t\treturned = (isIterateeAsync) ? arrayLoopAsync : arrayLoop;\n\t\t} else if (isPlainObject(source) || isFunction(source)) {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t} else if (forOfLoop) {\n\t\t\treturned = (isIterateeAsync) ? forOfLoopAsync : forOfLoop;\n\t\t} else if (isGenerator(source)) {\n\t\t\treturned = forOfLoopAsync;\n\t\t} else {\n\t\t\treturned = (isIterateeAsync) ? objectLoopAsync : objectLoop;\n\t\t}\n\t\treturn returned(source, iteratee, argument1, argument2, argument3);\n\t};\n}\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachAsyncObject } from '../objects/eachAsync.js';\nimport { eachObject } from '../objects/each.js';\nimport { forEach } from './forEach.js';\nimport { forEachAsync } from './forEachAsync.js';\nimport { forOf } from './forOf.js';\nimport { forOfAsync } from './forOfAsync.js';\nimport { generateLoop } from './generateLoop.js';\n/**\n * Iterates through the given object.\n *\n * @function each\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - The originally given object.\n *\n * @example\n * import { each, assert } from '@universalweb/acid';\n * const list = {};\n * each({a: 1, b: 2, c: 3}, (item, key) => {\n * list[key] = item;\n * });\n * assert(list, {a: 1, b: 2, c: 3});\n */\nexport const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync);\n\n","import { assign } from '../objects/assign.js';\nimport { each } from '../utilities/each.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { construct } from '../classes/construct.js';\nimport { isArray } from '../types/isArray.js';\nexport class Chain {\n\tconstructor(methods) {\n\t\tthis.addChainMethod(methods);\n\t}\n\taddChainMethod(methods) {\n\t\tconst thisChain = this;\n\t\teach(methods, (method, methodName) => {\n\t\t\tthisChain[methodName] = function(...args) {\n\t\t\t\tthis.value = method.call(thisChain, thisChain.value, ...args);\n\t\t\t\treturn thisChain;\n\t\t\t};\n\t\t});\n\t}\n\tsetValue(value) {\n\t\tthis.value = value;\n\t\treturn this;\n\t}\n\tdone() {\n\t\tconst value = this.value;\n\t\tthis.value = null;\n\t\treturn value;\n\t}\n\tvalue = null;\n}\n/**\n * Creates a chainable set of functions.\n *\n * @function chain\n * @category function\n * @type {Function}\n * @param {Array|Object} methods - The object to take methods from.\n * @returns {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n *\n * @example\n * import { chain, assert } from '@universalweb/acid';\n * const chained = chain({\n * \ta(value, c) {\n * \t\treturn value + c;\n * \t}\n * }).setValue(2).a(1).done();\n * assert(chained, 3);\n */\nexport function chain(config) {\n\treturn construct(Chain, [config]);\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.\n *\n * @function curry\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curry, assert } from '@universalweb/acid';\n * const result = curry((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [1, 2, 3]);\n */\nexport function curry(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.push(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n\n","import { clearArray } from '../arrays/clear.js';\n/**\n * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.\n *\n * @function curryRight\n * @type {Function}\n * @param {Function} callable - The function to curry.\n * @param {Number} arity - The arity of method.\n * @returns {*} - Returns the new curried function.\n *\n * @example\n * import { curryRight, assert } from '@universalweb/acid';\n * const result = curryRight((a, b, c) => {\n * return [a, b, c];\n * })(1)(2)(3);\n * assert(result, [3, 2, 1]);\n */\nexport function curryRight(callable, arity = callable.length) {\n\tconst curries = [];\n\tconst curried = (...curryArgs) => {\n\t\tcurries.unshift(...curryArgs);\n\t\tif (curries.length === arity) {\n\t\t\tconst result = callable(...curries);\n\t\t\tclearArray(curries);\n\t\t\treturn result;\n\t\t}\n\t\treturn curried;\n\t};\n\treturn curried;\n}\n","/**\n * This method returns true.\n *\n * @function stubTrue\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns true.\n *\n * @example\n * import { stubTrue } from '@universalweb/acid';\n * stubTrue();\n * // => true\n */\nexport const truth = true;\nexport const stubTrue = () => {\n\treturn truth;\n};\n","/**\n * This method returns false.\n *\n * @function stubFalse\n * @category utility\n * @type {Function}\n * @returns {Boolean} - Returns false.\n *\n * @example\n * import { stubFalse } from '@universalweb/acid';\n * stubFalse();\n * // => false\n */\nexport const falsy = false;\nexport const stubFalse = () => {\n\treturn falsy;\n};\n","/**\n * This method returns undefined.\n *\n * @function noop\n * @category function\n * @type {Function}\n * @returns {undefined} - Returns undefined.\n * @example\n * noop();\n * // => undefined\n */\nexport const noop = () => {\n\treturn;\n};\n\n","/**\n * Iterates based on the amount given invoking the iteratee with the current index as an argument.\n *\n * @function times\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { times } from '@universalweb/acid';\n * times(3, (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport function times(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\titeratee(index);\n\t}\n}\n/**\n * Iterates based on the amount given and maps the results returned by the iteratee each time to an array.\n *\n * @function timesMap\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMap } from '@universalweb/acid';\n * timesMap(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport function timesMap(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = iteratee(amount);\n\t}\n\treturn results;\n}\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Timers {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a timer that was created using the timer function.\n\t *\n\t * @param {Number} id - The id of the timer to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * import { timer, assert } from '@universalweb/acid';\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearTimeout(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a timer and add it to the list of timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setTimeout(() => {\n\t\t\tcallable();\n\t\t\tcurrentThis.remove(id);\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active timers.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { timers, assert } from '@universalweb/acid';\n\t * timers.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const timers = construct(Timers);\n/**\n * Timer wrapper.\n *\n * @function timer\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setTimeoutId ID.\n *\n * @example\n * import { timer, assert } from '@universalweb/acid';\n * timer(() => {}, 100);\n * // => 0\n */\nexport function timer(callable, time) {\n\treturn timers.set(callable, time);\n}\n/**\n * Clear all active timers.\n *\n * @function clearTimers\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * import { clearTimers, assert } from '@universalweb/acid';\n * clearTimers();\n * // => undefined\n */\nexport function clearTimers() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\ttimers.remove(index);\n\t});\n}\n","const applyNative = Reflect.apply;\nimport { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\n/**\n * Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.\n *\n * @function apply\n * @category function\n * @param {Function} target - The target function to call.\n * @param {*} thisArgument - Array like object.\n * @param {Array} argumentsList - An array-like object specifying the arguments with which target should be called.\n * @returns {*} - The result of calling the given target function with the specified this value and arguments.\n *\n * @example\n * import { apply, assert } from '@universalweb/acid';\n * assert(apply(function (a) {return a;}, undefined, [2]), 2);\n */\nexport function apply(target, thisArgument, argumentsList) {\n\tif (isFunction(target)) {\n\t\treturn applyNative(target, thisArgument, argumentsList);\n\t}\n}\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\nimport { apply } from '../internal/apply.js';\n/**\n * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.\n *\n * @function debounce\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The debounced function.\n *\n * @example\n * import { debounce, promise, assert } from '@universalweb/acid';\n * const promised = promise((a) => {\n * \t\tconst debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0);\n * });\n * assert(await promised(), 'debounced');\n */\nexport function debounce(callable, time) {\n\tfunction debounced(...args) {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t}\n\t\tdebounced.id = timer(() => {\n\t\t\tdebounced.callable(...args);\n\t\t\tdebounced.id = falsy;\n\t\t}, time);\n\t}\n\tdebounced.id = falsy;\n\tdebounced.callable = callable.bind(debounced);\n\tdebounced.clear = () => {\n\t\tif (debounced.id !== falsy) {\n\t\t\ttimers.remove(debounced.id);\n\t\t\tdebounced.id = falsy;\n\t\t}\n\t};\n\treturn debounced;\n}\n","import { isFunction } from '../types/isFunction.js';\n/**\n * Checks if the given method is a function. If it is then it invokes it with the given arguments.\n *\n * @function ifInvoke\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked if possible.\n * @param {...Array} args - Arguments to pass to the method.\n * @returns {*} - Returns the method invoked or undefined.\n *\n * @example\n * import { ifInvoke, assert } from '@universalweb/acid';\n * assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);\n */\nexport function ifInvoke(callable, ...args) {\n\tif (isFunction(callable)) {\n\t\treturn callable(...args);\n\t}\n}\n\n","/**\n * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.\n *\n * @function inAsync\n * @type {Function}\n * @category Array\n * @async\n * @param {Array} source - Array of async functions that will be looped through.\n * Functions are given the supplied object, index, the calling array, and the array length.\n * @param {*} firstArgument - The first argument given to each function.\n * @returns {Object} - The originally given array.\n *\n * @example\n * import { inAsync, assert } from '@universalweb/acid';\n * const list = [];\n * await inAsync([async (firstArgument, item, index) => {\n * list.push(index + firstArgument.a);\n * }, async (firstArgument, item, index) => {\n * list.push(index);\n * }], {a:1});\n * assert(list, [1, 1]);\n */\nexport async function inAsync(source, firstArgument) {\n\tconst arrayLength = source.length;\n\tfor (let index = 0; index < arrayLength; index++) {\n\t\tconst method = source[index];\n\t\tawait method(firstArgument, index, source, arrayLength);\n\t}\n\treturn source;\n}\n\n","import { each } from '../utilities/each.js';\n/**\n * Invoke an array of functions.\n *\n * @function inSync\n * @category function\n * @type {Function}\n * @param {Array|Object|Function} collection - The functions to be invoked.\n * @param {*} value - The object passed as an argument to each method.\n * @returns {undefined} - Returns undefined.\n *\n * @test\n * (() => {\n * const tempList = [];\n * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n * return assert(tempList, [1, 2]);\n * });\n *\n * @example\n * inSync([() => {console.log(1);}, () => {console.log(2);}]);\n * // 1\n * // 2\n * // => undefined\n */\nexport const inSync = (collection, value) => {\n\treturn each(collection, (item) => {\n\t\titem(value);\n\t});\n};\n\n","/**\n * Creates a function that negates the result of the predicate callable.\n *\n * @function negate\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @returns {*} - Returns the given methods result.\n *\n * @example\n * negate(() => { return false;})();\n * // => true\n */\nexport function negate(callable) {\n\treturn (...args) => {\n\t\treturn !callable(...args);\n\t};\n}\n\n","/**\n * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.\n *\n * @function nthArg\n * @category function\n * @type {Function}\n * @param {Number} [index = 0] - The index of the argument to return.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @example\n * nthArg(1)('a', 'b');\n * // => 'b'\n */\nexport function nthArg(index = 0) {\n\treturn (...args) => {\n\t\treturn args[index];\n\t};\n}\n\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.\n *\n * @function once\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be called.\n * @returns {Function} - Returns the new pass-thru function.\n *\n * @test\n * (async () => {\n * const onceOnly = once((item) => { return item;});\n * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n * });\n *\n * @example\n * const onceOnly = once((item) => { return item;});\n * onceOnly(5);\n * onceOnly(3);\n * // => 5\n*/\nexport const once = (callable) => {\n\tlet value;\n\tconst onlyOnce = (...args) => {\n\t\tif (!hasValue(value)) {\n\t\t\tvalue = callable(...args);\n\t\t}\n\t\treturn value;\n\t};\n\treturn onlyOnce;\n};\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObjectAsync\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapAsyncObject, assert } from '@universalweb/acid';\n * assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport async function mapAsyncObject(source, iteratee, results = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tawait eachAsyncObject(source, async (item, key, thisObject, propertyCount, objectKeys) => {\n\t\tresults[key] = await iteratee(item, key, results, thisObject, propertyCount, objectKeys);\n\t});\n\treturn results;\n}\n\n","import { eachObject } from './each.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { hasValue } from '../types/hasValue.js';\n/**\n * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function mapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Object|Function} - An object of the same calling object's type.\n *\n * @example\n * import { mapObject, assert } from '@universalweb/acid';\n * assert(mapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, b: undefined, c: 3});\n */\nexport function mapObject(source, iteratee, results = {}, thisCall, additionalArg) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (hasValue(thisCall)) {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee.call(thisCall, item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t} else {\n\t\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\t\tresults[key] = iteratee(item, key, results, original, propertyCount, objectKeys, additionalArg);\n\t\t});\n\t}\n\treturn results;\n}\n","/**\n * Returns the constructor of an object.\n *\n * @function getType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getType, assert } from '@universalweb/acid';\n * assert(getType(1), true);\n */\nexport function getType(source) {\n\treturn source?.constructor;\n}\n","import { getType } from './getType.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Returns a new empty object of the same type.\n *\n * @function cloneType\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { cloneType, assert } from '@universalweb/acid';\n * assert(cloneType([1]), []);\n */\nexport function cloneType(source, args = []) {\n\tconst sourceType = getType(source);\n\tif (sourceType === Function) {\n\t\tif (sourceType.name === 'function') {\n\t\t\treturn function() {};\n\t\t}\n\t}\n\treturn construct(sourceType, args);\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * forOfCompactMap({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * });\n * // => {b: 2, c: 3}\n */\nexport function forOfMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isGenerator } from '../types/isGenerator.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { forOfCompactMapAsync, assert } from '@universalweb/acid';\n * assert(forOfCompactMapAsync({a: undefined, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport async function forOfMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tresultsGenerator.push(await iteratee(item, resultsGenerator, source));\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tmethodPushBound(result);\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (methodSet) {\n\t\t\tresults.set(key, result);\n\t\t} else {\n\t\t\tresults[key] = result;\n\t\t}\n\t}\n\treturn results;\n}\n","import { mapArray } from '../arrays/map.js';\nimport { mapObject } from '../objects/map.js';\nimport { generateLoop } from './generateLoop.js';\nimport { mapAsyncArray } from '../arrays/mapAsync.js';\nimport { mapAsyncObject } from '../objects/mapAsync.js';\nimport { forOfMap } from './forOfMap.js';\nimport { forOfMapAsync } from './forOfMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.\n *\n * @function map\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @param {*} thisCall - An object to be given each time to the iteratee.\n * @param {*} additionalArg - An object to be given each time to the iteratee.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { map, assert } from '@universalweb/acid';\n * assert(map({a: 1, b: 2, c: 3}, (item) => {\n * return item * 2;\n * }), {a: 2, b: 4, c: 6});\n */\nexport const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync);\n\n","import { map } from '../utilities/map.js';\n/**\n * Creates a function that invokes iteratee with the arguments it receives and returns their results.\n *\n * @function over\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} iteratees - The list of functions to loop through.\n * @returns {Function} - Returns the new over wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n */\nexport function over(iteratees) {\n\treturn (...args) => {\n\t\treturn map(iteratees, (item) => {\n\t\t\treturn item(...args);\n\t\t});\n\t};\n}\n","import { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { keys } from './keys.js';\nimport { each } from '../utilities/each.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyAsyncObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyAsyncObject, assert } from '@universalweb/acid';\n * const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport async function everyAsyncObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyAsyncArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function everyObject\n * @category object\n * @type {Function}\n * @param {Object} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { everyObject, assert } from '@universalweb/acid';\n * const result = everyObject({a: true, b: true, c: true}, (item) => {\n * return item;\n * });\n * assert(result, true);\n */\nexport function everyObject(source, iteratee) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tconst objectKeys = keys(source);\n\treturn everyArray(objectKeys, (key, index, original, propertyCount) => {\n\t\treturn iteratee(source[key], key, source, propertyCount, original);\n\t});\n}\n","import { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEvery\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEvery({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport function forOfEvery(source, iteratee = returnValue) {\n\tif (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.\n *\n * @function forOfEveryAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport async function forOfEveryAsync(source, iteratee = returnValue, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else if (isArray(source) || isSet(source)) {\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, source);\n\t\t\tif (result === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n","import { everyArray } from '../arrays/every.js';\nimport { everyAsyncArray } from '../arrays/everyAsync.js';\nimport { everyAsyncObject } from '../objects/everyAsync.js';\nimport { everyObject } from '../objects/every.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfEvery } from './forOfEvery.js';\nimport { forOfEveryAsync } from './forOfEveryAsync.js';\n/**\n * Iterates through the given object while the iteratee returns true.\n *\n * @function every\n * @category utility\n * @type {Function}\n * @param {Object | Array | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, calling array, and array length.\n * @returns {Boolean} - Returns true if all values returned are true or false if one value returns false.\n *\n * @example\n * import { every, assert } from '@universalweb/acid';\n * assert(every({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), false);\n */\nexport const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync);\n","import { every } from '../utilities/every.js';\n/**\n * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.\n *\n * @function overEvery\n * @category function\n * @type {Function}\n * @param {(Array.|Object.)} predicates - The list of functions to loop through.\n * @returns {Function} - Returns the new overEvery wrapped function.\n *\n * @example\n * import { overEvery, assert } from '@universalweb/acid';\n * assert(overEvery([Boolean, isFinite])('1'), true);\n */\nexport function overEvery(predicates) {\n\treturn (arg) => {\n\t\treturn every(predicates, (predicate) => {\n\t\t\treturn predicate(arg);\n\t\t});\n\t};\n}\n\n","/**\n * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.\n *\n * @function reArg\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Array} indexes - The arranged argument indexes.\n * @returns {Function} - Returns the new function.\n *\n * @example\n * reArg((a, b, c) => {\n * return [a, b, c];\n * }, [1,2,0])(1,2,3);\n * // => [2, 3, 1]\n */\nexport function reArg(callable, indexes) {\n\treturn (...args) => {\n\t\treturn callable(...indexes.map((item) => {\n\t\t\treturn args[item];\n\t\t}));\n\t};\n}\n\n","import { truth } from '../utilities/stubTrue.js';\nimport { falsy } from '../utilities/stubFalse.js';\nimport { timer, timers } from '../utilities/timer.js';\n/**\n * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.\n *\n * @function throttle\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Function} - The throttled function.\n *\n * @example\n * const throttled = throttle(() => { console.log('throttle'); }, 0)();\n * throttled();\n * // 'throttle'\n*/\nexport function throttle(callable, time) {\n\tfunction throttled(...args) {\n\t\tif (throttled.id) {\n\t\t\tthrottled.shouldThrottle = truth;\n\t\t\treturn;\n\t\t}\n\t\tthrottled.callable(...args);\n\t\tthrottled.id = timer(() => {\n\t\t\tif (throttled.shouldThrottle) {\n\t\t\t\tthrottled.callable(...args);\n\t\t\t}\n\t\t\tthrottled.id = falsy;\n\t\t}, time);\n\t}\n\tthrottled.id = falsy;\n\tthrottled.callable = callable.bind(throttled);\n\tthrottled.clear = () => {\n\t\ttimers.remove(throttled.id);\n\t\tthrottled.id = falsy;\n\t};\n\treturn throttled;\n}\n\n","/**\n * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.\n *\n * @function wrap\n * @category function\n * @type {Function}\n * @param {*} value - The value to wrap.\n * @param {Function} wrapper - The wrapper function.\n * @returns {Function} - The new function.\n *\n * @example\n * wrap('Lucy', (firstName, lastName) => {\n * return `My name is ${firstName} ${lastName}.`;\n * })('Diamonds');\n * // => 'My name is Lucy Diamonds.'\n */\nexport function wrap(value, wrapper) {\n\treturn (...arg) => {\n\t\treturn wrapper(value, ...arg);\n\t};\n}\n\n","const functionPrototype = Function.prototype;\n/**\n * Caches a prototype method.\n *\n * @function cacheNativeMethod\n * @category utility\n * @type {Function}\n * @param {Function} method - Prototype method.\n * @returns {Function} - Cached method.\n *\n * @example\n * import { cacheNativeMethod, assert } from '@universalweb/acid';\n * assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n */\nexport function cacheNativeMethod(method) {\n\treturn functionPrototype.call.bind(method);\n}\n\n","import { cacheNativeMethod } from '../utilities/cacheNativeMethod.js';\n/**\n * Returns an array of all properties (enumerable or not) found directly upon a given object.\n *\n * @function getPropNames\n * @category object\n * @param {Object} source - The object whose enumerable and non-enumerable own properties are to be returned.\n * @returns {Object} - An array of strings that correspond to the properties found directly upon the given object.\n *\n * @example\n * import { getPropNames, assert } from '@universalweb/acid';\n * assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);\n */\nexport const getPropNames = Object.getOwnPropertyNames;\n/**\n * Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.\n *\n * @function getPropDesc\n * @category object\n * @param {Object} target - The target object.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @returns {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n *\n * @example\n * getPropDesc({ bar: 42 }, 'bar');\n * // => { configurable: true, enumerable: true, value: 42, writable: true }\n */\nexport const getPropDesc = Object.getOwnPropertyDescriptor;\n/**\n * Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.\n *\n * @function defProp\n * @category object\n * @param {Object} target - The object on which to define the property.\n * @param {String} property - The name of the property whose description is to be retrieved.\n * @param {Object} descriptor - The descriptor for the property being defined or modified.\n * @returns {Object} - The object that was passed to the function.\n *\n * @example\n * defProp({}, 'key', {\n * enumerable: false,\n * configurable: false,\n * writable: false,\n * value: 'static'\n * }).key;\n * // => 'static'\n */\nexport const defProp = Object.defineProperty;\nexport const hasProp = cacheNativeMethod(Object.hasOwnProperty);\n","import { getPropNames } from './object';\n/**\n * Determines whether two values are the same value.\n *\n * @function isSame\n * @category object\n * @param {*} source - Value to compare to.\n * @param {*} target - A value to compare.\n * @returns {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n *\n * @example\n * import { isSame, assert } from '@universalweb/acid';\n * assert(isSame('foo', 'foo'), true);\n */\nexport const isSame = Object.is;\n","/**\n * Adds two numbers.\n *\n * @function add\n * @category math\n * @type {Function}\n * @param {Number} augend - First number.\n * @param {Number} addend - Second number which is being added to another (augend).\n * @returns {Number} - Returns the sum of the arguments.\n *\n * @example\n * import { add, assert } from '@universalweb/acid';\n * assert(add(1, 1), 2);\n */\nexport function add(augend, addend) {\n\treturn augend + addend;\n}\n","/**\n * Decrements a number.\n *\n * @function deduct\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns a decremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * deduct(10);\n * // => 9\n */\nexport function deduct(source) {\n\treturn source - 1;\n}\n","/**\n * Divides two numbers.\n *\n * @function divide\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the quotient of the arguments.\n *\n * @example\n * import { divide, assert } from '@universalweb/acid';\n * assert(divide(10, 5), 2);\n */\nexport function divide(source, value) {\n\treturn source / value;\n}\n","/**\n * Increments a number.\n *\n * @function increment\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @returns {Number} - Returns an incremented version of the number.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * increment(10);\n * // => 11\n */\nexport function increment(source) {\n\treturn source + 1;\n}\n","/**\n * Multiplies two numbers.\n *\n * @function multiply\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the product of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n */\nexport function multiply(source, value) {\n\treturn source * value;\n}\n","/**\n * Calculate the progress from a given total and current amount.\n *\n * @function calcProgress\n * @category utility\n * @type {Function}\n * @param {Number} total - The total amount.\n * @param {Number} currentAmount - The current amount.\n * @returns {Number} - The progress as a percentage.\n *\n * @example\n * import { calcProgress, assert } from '@universalweb/acid';\n * assert(calcProgress(100, 1), 1);\n */\nexport function calcProgress(total, currentAmount) {\n\tif (total === 0) {\n\t\treturn false;\n\t}\n\tif (currentAmount === 0) {\n\t\treturn 0;\n\t}\n\treturn (currentAmount / total) * 100;\n}\n\n","const { random } = Math;\n/**\n * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.\n *\n * @function randomFloat\n * @category math\n * @type {Function}\n * @param {Number} max - Establishes highest possible value for the random number.\n * @param {Number} [min = 0] - Establishes lowest possible value for the random number.\n * @returns {Number} - Returns random integer between the max and min range.\n *\n * @example\n * import { randomFloat, assert } from '@universalweb/acid';\n * assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;});\n * // => 9.1\n */\nexport function randomFloat(max, min = 0) {\n\treturn random() * (max - min) + min;\n}\n","/**\n * Extracts the remainder between two numbers.\n *\n * @function remainder\n * @category math\n * @type {Function}\n * @param {Number} number - First number.\n * @param {Number} value - Second number.\n * @returns {Number} - Returns the remainder of the arguments.\n *\n * @example\n * import { multiply, assert } from '@universalweb/acid';\n * assert(multiply(10, 5), 50);\n * remainder(10, 6);\n * // => 4\n */\nexport function remainder(source, value) {\n\treturn source % value;\n}\n","/**\n * Subtract all numbers in the array starting from left to right & return the difference.\n *\n * @function subtractAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns the final difference.\n *\n * @example\n * import { subtractAll, assert } from '@universalweb/acid';\n * assert(subtractAll([10, 1, 2, 3]), 5);\n */\nexport function subtractAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a - b;\n\t}, 0);\n}\n\n","/**\n * Sum all numbers in a given array.\n *\n * @function sumAll\n * @category math\n * @type {Function}\n * @param {Number[]} source - Array of numbers.\n * @returns {Number} - Returns a single number.\n *\n * @example\n * import { sumAll, assert } from '@universalweb/acid';\n * assert(sumAll([10, 1, 2, 3]), 5);\n */\nexport function sumAll(source) {\n\treturn source.reduce((a, b) => {\n\t\treturn a + b;\n\t}, 0);\n}\n\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberInRange, assert } from '@universalweb/acid';\n * assert(isNumberInRange(1, 0, 2), true);\n * assert(isNumberInRange(1, 2, 5), false);\n */\nexport function isNumberInRange(source, start, end) {\n\treturn source > start && source < end;\n}\n","/**\n * Checks if a number is within a range.\n *\n * @function isNumberNotInRange\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @param {Number} start - Beginning of range.\n * @param {Number} end - End of range.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isNumberNotInRange, assert } from '@universalweb/acid';\n * assert(isNumberNotInRange(1, 0, 2), false);\n * assert(isNumberNotInRange(1, 2, 5), true);\n */\nexport function isNumberNotInRange(source, start, end) {\n\treturn source < start || source > end;\n}\n","/**\n * Checks if a number is negative & returns true or false.\n *\n * @function isPositive\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isPositive, assert } from '@universalweb/acid';\n * assert(isPositive(1), true);\n */\nconst { sign } = Math;\nexport function isPositive(source) {\n\treturn sign(source) === 1;\n}\n","/**\n * Strictly checks if a number is zero.\n *\n * @function isZero\n * @category number\n * @type {Function}\n * @param {Number} source - Number to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isZero, assert } from '@universalweb/acid';\n * assert(isZero(0), true);\n */\nexport function isZero(source) {\n\treturn source === 0;\n}\n","import { hasValue } from '../types/hasValue.js';\nexport const objectEntries = Object.entries;\n/**\n * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.\n *\n * @function getEntries\n * @category object\n * @param {Object} source - The source object.\n * @returns {Array} - Returns the Object.entries of the source object.\n *\n * @example\n * import { getEntries, assert } from '@universalweb/acid';\n * assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);\n */\nexport function getEntries(source) {\n\tif (hasValue(source)) {\n\t\treturn objectEntries(source);\n\t}\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from './assign.js';\n/**\n * Extracts all keys from an object whose values are not null or undefined.\n *\n * @function compactKeys\n * @category object\n * @type {Function}\n * @param {Object} object - Object from which keys are extracted.\n * @returns {Array} - Returns an array of key values.\n *\n * @example\n * import { compactKeys, assert } from '@universalweb/acid';\n * assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);\n */\nexport function compactKeys(object) {\n\tconst compactedKeys = [];\n\teachObject(object, (item, key) => {\n\t\tif (hasValue(item)) {\n\t\t\tcompactedKeys.push(key);\n\t\t}\n\t});\n\treturn compactedKeys;\n}\n\n","import { eachAsyncObject } from './eachAsync.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\n/**\n * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapAsyncObject, assert } from '@universalweb/acid';\n * assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport async function compactMapAsyncObject(source, iteratee = returnValue, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = await iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from '../utilities/returnValue.js';\nimport { mapAsyncObject } from './mapAsync.js';\nimport { compactMapAsyncObject } from './compactMapAsync.js';\n/**\n * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMapObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { compactMapObject, assert } from '@universalweb/acid';\n * assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => {\n * return item;\n * }), {a: 1, c: 3});\n */\nexport function compactMapObject(source, iteratee = returnValue, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tconst result = iteratee(item, key, results, original, propertyCount, objectKeys);\n\t\tif (hasValue(result)) {\n\t\t\tresults[key] = result;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport function filterObject(source, iteratee, results = {}) {\n\teachObject(source, (item, key, original, propertyCount, objectKeys) => {\n\t\tif (iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachAsyncObject } from './eachAsync.js';\n/**\n * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.\n *\n * @function filterAsyncObject\n * @category object\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function} [results = {}] - Object that will be used to assign results.\n * @returns {Object|Function} - An object with properties that passed the test.\n *\n * @example\n * filterAsyncObject({a: false, b: true, c: true}, (item) => {\n * return item;\n * });\n * // => {b: true, c: true}\n */\nexport async function filterAsyncObject(source, iteratee, results = {}) {\n\tawait eachAsyncObject(source, async (item, key, original, propertyCount, objectKeys) => {\n\t\tif (await iteratee(item, key, results, original, propertyCount, objectKeys) === true) {\n\t\t\tresults[key] = item;\n\t\t}\n\t});\n\treturn results;\n}\n","import { eachObject } from './each.js';\nimport { hasAnyKeys } from './hasKeys.js';\n/**\n * Creates an inverted version of a given object by switching it's keys and values.\n *\n * @function invert\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be inverted.\n * @param {Array} [target = {}] - Empty object to be populated with inverted values from source.\n * @returns {Object} - Returns object with keys and values switched.\n *\n * @example\n * import { invert, assert } from '@universalweb/acid';\n * assert(invert({a:1}), {1:'a'});\n */\nexport function invert(source, target = {}) {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachObject(source, (item, key) => {\n\t\ttarget[item] = key;\n\t});\n\treturn target;\n}\n\n","import { isMatchArray } from '../arrays/isMatch.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from './keys.js';\n/**\n * Performs a shallow strict comparison between two objects.\n *\n * @function isMatchObject\n * @type {Function}\n * @category object\n * @param {Object} source - Source object.\n * @param {Object} target - Object to compare to source.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { assert, isMatchObject } from '@universalweb/acid';\n * assert(isMatchObject({a: 1}, {a: 1}), true);\n */\nexport const isMatchObject = (source, target) => {\n\tif (source === target) {\n\t\treturn true;\n\t}\n\tconst sourceKeys = keys(source);\n\tconst targetKeys = keys(target);\n\tif (sourceKeys.length === targetKeys.length) {\n\t\treturn everyArray(sourceKeys, (key) => {\n\t\t\treturn source[key] === target[key];\n\t\t});\n\t}\n\treturn false;\n};\n\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a RegExp.\n *\n * @function isRegex\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRegex, assert } from '@universalweb/acid';\n * assert(isRegex(/test/), true);\n */\nexport const isRegexCall = isConstructorNameFactory('RegExp');\nexport const isRegex = isTypeFactory(isRegexCall);\n","/**\n * Returns a regex safe special characters escaped version of a string.\n *\n * @function regexSafe\n * @category regex\n * @type {Function}\n * @param {Object} source - String to make safe.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { regexSafe, assert } from '@universalweb/acid';\n * assert(regexSafe(/.+/), '\\/\\.\\+\\/');\n */\nexport const escapeRegexRegex = /[()[\\]{}*+?^$|#.,/\\\\\\s-]/g;\nexport function escapeRegex(source) {\n\treturn source.replace(escapeRegexRegex, '\\\\$&');\n}\n","import { escapeRegex } from './escapeRegex.js';\nimport { mapArray } from '../arrays/map.js';\n/**\n * Convert array of strings to regex.\n *\n * @function arrayToRegex\n * @category regex\n * @type {Function}\n * @param {Object} source - Array of strings.\n * @returns {Object} - Returns a regex safe version of the string.\n *\n * @example\n * import { arrayToRegex, assert } from '@universalweb/acid';\n * assert(String(arrayToRegex(['a','b'])), String(/a|b/));\n */\nexport function arrayToRegex(source, makeSafe) {\n\tif (makeSafe) {\n\t\treturn arrayToRegex(mapArray(source, escapeRegex));\n\t}\n\treturn RegExp(source.join('|'));\n}\n","import { filterObject } from './filter.js';\nimport { isArray } from '../types/isArray.js';\nimport { isString } from '../types/isString.js';\nimport { isNumber } from '../types/isNumber.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { arrayToRegex } from '../regexps/arrayToRegex.js';\n/**\n * Returns a clone of the given object without the given properties.\n *\n * @function omit\n * @category object\n * @type {Function}\n * @param {Object} source - Object from which keys are extracted.\n * @param {Array|RegExp|String} blacklist - List of property keys to omit from the returned object.\n * @returns {Object} - A new object with the removed.\n *\n * @example\n * import { omit, assert } from '@universalweb/acid';\n * assert(omit({a:1, b:2}, ['a']), {b:2});\n * assert(omit({a:1, b:2}, 'a'), {b:2});\n * assert(omit({1:'test', b:2}, 1), {b:2});\n */\nexport function omit(source, blacklist) {\n\tif (!source) {\n\t\treturn;\n\t}\n\tif (isArray(blacklist)) {\n\t\tconst blacklistRegex = arrayToRegex(blacklist);\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklistRegex.test(key);\n\t\t});\n\t}\n\tif (isRegex(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist.test(key);\n\t\t});\n\t}\n\tif (isString(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== blacklist;\n\t\t});\n\t}\n\tif (isNumber(blacklist)) {\n\t\tconst numberToString = blacklist.toString();\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn key !== numberToString;\n\t\t});\n\t}\n\tif (isFunction(blacklist)) {\n\t\treturn filterObject(source, (item, key) => {\n\t\t\treturn !blacklist(item, key);\n\t\t});\n\t}\n}\n\n","import { eachArray } from '../arrays/each.js';\n/**\n * Returns a clone of the source object with the plucked properties.\n *\n * @function pick\n * @type {Function}\n * @category object\n * @param {Object} source - Object to be cloned.\n * @param {Array} whitelist - Array of property names used to determine what values to pluck.\n * @param {Object} [target = {}] - Object to be populated with plucked values.\n * @returns {Object} - A new object with plucked properties.\n *\n * @example\n * pick({a:1, b:2, c:3}, ['a','b']);\n * // => {a:1, b:2}\n*/\nexport const pick = (source, whitelist, target = {}) => {\n\tif (!source) {\n\t\treturn;\n\t}\n\teachArray(whitelist, (item) => {\n\t\ttarget[item] = source[item];\n\t});\n\treturn target;\n};\n\n","import { keys } from './keys.js';\n/**\n * Returns the amount of keys on the object.\n *\n * @function objectSize\n * @category object\n * @param {Object} source - The source object.\n * @returns {Number} - The amount of keys.\n *\n * @example\n * objectSize({ 0: 'a', 1: 'b', 2: 'c' });\n * // => 3\n*/\nexport function objectSize(source) {\n\tif (!source) {\n\t\treturn;\n\t}\n\treturn keys(source).length;\n}\n","import { eachArray } from '../arrays/each.js';\nimport { eachObject } from './each.js';\n/**\n * Creates an object from two arrays, one of property identifiers and one of corresponding values.\n *\n * @function zipObject\n * @type {Function}\n * @category object\n * @param {Array} properties - The property identifiers.\n * @param {Array} values - The property values.\n * @returns {Object} - Returns the new object.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nexport const zipObject = (properties, values) => {\n\tconst zipedObject = {};\n\teachArray(properties, (item, key) => {\n\t\tzipedObject[item] = values[key];\n\t});\n\treturn zipedObject;\n};\n/**\n * Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.\n *\n * @function unZipObject\n * @type {Function}\n * @category object\n * @param {Object} object - The object to process.\n * @returns {Array} - Returns two arrays one of keys and the other of values inside a single array.\n *\n * @example\n * unZipObject({ 'a': 1, 'b': 2 });\n * // => [['a', 'b'], [1, 2]]\n */\nexport const unZipObject = (object) => {\n\tconst unZippedKeys = [];\n\tconst values = [];\n\teachObject(object, (item, key) => {\n\t\tunZippedKeys.push(key);\n\t\tvalues.push(item);\n\t});\n\treturn [unZippedKeys, values];\n};\n\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into Camel case format.\n *\n * @function camelCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Camel case.\n * @returns {String} - Converted string in Camel case.\n *\n * @example\n * import { camelCase, assert } from '@universalweb/acid';\n * assert(camelCase('camel case'), 'camelCase');\n */\nexport function camelCase(source) {\n\tlet result = '';\n\tsource.replace(normalizeCase, ' ').trim()\n\t\t.split(' ')\n\t\t.forEach((item, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tresult += item.toLowerCase();\n\t\t\t} else {\n\t\t\t\tresult += item[0].toUpperCase() + item.slice(1).toLowerCase();\n\t\t\t}\n\t\t});\n\treturn result;\n}\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in Kebab case.\n *\n * @function kebabCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into Kebab case.\n * @returns {String} - Converted string in Kebab case.\n *\n * @example\n * import { kebabCase, assert } from '@universalweb/acid';\n * assert(kebabCase('kebab case'), 'kebab-case');\n */\nexport function kebabCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '-');\n}\n\n","const normalizeCase = /[ _-]+/g;\nconst space = /[ ]+/g;\n/**\n * Converts a string into single space sepperated words in snake case.\n *\n * @function snakeCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into snake case.\n * @returns {String} - Converted string in Snake case.\n *\n * @example\n * import { snakeCase, assert } from '@universalweb/acid';\n * assert(snakeCase('snake case'), 'snake_case');\n */\nexport function snakeCase(source) {\n\treturn source.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(space, '_');\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in uppercase.\n *\n * @function upperCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { upperCase, assert } from '@universalweb/acid';\n * assert(upperCase('upper-case'), 'UPPER CASE');\n * assert(upperCase('upper_case'), 'UPPER CASE');\n */\nexport function upperCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toUpperCase();\n}\n","const normalizeCase = /[ _-]+/g;\n/**\n * Converts a string into single space sepperated words in lowerCase.\n *\n * @function lowerCase\n * @category string\n * @type {Function}\n * @param {String} source - String to be converted into upper case.\n * @returns {String} - Converted string in upper case.\n *\n * @example\n * import { lowerCase, assert } from '@universalweb/acid';\n * assert(lowerCase('lower-CASE'), 'lower case');\n */\nexport function lowerCase(source) {\n\treturn source\n\t\t.replace(/([A-Z]+)/g, ' $1')\n\t\t.replace(normalizeCase, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n}\n","/**\n * Inserts text into a string at a given position.\n *\n * @function insertInRange\n * @category string\n * @type {Function}\n * @param {String} string - String to insert the text into.\n * @param {Number} index - Point of insertion.\n * @param {String} text - The string to be inserted.\n * @returns {String} - The string with the text inserted at the given point.\n *\n * @example\n * import { insertInRange, assert } from '@universalweb/acid';\n * assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');\n */\nexport function insertInRange(string, index, text) {\n\treturn string.slice(0, index) + text + string.slice(index, string.length);\n}\n/**\n * Plucks a letter using the index starting from the right.\n *\n * @function rightString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the letter from.\n * @param {Number} [index=1] - The starting position.\n * @returns {String} - A letter at the given index.\n *\n * @example\n * import { rightString, assert } from '@universalweb/acid';\n * assert(rightString('rightString'), 'g');\n * assert(rightString('rightString', 2), 'n');\n */\nexport function rightString(string, index = 1) {\n\treturn string[string.length - index];\n}\n/**\n * Splits up a string into chunks.\n *\n * @function chunkString\n * @category string\n * @type {Function}\n * @param {String} string - String to chunked.\n * @param {Number} [size] - The max string length per chunk.\n * @returns {Array} - An array with strings that are <= size parameter.\n *\n * @example\n * import { chunkString, assert } from '@universalweb/acid';\n * assert(chunkString('chunk', 2), ['ch', 'un', 'k']);\n */\nexport function chunkString(string, size) {\n\treturn string.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));\n}\n/**\n * Truncates everything before the index starting from the right.\n *\n * @function initialString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the initial letters from.\n * @param {Number} [index=1] - Starting point from the right.\n * @returns {String} - A string with the characters before the index starting from the right.\n *\n * @example\n * import { initialString, assert } from '@universalweb/acid';\n * assert(initialString('initialString', 2), 'initialStri');\n */\nexport function initialString(string, index = 1) {\n\treturn string.slice(0, index * -1);\n}\n/**\n * Truncates everything after a index.\n *\n * @function restString\n * @category string\n * @type {Function}\n * @param {String} string - String to extract the rest of the letters from.\n * @param {Number} [index=1] - Starting point.\n * @returns {String} - A string without the characters up-to to the index.\n *\n * @example\n * import { restString, assert } from '@universalweb/acid';\n * assert(restString('restString', 2), 'stString');\n */\nexport function restString(string, index = 1) {\n\treturn string.substring(index);\n}\n","/**\n * Replaces all occurrences of strings in an array with a value.\n *\n * @function replaceList\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @param {Array} words - Strings to replace.\n * @param {String} value - The match replacement.\n * @returns {String} - The string with the replacement.\n *\n * @example\n * import { replaceList, assert } from '@universalweb/acid';\n * assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');\n */\nexport function replaceList(string, words, value) {\n\treturn string.replace(new RegExp(`\\\\b${words.join('|')}\\\\b`, 'gi'), value);\n}\n","const truncateDown = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = stringLength - maxLength;\n\tfor (; index < breakAllLength && index >= 0; index--) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.slice(0, index).trim();\n};\nconst truncateUp = (string, maxLength, stringLength) => {\n\tconst breakAll = string.split('');\n\tconst breakAllLength = breakAll.length;\n\tlet item;\n\tlet index = maxLength;\n\tfor (; index < breakAllLength && index > 0; index++) {\n\t\titem = breakAll[index];\n\t\tif (item === ' ') {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn string.substring(index, stringLength).trim();\n};\n/**\n * Truncates the string, accounting for word placement and character count.\n *\n * @function truncate\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncate, assert } from '@universalweb/acid';\n * assert(truncate('Where is Lucy?', 2), 'Where is');\n */\nexport function truncate(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateDown(string, maxLength, stringLength) : string;\n}\n/**\n * Truncates the string, accounting for word placement and character count from the right.\n *\n * @function truncateRight\n * @type {Function}\n * @category string\n * @param {String} string - String to be truncated.\n * @param {Number} maxLength - The desired max length of the string.\n * @returns {String} - The mutated string.\n *\n * @example\n * import { truncateRight, assert } from '@universalweb/acid';\n * assert(truncateRight('Where is Lucy?', 6), 'Lucy?');\n */\nexport function truncateRight(string, maxLength) {\n\tconst stringLength = string.length;\n\treturn (stringLength > maxLength) ? truncateUp(string, maxLength, stringLength) : string;\n}\n","import { truncateRight } from './truncate';\nconst rawURLDecodeRegex = /%(?![\\da-f]{2})/gi;\nconst andRegex = /&/g;\nconst lessThanRegex = //g;\nconst doubleQuoteRegex = /\"/g;\n/**\n * Raw URL decoder.\n *\n * @function rawURLDecode\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Converted string into the decoded URI Component .\n *\n * @example\n * import { rawURLDecode, assert } from '@universalweb/acid';\n * assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');\n */\nexport function rawURLDecode(string) {\n\treturn decodeURIComponent(string.replace(rawURLDecodeRegex, () => {\n\t\treturn '%25';\n\t}));\n}\n/**\n * Replaced sensitive characters with their matching html entity.\n *\n * @function htmlEntities\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { htmlEntities, assert } from '@universalweb/acid';\n * assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function htmlEntities(string) {\n\treturn string.replace(andRegex, '&')\n\t\t.replace(lessThanRegex, '<')\n\t\t.replace(moreThanRegex, '>')\n\t\t.replace(doubleQuoteRegex, '"');\n}\n/**\n * Executes rawURLDecode followd by htmlEntities methods on a string.\n *\n * @function sanitize\n * @category string\n * @type {Function}\n * @param {String} string - String to be replaced.\n * @returns {String} - Replaced string.\n *\n * @example\n * import { sanitize, assert } from '@universalweb/acid';\n * assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);\n */\nexport function sanitize(string) {\n\treturn htmlEntities(rawURLDecode(string));\n}\n\n","const tokenizeRegEx = /\\S+/g;\nconst wordsRegEx = /\\w+/g;\n/**\n * Break string by non-white space characters matches.\n *\n * @function tokenize\n * @type {Function}\n * @category string\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words without white space characters.\n *\n * @example\n * import { tokenize, assert } from '@universalweb/acid';\n * assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);\n */\nexport function tokenize(string) {\n\treturn string.match(tokenizeRegEx) || [];\n}\n/**\n * Break string into word matches.\n *\n * @function words\n * @type {Function}\n * @param {String} string - String to be broken up.\n * @returns {Array} - Array of words with word characters only.\n *\n * @example\n * import { words, assert } from '@universalweb/acid';\n * assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);\n */\nexport function words(string) {\n\treturn string.match(wordsRegEx) || [];\n}\n\n","import { restString } from './range.js';\nconst getWords = /\\w+/g;\n/**\n * Returns the first letter capitalized.\n *\n * @function upperFirstLetter\n * @type {Function}\n * @category string\n * @param {String} string - String to extract first letter from.\n * @returns {String} - An upper case letter.\n *\n * @example\n * import { upperFirstLetter, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n */\nexport function upperFirstLetter(string) {\n\treturn string[0].toUpperCase();\n}\n/**\n * Capitalizes the first letter.\n *\n * @function upperFirst\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirst, assert } from '@universalweb/acid';\n * assert(upperFirstLetter('upper'), 'U');\n * upperFirst('upper');\n * // => 'Upper'\n */\nexport function upperFirst(string) {\n\treturn upperFirstLetter(string) + restString(string);\n}\n/**\n * Capitalize first letter and lower case the rest.\n *\n * @function upperFirstOnly\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with first letter capitalized.\n *\n * @example\n * import { upperFirstOnly, assert } from '@universalweb/acid';\n * assert(upperFirstOnly('upper'), 'Upper');\n */\nexport function upperFirstOnly(string) {\n\treturn upperFirstLetter(string) + restString(string).toLowerCase();\n}\n/**\n * Capitalize all first letters.\n *\n * @function upperFirstAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstAll, assert } from '@universalweb/acid';\n * assert(upperFirstAll('uPPer'), 'UPPer');\n */\nexport function upperFirstAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirst(match);\n\t});\n}\n/**\n * Capitalize all first letters and lower case the rest.\n *\n * @function upperFirstOnlyAll\n * @type {Function}\n * @category string\n * @param {String} string - String to be mutated.\n * @returns {String} - String with all first letters capitalized.\n *\n * @example\n * import { upperFirstOnlyAll, assert } from '@universalweb/acid';\n * assert(upperFirstOnlyAll('this is'), 'This Is');\n */\nexport function upperFirstOnlyAll(string) {\n\treturn string.replace(getWords, (match) => {\n\t\treturn upperFirstOnly(match);\n\t});\n}\n","import { getType } from './getType.js';\n/**\n * Returns the constructor name of an object.\n *\n * @function getTypeName\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { getTypeName, assert } from '@universalweb/acid';\n * assert(getTypeName(1), true);\n */\nexport function getTypeName(source) {\n\treturn getType(source)?.name;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the value is an Arguments object.\n *\n * @function isArguments\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArguments, assert } from '@universalweb/acid';\n * assert(isArguments((function() { return arguments;})()), true);\n * assert(isArguments([]), false);\n */\nconst objectArguments = '[object Arguments]';\nexport function isArguments(source) {\n\treturn (hasValue(source)) ? source.toString() === objectArguments : false;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object is null or undefined.\n *\n * @function noValue\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { noValue, assert } from '@universalweb/acid';\n * assert(noValue(null), true);\n * assert(noValue(undefined), true);\n * assert(noValue(1), false);\n * assert(noValue(0), false);\n */\nexport function noValue(source) {\n\treturn !hasValue(source);\n}\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Map.\n *\n * @function isMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isMap } from '@universalweb/acid';\n * isMap(new Map());\n * // => true\n */\nexport const isMapCall = isConstructorNameFactory('Map');\nexport const isMap = isTypeFactory(isMapCall);\n","import { getTypeName } from './getTypeName.js';\n/**\n * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.\n *\n * @function isTypedArray\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isTypedArray, assert } from '@universalweb/acid';\n * assert(isTypedArray([]), false);\n * assert(isTypedArray(new Int8Array()), true);\n */\nconst typedArrayRegex = /Array/;\nconst arrayConstructorName = 'Array';\nexport function isTypedArray(source) {\n\tif (source) {\n\t\tconst constructorName = getTypeName(source);\n\t\tif (typedArrayRegex.test(constructorName) && constructorName !== arrayConstructorName) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import { isNumber } from './isNumber.js';\nimport { noValue } from './noValue.js';\nimport { isFunction } from './isFunction.js';\nimport { hasProp } from '../internal/object.js';\nimport { every } from '../utilities/every.js';\nimport { keys } from '../objects/keys.js';\nimport { isArray } from './isArray.js';\nimport { isMap } from './isMap.js';\nimport { isTypedArray } from './isTypedArray.js';\n/**\n * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.\n *\n * @function isArrayLike\n * @category type\n * @param {*} source - Object to be checked.\n * @param {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayLike, assert } from '@universalweb/acid';\n * assert(isArrayLike([]), true);\n * assert(isArrayLike(2), false);\n */\nexport function isArrayLike(source, strictFlag) {\n\tif (noValue(source) || isFunction(source)) {\n\t\treturn false;\n\t}\n\tif (isArray(source) || isTypedArray(source)) {\n\t\treturn true;\n\t}\n\tconst sourceLength = source.length;\n\tif (!noValue(sourceLength) || !isNumber(sourceLength) || sourceLength < 0) {\n\t\treturn false;\n\t}\n\tif (strictFlag) {\n\t\tconst indexes = keys(source);\n\t\tif (indexes) {\n\t\t\treturn every(indexes, (value, index) => {\n\t\t\t\treturn index >= 0 && isNumber(index);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a BigInt.\n *\n * @function isBigInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBigInt, assert } from '@universalweb/acid';\n * assert(isBigInt(BigInt(123)), true);\n */\nexport const isBigIntCall = isConstructorNameFactory('BigInt');\nexport const isBigInt = isTypeFactory(isBigIntCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Boolean.\n *\n * @function isBoolean\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isBoolean } from '@universalweb/acid';\n * isBoolean(true);\n * // => true\n */\nexport const isBooleanCall = isConstructorNameFactory('Boolean');\nexport const isBoolean = isTypeFactory(isBooleanCall);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a ArrayBuffer.\n *\n * @function isArrayBuffer\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isArrayBuffer, assert } from '@universalweb/acid';\n * assert(isArrayBuffer(new ArrayBuffer()), true);\n */\nexport const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer');\nexport const isArrayBuffer = isTypeFactory(isArrayBufferCall);\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isChild\n * @category type\n * @param {*} sourceChild - Object to be checked as the child.\n * @param {*} targetParent - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isChild, construct, assert } from '@universalweb/acid';\n * class Grandparent{}\n * class Parent extends Grandparent{}\n * class Child extends Parent{}\n * const child = construct(Child);\n * assert(isChild(Child, Grandparent), true);\n * assert(isChild(Child, Parent), false);\n * assert(isChild(Parent, Grandparent), false);\n * assert(isChild(child1, child3), false);\n */\nexport function isChild(sourceChild, targetParent) {\n\tif (!sourceChild || !targetParent) {\n\t\treturn false;\n\t}\n\treturn sourceChild instanceof targetParent;\n}\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if an object or objects are a structured-cloneable type.\n *\n * @function isCloneable\n * @category type\n * @param {...*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isCloneable, assert } from '@universalweb/acid';\n * assert(isCloneable(function (){}), false);\n */\nconst constructorNames = RegExp('Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError');\nexport function isCloneable(source) {\n\tif (hasValue(source)) {\n\t\tconst constructorName = source?.constructor?.name;\n\t\treturn constructorNames.test(constructorName);\n\t}\n\treturn false;\n}\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if the value is a Date.\n *\n * @function isDate\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isDate, assert } from '@universalweb/acid';\n * assert(isDate(new Date()), true);\n */\nexport const isDateCall = isConstructorNameFactory('Date');\nexport const isDate = isTypeFactory(isDateCall);\n","import { isString } from './isString.js';\nimport { isArray } from './isArray.js';\nimport { isPlainObject } from './isPlainObject.js';\nimport { hasLength } from '../utilities/hasLength.js';\nimport { objectSize } from '../objects/size.js';\nimport { hasValue } from './hasValue.js';\n/**\n * Checks if the value is empty.\n *\n * @function isEmpty\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isEmpty, assert } from '@universalweb/acid';\n * assert(isEmpty([]), true);\n */\nexport function isEmpty(source) {\n\tif (isString(source) || isArray(source)) {\n\t\treturn !hasLength(source);\n\t} else if (isPlainObject(source)) {\n\t\treturn !objectSize(source);\n\t}\n\treturn !hasValue(source);\n}\n","/**\n * Check if a value equals false using strict comparison.\n *\n * @function isFalse\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to compare.\n * @returns {Boolean} - Returns true if the item equals false.\n *\n * @example\n * import { isFalse, assert } from '@universalweb/acid';\n * assert(isFalse(1), false);\n * assert(isFalse(true), false);\n * assert(isFalse(false), true);\n */\nexport function isFalse(source) {\n\treturn source === false;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float32Array.\n *\n * @function isF32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF32, assert } from '@universalweb/acid';\n * assert(isF32(new Float32Array()), true);\n */\nexport const isF32Call = isConstructorNameFactory('Float32Array');\nexport const isF32 = isTypeFactory(isF32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Float64Array.\n *\n * @function isF64\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isF64 } from '@universalweb/acid';\n * isF64(new Float64Array());\n * // => true\n */\nexport const isF64Call = isConstructorNameFactory('Float64Array');\nexport const isF64 = isTypeFactory(isF64Call);\n","const { isInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isFloat\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isFloat } from '@universalweb/acid';\n * isFloat(1.01);\n * // => true\n */\nexport const isFloat = isInteger;\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int16Array.\n *\n * @function isI16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isI16 } from '@universalweb/acid';\n * isI16(new Int16Array());\n * // => true\n */\nexport const isI16Call = isConstructorNameFactory('Int16Array');\nexport const isI16 = isTypeFactory(isI16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int32Array.\n *\n * @function isI32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * import { isI32, assert } from '@universalweb/acid';\n * assert(isI32(new Int32Array()), true);.\n */\nexport const isI32Call = isConstructorNameFactory('Int32Array');\nexport const isI32 = isTypeFactory(isI32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Int8Array.\n *\n * @function isI8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isInt8 } from '@universalweb/acid';\n * isInt8(new Int8Array());\n * // => true\n */\nexport const isI8Call = isConstructorNameFactory('Int8Array');\nexport const isI8 = isTypeFactory(isI8Call);\n","import { hasValue } from './hasValue.js';\n/**\n * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.\n *\n * @function isIterable\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isIterable, assert } from '@universalweb/acid';\n * assert(isIterable([]), true);\n * assert(isIterable(new Int8Array()), true);\n * assert(isIterable('test'), false);\n */\nexport function isIterable(source) {\n\treturn hasValue(source) && typeof source[Symbol.iterator] === 'function';\n}\n","/**\n * Checks if an object is a promise.\n *\n * @function isPromise\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPromise } from '@universalweb/acid';\n * isPromise(new Promise(() => {}));\n * // => true\n */\nexport function isPromise(source) {\n\tif (source) {\n\t\treturn source instanceof Promise;\n\t}\n\treturn false;\n}\n","import { isPromise } from './isPromise.js';\nimport { isGenerator } from './isGenerator.js';\nimport { isAsync } from './isAsync.js';\n/**\n * Checks if an object is a kind of async object such as async function, promise, or generator.\n *\n * @function isKindAsync\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isKindAsync, assert } from '@universalweb/acid';\n * assert(isKindAsync(async() => {}), true);\n */\nexport function isKindAsync(source) {\n\tif (source) {\n\t\treturn isPromise(source) || isAsync(source) || isGenerator(source);\n\t}\n\treturn false;\n}\n","/**\n * Checks if an object is the child of another. Typically used for classes.\n *\n * @function isParent\n * @category type\n * @param {*} sourceParent - Object to be checked as the child.\n * @param {*} targetChild - Object to be checked as the parent.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isParent, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(otherClass);\n * assert(isParent(child1, parentClass), true);\n * assert(isParent(child3, parentClass), false);\n * assert(isParent(parentClass, child1), false);\n * assert(isParent(child1, child3), false);\n */\nexport function isParent(sourceParent, targetChild) {\n\tif (!sourceParent || !targetChild || !targetChild.call) {\n\t\treturn false;\n\t}\n\treturn sourceParent instanceof targetChild;\n}\n","/**\n * Checks if an object is a primitive.\n *\n * @function isPrimitive\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - True or false.\n *\n * @example\n * import { isPrimitive, assert } from '@universalweb/acid';\n * assert(isPrimitive(1), true);\n * assert(isPrimitive(() => {}), false);\n */\nexport function isPrimitive(source) {\n\tconst type = typeof value;\n\treturn source === null || source === undefined || (type !== 'object' && type !== 'function');\n}\n","import { noValue } from './noValue.js';\n/**\n * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.\n *\n * @function isRelated\n * @category type\n * @param {*} targetOne - Object to be checked.\n * @param {*} targetTwo - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isRelated, construct, assert } from '@universalweb/acid';\n * class parentClass{}\n * class otherClass{}\n * const child1 = construct(parentClass);\n * const child2 = construct(parentClass);\n * const child3 = construct(otherClass);\n * assert(isRelated(child1, child2), true);\n * assert(isRelated(child1, parentClass), true);\n * assert(isRelated(parentClass, child2), true);\n * assert(isRelated(child1, child3), false);\n */\nexport function isRelated(targetOne, targetTwo) {\n\tif (noValue(targetOne) || noValue(targetTwo)) {\n\t\treturn false;\n\t}\n\tif (targetOne.call) {\n\t\treturn targetTwo instanceof targetOne;\n\t}\n\tif (targetTwo.call) {\n\t\treturn targetOne instanceof targetTwo;\n\t}\n\treturn targetTwo.constructor === targetOne.constructor;\n}\n","const { isSafeInteger } = Number;\n/**\n * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.\n *\n * @function isSafeInt\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isSafeInt } from '@universalweb/acid';\n * isSafeInt(1.01);\n * // => true\n */\nexport const isSafeInt = isSafeInteger;\n","import { getType } from './getType.js';\nexport function isSameType(source, other) {\n\tconst sourceType = getType(source);\n\tconst otherType = getType(other);\n\tif (sourceType === otherType) {\n\t\tif (sourceType.name === otherType.name) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","/**\n * Check if a value equals true using strict comparison.\n *\n * @function isTrue\n * @category Utility\n * @type {Function}\n * @param {Boolean} source - Item to check.\n * @returns {Boolean} - Returns true if the item is true.\n *\n * @example\n * import { isTrue, assert } from '@universalweb/acid';\n * assert(isTrue(1), false);\n * assert(isTrue(true), true);\n * assert(isTrue(false), false);\n */\nexport function isTrue(source) {\n\treturn source === true;\n}\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint16Array.\n *\n * @function isU16\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU16 } from '@universalweb/acid';\n * isU16(new Uint16Array());\n * // => true\n */\nexport const isU16Call = isConstructorNameFactory('Uint16Array');\nexport const isU16 = isTypeFactory(isU16Call);\n","import { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint32Array.\n *\n * @function isU32\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU32 } from '@universalweb/acid';\n * isU32(new Uint32Array());\n * // => true\n */\nexport const isU32Call = isConstructorNameFactory('Uint32Array');\nexport const isU32 = isTypeFactory(isU32Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8Array.\n *\n * @function isU8\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8 } from '@universalweb/acid';\n * isU8(new Uint8Array());\n * // => true\n */\nexport const isU8Call = isConstructorNameFactory('Uint8Array');\nexport const isU8 = isTypeFactory(isU8Call);\n","import { isConstructorFactory, isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a Uint8ClampedArray.\n *\n * @function isU8C\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isU8C } from '@universalweb/acid';\n * isU8C(new Uint8ClampedArray());\n * // => true\n */\nexport const isU8CCall = isConstructorNameFactory('Uint8ClampedArray');\nexport const isU8C = isTypeFactory(isU8CCall);\n","import { hasValue } from './hasValue.js';\nimport { isConstructorNameFactory } from './isConstructor.js';\nimport { isTypeFactory } from './isTypeFactory.js';\n/**\n * Checks if an object or objects are a WeakMap.\n *\n * @function isWeakMap\n * @category type\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { isWeakMap } from '@universalweb/acid';\n * assert(isWeakMap(new WeakMap()), true);\n */\nexport const isWeakMapCall = isConstructorNameFactory('WeakMap');\nexport const isWeakMap = isTypeFactory(isWeakMapCall);\n","export const isDeno = typeof globalThis.Deno !== 'undefined';\n","export const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node;\n","/**\n * Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.\n *\n * @function isTruthy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isTruthy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.\n * @returns {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isTruthy, assert } from '@universalweb/acid';\n * assert(isTruthy(1), true);\n * assert(isTruthy(0), false);\n */\nexport function isTruthy(source, returnIfTrue = true) {\n\treturn Boolean(source) && returnIfTrue;\n}\n","/**\n * Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.\n *\n * @function isFalsy\n * @category type\n * @type {Function}\n * @param {*} source - Item to be isFalsy checked.\n * @param {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.\n * @returns {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n *\n * @example\n * import { isFalsy, assert } from '@universalweb/acid';\n * assert(isFalsy(0), true);\n * assert(isFalsy(1), false);\n */\nexport function isFalsy(source, returnIfTrue = true) {\n\treturn Boolean(source) === false && returnIfTrue;\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { apply } from '../internal/apply.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\n/**\n * If source has a value then assign it to an object or call a function.\n *\n * @function ifValue\n * @category utility\n * @param {*} source - The source object to be hasValue checked.\n * @param {Function|Object} target - The target which is either a function or object.\n * @param {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).\n * @param {Array} args - The args that would be used if the target is a function and is the params that is applied to the function.\n * @returns {source} The source object if it passes the hasValue check.\n *\n * @example\n * import { ifValue, assert } from '@universalweb/acid';\n * assert(ifValue(1, {}, 'a'), {a:1});\n */\nexport function ifValue(source, target, optional, args) {\n\tif (hasValue(source)) {\n\t\tif (isFunction(target)) {\n\t\t\tif (optional) {\n\t\t\t\treturn apply(target, optional, args);\n\t\t\t}\n\t\t\treturn target(...args);\n\t\t} else if (isPlainObject(target)) {\n\t\t\ttarget[optional] = source;\n\t\t\treturn target;\n\t\t}\n\t}\n}\n","import { isEqual } from './isEqual.js';\nimport { isFalse } from '../types/isFalse.js';\n/**\n * Performs a deep comparison between two objects & determines if they're different using strict comparison.\n *\n * @function notEqual\n * @type {Function}\n * @category utility\n * @param {*} source - Source object.\n * @param {*} target - Object to be compared.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { notEqual, assert } from '@universalweb/acid';\n * assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);\n */\nexport function notEqual(source, target) {\n\treturn isFalse(isEqual(source, target));\n}\n\n","const jsonNative = JSON;\n/**\n * Parses JSON string with safety check for undefined.\n *\n * @function jsonParse\n * @category utility\n * @type {Function}\n * @param {String} source - String to be parsed.\n * @param {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned.\n * @returns {Object} - Returns the parsed object.\n *\n * @example\n * import { jsonParse, assert } from '@universalweb/acid';\n * assert(jsonParse('{a:1}'), {a:1});\n */\nexport function jsonParse(source, reviver) {\n\tif (source) {\n\t\treturn jsonNative.parse(source, reviver);\n\t}\n}\n/**\n * Stringify an object into a JSON string.\n *\n * @function stringify\n * @category utility\n * @type {Function}\n * @param {Object} object - Object to Stringify.\n * @returns {String} - Returns the object as a valid JSON string.\n *\n * @example\n * import { stringify, assert } from '@universalweb/acid';\n * assert(stringify({a:1}), '{a:1}');\n */\nexport const stringify = jsonNative.stringify;\n\n","import { isFunction } from '../types/isFunction.js';\nimport { notEqual } from './notEqual.js';\nimport { stringify } from './json.js';\nimport { isKindAsync } from '../types/isKindAsync.js';\nfunction createAssertError(source, expected, localOptions) {\n\tconst options = globalThis.options || localOptions;\n\tlet errorTitle;\n\tif (isFunction(options)) {\n\t\terrorTitle = `${options.name} : ${options.constructor.name}`;\n\t} else if (options) {\n\t\terrorTitle = `${options.title || options.method.name} -> ${options.file}`;\n\t}\n\treturn new Error(`Test Failed: ${errorTitle}\n\t\tResult: ${stringify(source)}\n\t\tExpected: ${stringify(expected)}`, options);\n}\nexport async function assertAsync(sourceArg, expected, options) {\n\tconst source = await sourceArg;\n\tconst expectedFunction = isFunction(expected) && await expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n/**\n * Check if source value matches the expected value.\n *\n * @function assert\n * @category utility\n * @type {Function}\n * @param {*} source - The source object to compare to.\n * @param {*} expected - The expected result that's compared to the source.\n * @param {*} options - Additional options for the Error instance & unit test information.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { assert } from '@universalweb/acid';\n * if (!assert(1,1)) {\n * \tnew Error('Assert Method Failed');\n * }\n */\nexport function assert(source, expected, options) {\n\tif (isKindAsync(source) || isKindAsync(expected)) {\n\t\treturn assertAsync(source, expected, options);\n\t}\n\tconst expectedFunction = isFunction(expected) && expected(source, options) === false;\n\tif (expectedFunction || notEqual(source, expected)) {\n\t\treturn createAssertError(source, expected, options);\n\t}\n\treturn true;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { assign } from '../objects/assign.js';\nimport { map } from './map.js';\nimport { assert } from './assert.js';\n/**\n * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.\n *\n * @function bindAll\n * @category utility\n * @type {Function}\n * @param {Object|Function|Array} collection - The functions to bind.\n * @param {*} bindThis - Object to be bound to functions.\n * @param {Object|Function|Array} targetAssign - Object to assign newly bound functions to.\n * @returns {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n *\n * @example\n * import { assert, bindAll } from '@universalweb/acid';\n * const bounded = bindAll([function () { return this;}], 'Bounded');\n * assert(bounded[0](), 'Bounded');\n */\nexport function bindAll(collection, bindThis, targetAssign) {\n\tconst results = map(collection, (item) => {\n\t\treturn isFunction(item) ? item.bind(bindThis) : item;\n\t});\n\treturn (targetAssign) ? assign(targetAssign, results) : results;\n}\n\n","import { isBuffer } from '../types/isBuffer.js';\nimport { isArray } from '../types/isArray.js';\nimport { clearBuffer } from '../buffers/clear.js';\nimport { clearArray } from '../arrays/clear.js';\n/**\n * Clears the values out of an array, buffer, and objects like Map that have a clear method.\n *\n * @function clear\n * @category utility\n * @type {Function}\n * @param {Array} source - Takes an array to be emptied.\n * @returns {Array} - The originally given array.\n *\n * @example\n * import { clear, assert } from '@universalweb/acid';\n * assert(clear(Buffer.from([1,'B', 'Cat'])), []);\n */\nexport function clear(source) {\n\tif (source) {\n\t\tif (isBuffer(source)) {\n\t\t\treturn clearBuffer(source);\n\t\t} else if (isArray(source)) {\n\t\t\treturn clearArray(source);\n\t\t} else if (source.clear) {\n\t\t\tsource.clear();\n\t\t} else if (source.length) {\n\t\t\tsource.length = 0;\n\t\t}\n\t}\n\treturn source;\n}\n\n","/**\n * Creates a structured clone of an object which is a \"structured-cloneable type\".\n *\n * @function clone\n * @category utility\n * @type {Function}\n * @param {Object} source - Any structured-cloneable type object.\n * @returns {Object} - Returns a deep clone of an object.\n *\n * @example\n * import { clone, assert } from '@universalweb/acid';\n * assert(clone({a:{b:[2]}}), {a:{b:[2]}});\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function clone(source) {\n\treturn structuredCloneSafe(source);\n}\n\n","import { isPlainObject } from '../types/isPlainObject.js';\nimport { keys } from '../objects/keys.js';\nimport { isTruthy } from '../types/isTruthy.js';\n/**\n * Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.\n *\n * @function compact\n * @category Utility\n * @type {Function}\n * @param {Array|Object} source - Array or Object to be compacted.\n * @returns {Array|Object} - A new object or array containing the filtered values.\n *\n * @example\n * import { compact, assert } from '@universalweb/acid';\n * assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);\n */\nexport function compact(source) {\n\tif (isPlainObject(source)) {\n\t\tconst sourceKeys = keys(source);\n\t\tconst sourceKeysLength = sourceKeys.length;\n\t\tconst targetObject = {};\n\t\tfor (let i = 0; i < sourceKeysLength; i++) {\n\t\t\tconst keyName = sourceKeys[i];\n\t\t\tconst item = source[keyName];\n\t\t\tconst isisTruthy = isTruthy(item);\n\t\t\tif (isisTruthy) {\n\t\t\t\ttargetObject[keyName] = item;\n\t\t\t}\n\t\t}\n\t\treturn targetObject;\n\t}\n\treturn source.filter((item) => {\n\t\treturn isTruthy(item);\n\t});\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMapAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMapAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = await forOfCompactMapAsync(source, async (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfCompactMapAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tconst result = await iteratee(item, resultsGenerator, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tresultsGenerator.push(result);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor await (const [key, value] of source) {\n\t\tconst result = await iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function forOfCompactMap\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n *\n * @example\n * import { assert,forOfCompactMap } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfCompactMap(source, (item) => {\n * return item;\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfCompactMap(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (hasValue(result)) {\n\t\t\t\tmethodPushBound(result);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\tconst methodSet = isFunction(results.set);\n\tfor (const [key, value] of source) {\n\t\tconst result = iteratee(value, key, results, source);\n\t\tif (hasValue(result)) {\n\t\t\tif (methodSet) {\n\t\t\t\tresults.set(key, result);\n\t\t\t} else {\n\t\t\t\tresults[key] = result;\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { compactMapArray } from '../arrays/compactMap.js';\nimport { compactMapAsyncArray } from '../arrays/compactMapAsync.js';\nimport { compactMapObject } from '../objects/compactMap.js';\nimport { compactMapAsyncObject } from '../objects/compactMapAsync.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfCompactMap } from './forOfCompactMap.js';\nimport { forOfCompactMapAsync } from './forOfCompactMapAsync.js';\n/**\n * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.\n *\n * @function compactMap\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { compactMap, assert } from '@universalweb/acid';\n * assert(compactMap({a: null, b: 2, c: 3}, (item) => {\n * return item;\n * }), {b: 2, c: 3});\n */\nexport const compactMap = generateLoop(compactMapArray, compactMapAsyncArray,\n\tcompactMapObject, compactMapAsyncObject, forOfCompactMap, forOfCompactMapAsync);\n","import { every } from './every.js';\nimport { isAsync } from '../types/isAsync.js';\nexport function everyArg(...methods) {\n\tif (isAsync(methods[0])) {\n\t\treturn async function(...args) {\n\t\t\treturn every(methods, async (method) => {\n\t\t\t\treturn every(args, async (item) => {\n\t\t\t\t\treturn method(item);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t}\n\treturn function(...args) {\n\t\treturn every(methods, (method) => {\n\t\t\treturn every(args, (item) => {\n\t\t\t\treturn method(item);\n\t\t\t});\n\t\t});\n\t};\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilter\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilter } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilter(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport function forOfFilter(source, iteratee = returnValue, resultsObject) {\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor (const [key, value] of source) {\n\t\t\tconst result = iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isSet } from '../types/isSet.js';\nimport { isArray } from '../types/isArray.js';\nimport { isGenerator } from '../types/isGenerator.js';\n/**\n * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function forOfFilterAsync\n * @category utility\n * @type {Function}\n * @param {Object|Function|Class|Map|Set|Array} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.\n * @param {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned.\n * @returns {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n *\n * @example\n * import { assert, forOfFilterAsync } from '@universalweb/acid';\n * const source = {a: undefined, b: 2, c: 3};\n * const temp = forOfFilterAsync(source, (item) => {\n * return Boolean(item);\n * });\n * assert(temp, {b: 2, c: 3});\n */\nexport async function forOfFilterAsync(source, iteratee = returnValue, resultsObject, generatorArgs) {\n\tif (isGenerator(source)) {\n\t\tconst resultsGenerator = [];\n\t\tfor await (const item of source(...generatorArgs)) {\n\t\t\tif (await iteratee(item, resultsGenerator, source) === true) {\n\t\t\t\tresultsGenerator.push(item);\n\t\t\t}\n\t\t}\n\t\treturn resultsGenerator;\n\t}\n\tconst results = resultsObject || cloneType(source);\n\tif (isArray(source) || isSet(source)) {\n\t\tconst methodPush = results.push || results.add;\n\t\tconst methodPushBound = methodPush && methodPush.bind(results);\n\t\tfor (const value of source) {\n\t\t\tconst result = await iteratee(value, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tmethodPushBound(value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst methodSet = isFunction(results.set);\n\t\tfor await (const [key, value] of source) {\n\t\t\tconst result = await iteratee(value, key, results, source);\n\t\t\tif (result === true) {\n\t\t\t\tif (methodSet) {\n\t\t\t\t\tresults.set(key, value);\n\t\t\t\t} else {\n\t\t\t\t\tresults[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n}\n","import { filterArray } from '../arrays/filter.js';\nimport { filterAsyncArray } from '../arrays/filterAsync.js';\nimport { filterAsyncObject } from '../objects/filterAsync.js';\nimport { filterObject } from '../objects/filter.js';\nimport { generateLoop } from './generateLoop.js';\nimport { forOfFilter } from './forOfFilter.js';\nimport { forOfFilterAsync } from './forOfFilterAsync.js';\n/**\n * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.\n *\n * @function filter\n * @category utility\n * @type {Function}\n * @param {Array | object | Function} source - Object that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.\n * @param {Object | Function} [results = {}] - Object that will be used to assign results.\n * @returns {Array | object | Function} - A new object of the same calling object's type.\n *\n * @example\n * import { filter, assert } from '@universalweb/acid';\n * assert(filter({a: false, b: true, c: true}, (item) => {\n * return item;\n * }), {b: true, c: true});\n */\nexport const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync);\n\n","import { eachArray } from '../arrays/each.js';\nimport { eachRight } from '../arrays/eachRight.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn (arg) => {\n\t\t\tlet value = arg;\n\t\t\tcallable(methods, (item) => {\n\t\t\t\tvalue = item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flow\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flow(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flow = returnFlow(eachArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowRight\n * @category utility\n * @type {Function}\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowRight(increment, increment, deduct)(0);\n * // => 1\n */\nexport const flowRight = returnFlow(eachRight);\n\n","import { eachAsyncArray } from '../arrays/eachAsync.js';\nimport { eachRightAsync } from '../arrays/eachRightAsync.js';\nfunction returnFlow(callable) {\n\treturn (...methods) => {\n\t\treturn async (arg) => {\n\t\t\tlet value = arg;\n\t\t\tawait callable(methods, async (item) => {\n\t\t\t\tvalue = await item(value);\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n/**\n * Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.\n *\n * @function flowAsync\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsync = returnFlow(eachAsyncArray);\n/**\n * This method is like flow except that it creates a function that invokes the given functions from right to left.\n *\n * @function flowAsyncRight\n * @category utility\n * @type {Function}\n * @async\n * @param {Array} collection - Methods to invoke.\n * @returns {Function} - Returns the new composite function.\n *\n * @example\n * flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0);\n * // => 2\n */\nexport const flowAsyncRight = returnFlow(eachRightAsync);\n\n","import { isFunction } from '../types/isFunction.js';\nimport { cloneType } from '../types/cloneType.js';\nimport { hasValue } from '../types/hasValue.js';\nexport function forMap(source, callback) {\n\tconst cloned = cloneType(source);\n\tconst method = cloned.push || cloned.add;\n\tif (method && isFunction(method)) {\n\t\tconst methodBound = method.bind(cloned);\n\t\tsource.forEach((item) => {\n\t\t\tconst result = callback(item, cloned);\n\t\t\tmethodBound(result);\n\t\t});\n\t} else if (isFunction(cloned.set)) {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned.set(key, result);\n\t\t});\n\t} else {\n\t\tsource.forEach((item, key) => {\n\t\t\tconst result = callback(item, key, cloned);\n\t\t\tcloned[key] = result;\n\t\t});\n\t}\n\treturn cloned;\n}\n","import { eachArray } from '../arrays/each.js';\n/**\n * Takes all but the last item in the array.\n *\n * @function arraysToObject\n * @type {Function}\n * @category utility\n * @param {Array} source - Array to have items extracted from.\n * @param {Array} properties - Array to have items extracted from.\n * @returns {Array} - Returns a completely flattened array.\n *\n * @example\n * import { arraysToObject, assert } from '@universalweb/acid';\n * assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});\n */\nexport function arraysToObject(source, properties) {\n\tconst sortedObject = {};\n\teachArray(source, (item, key) => {\n\t\tsortedObject[properties[key]] = item;\n\t});\n\treturn sortedObject;\n}\n\n","import { every } from './every.js';\nimport { isFunction } from '../types/isFunction.js';\nimport { isRegex } from '../types/isRegex.js';\nimport { isString } from '../types/isString.js';\nimport { noValue } from '../types/noValue.js';\nimport { isArray } from '../types/isArray.js';\n/**\n * Checks if an object contains something.\n *\n * @function has\n * @category utility\n * @param {Array|String|Object} source - Object to be checked.\n * @param {String|Array|Function|RegExp} search - Object that is being searched for.\n * @param {Number} fromIndex - Index at which to start searching.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { has, assert } from '@universalweb/acid';\n * assert(has('Hello World', 'Hello'), true);\n * assert(has(['Hello', 'World'], 'hello'), true);\n */\nexport function has(source, search, position) {\n\tif (noValue(source) || noValue(search)) {\n\t\treturn false;\n\t}\n\tif (isString(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn search.test(source);\n\t\t}\n\t\tif (isFunction(search)) {\n\t\t\treturn Boolean(search(source));\n\t\t}\n\t\treturn every(search, (item) => {\n\t\t\treturn Boolean(has(source, item));\n\t\t});\n\t}\n\tif (isArray(source)) {\n\t\tif (isString(search)) {\n\t\t\treturn source.includes(search, position);\n\t\t}\n\t\tif (isRegex(search)) {\n\t\t\treturn every(source, (item) => {\n\t\t\t\treturn item.test(search);\n\t\t\t});\n\t\t}\n\t\tif (isArray(search)) {\n\t\t\treturn every(search, (item) => {\n\t\t\t\treturn Boolean(has(source, item));\n\t\t\t});\n\t\t}\n\t}\n\treturn false;\n}\n","import { regexTestFactory } from '../internal/regexTestFactory.js';\n/**\n * Checks if the string has a '.'.\n *\n * @function hasDot\n * @category utility\n * @param {*} source - Object to be checked.\n * @returns {Boolean} - Returns true or false.\n *\n * @example\n * import { hasDot, assert } from '@universalweb/acid';\n * assert(hasDot('test.js'), true);\n */\nexport const hasDot = regexTestFactory(/\\./);\n","import { hasValue } from '../types/hasValue.js';\n/**\n * Checks if a property on an object has a value. If not, it will assign a value.\n *\n * @function ifNotAssign\n * @category utility\n * @type {Function}\n * @param {Object} rootObject - The object to check.\n * @param {String} property - The property name which is to be checked.\n * @param {*} equalThis - The reassignment value for the property being checked.\n * @returns {Object} - Returns the provided rootObject.\n *\n * @example\n * import { ifNotAssign, assert } from '@universalweb/acid';\n * assert(ifNotAssign({}, 'a', 1), {a:1});\n */\nexport const ifNotAssign = (rootObject, property, equalThis) => {\n\tif (property && !hasValue(rootObject[property])) {\n\t\trootObject[property] = equalThis;\n\t}\n\treturn rootObject;\n};\n\n","import { construct } from '../classes/construct.js';\nimport { truth } from './stubTrue.js';\nimport { falsy } from './stubFalse.js';\nimport { noop } from './noop.js';\nimport { times } from './times.js';\nexport class Intervals {\n\tlist = construct(Map);\n\tconstruct() {\n\t}\n\t/**\n\t * Remove a setInterval that was created using the intervals function.\n\t *\n\t * @param {Number} id - The id of the setInterval to remove.\n\t * @returns {undefined} - Returns nothing.\n\t *\n\t * @example\n\t * timer(() => {}, 100);\n\t * // => 0\n\t */\n\tremove(id) {\n\t\tclearInterval(id);\n\t\tthis.list.delete(id);\n\t}\n\thas(id) {\n\t\treturn this.list.has(id);\n\t}\n\tget(id) {\n\t\treturn this.list.get(id);\n\t}\n\t/**\n\t * Create a setInterval & add it to the list of interval timers.\n\t *\n\t * @type {Function}\n\t * @param {Function} callable - The function to be invoked.\n\t * @param {Number} time - The time in milliseconds.\n\t * @returns {Object} - Returns setTimeoutId ID.\n\t *\n\t * @example\n\t * timers.set(() => {}, 100);\n\t * // => 0\n\t */\n\tset(callable, time) {\n\t\tconst currentThis = this;\n\t\tconst id = setInterval(() => {\n\t\t\tcallable();\n\t\t}, time);\n\t\tthis.list.set(id, truth);\n\t\treturn id;\n\t}\n\t/**\n\t * Clear all active setIntervals.\n\t *\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * intervals.clear();\n\t * // => undefined\n\t */\n\tclear() {\n\t\tconst currentThis = this;\n\t\tcurrentThis.list.forEach((id) => {\n\t\t\tcurrentThis.remove(id);\n\t\t});\n\t}\n}\nexport const intervals = construct(Intervals);\n/**\n * Create an interval timer.\n *\n * @function interval\n * @category function\n * @type {Function}\n * @param {Function} callable - The function to be invoked.\n * @param {Number} time - The time in milliseconds.\n * @returns {Object} - Returns setInterval ID.\n *\n * @example\n * interval(() => {}, 100);\n * // => 0\n */\nexport function interval(callable, time) {\n\treturn intervals.set(callable, time);\n}\n/**\n * Clear all active interval timers.\n *\n * @function clearIntervals\n * @category function\n * @returns {undefined} - Returns undefined.\n *\n * @example\n * clearIntervals();\n * // => undefined\n */\nexport function clearIntervals() {\n\tconst id = setTimeout(noop, 0);\n\ttimes(id, (index) => {\n\t\tintervals.remove(index);\n\t});\n}\n","import { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { each } from './each.js';\n/**\n * Recursively deep assign a target object with a source object. The source objects values are assigned onto the target object's matching properties.\n *\n * @function merge\n * @category utility\n * @type {Function}\n * @param {Object} target - The object which will be modified.\n * @param {Object} source - Source object to merge into the target object.\n * @returns {Object} - Returns target.\n *\n * @example\n * import { merge, assert } from '@universalweb/acid';\n * assert(merge([1,2,4],[3]), [3, 2, 4]);\n */\nconst structuredCloneSafe = globalThis.structuredClone;\nexport function merge(target, ...sources) {\n\teach(sources, (currentSource) => {\n\t\teach(currentSource, (sourceItem, sourceKey) => {\n\t\t\tif (target[sourceKey]) {\n\t\t\t\tif (isPlainObject(sourceItem) || isArray(sourceItem) || sourceItem.forEach) {\n\t\t\t\t\treturn merge(target[sourceKey], sourceItem);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[sourceKey] = sourceItem;\n\t\t});\n\t});\n\treturn target;\n}\n\n","import { get } from './get.js';\nimport { hasValue } from '../types/hasValue.js';\nimport { assign } from '../objects/assign.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Set & Get a model.\n *\n * @function model\n * @type {Function}\n * @category utility\n * @param {String} modelName - Name of the model.\n * @param {Object} modelValue - The model object.\n * @returns {*} - Returns the associated model.\n * @example\n * model('test', {a: 1}) && model('test');\n * // => {a: 1}\n */\nexport class Model {\n\tstatic models = {};\n\tconstructor(modelName, modelValue) {\n\t\tif (hasValue(modelValue)) {\n\t\t\tassign(this, modelValue);\n\t\t\tthis.modelName = modelName;\n\t\t\tModel.models.set(modelName, modelValue);\n\t\t} else {\n\t\t\tassign(this, modelName);\n\t\t}\n\t}\n}\n/**\n * Returns the model with the given name.\n *\n * @param {String} modelName - The name of the model to return.\n * @param {any} [modelValue] - The value of the model to return.\n * @returns {Model} - The model with the given name.\n */\nexport function model(modelName, modelValue) {\n\tif (hasValue(modelValue)) {\n\t\treturn construct(Model, [modelName, modelValue]);\n\t}\n\treturn get(modelName, Model.models);\n}\n\n","import { eachRight } from '../arrays/eachRight.js';\n/**\n * Takes the first two arguments given and returns them inside a new array.\n *\n * @function pair\n * @category utility\n * @param {*} source - The source object.\n * @param {*} source - The source object.\n * @returns {Array} The array which holds the pair.\n *\n * @example\n * import { pair, assert } from '@universalweb/acid';\n * assert(air(1, 2), [1, 2]);\n */\nexport function pair(argument1, argument2) {\n\treturn [argument1, argument2];\n}\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrent\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.all.\n *\n * @example\n * import { concurrent, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrent([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [1, 2]);\n */\nexport function concurrent(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.all(queue);\n}\n\n","import { hasValue } from '../types/hasValue.js';\nimport { returnValue } from './returnValue.js';\n/**\n * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.\n *\n * @function concurrentStatus\n * @category utility\n * @type {Function}\n * @param {Array} source - Array that will be looped through.\n * @param {Function} iteratee - Transformation function which is passed item, index, calling array, and array length.\n * @param {*} thisBind - An object to be given each time to the iteratee.\n * @returns {Array} - The array from Promise.allSettled.\n *\n * @example\n * import { concurrentStatus, assert } from '@universalweb/acid';\n * const tempList = [];\n * await concurrentStatus([1, 2], async (item) => {\n * return item;\n * });\n * assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);\n */\nexport function concurrentStatus(source, iteratee, thisBind) {\n\tconst arrayLength = source.length;\n\tconst queue = [];\n\tfor (let index = 0;index < arrayLength; index++) {\n\t\tqueue[index] = iteratee(source[index], index, source, arrayLength, thisBind);\n\t}\n\treturn Promise.allSettled(queue);\n}\n\n","/**\n * A wrapper around the promise constructor.\n *\n * @function promise\n * @type {Function}\n * @category utility\n * @param {Function} callback - Function to be called back.\n * @returns {Promise} - A constructor with a callback function.\n * @test\n * (async () => {\n * const result = await promise((accept) => {\n * accept(true);\n * });\n * return assert(result, true);\n * });\n * @example\n * promise((a) => {});\n * // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n */\nexport function promise(callback) {\n\treturn new Promise(callback);\n}\n\n","import { isEqual } from './isEqual.js';\nimport { everyArray } from '../arrays/every.js';\nimport { keys } from '../objects/keys.js';\n/**\n * Using a deep comparison it checks if properties of two objects using an array are equal.\n *\n * @function propertyMatch\n * @type {Function}\n * @category utility\n * @param {Object} source - The source object to compare.\n * @param {Object} compared - Object to be compared to source.\n * @param {Array} properties - List of properties to compare defaults to keys(source).\n * @returns {Array} - Returns an array of properties.\n *\n * @example\n * import { propertyMatch, assert } from '@universalweb/acid';\n * assert(propertyMatch({\n * a: 1,\n * b: 2\n * }, {\n * a: 1,\n * b: 2\n * }, ['a', 'b']), true);\n */\nexport const propertyMatch = (source, compared, properties = keys(source)) => {\n\treturn everyArray(properties, (property) => {\n\t\treturn isEqual(source[property], compared[property]);\n\t});\n};\n\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setKey(source, key, value) {\n\tif (key && isPlainObject(source)) {\n\t\tsource[key] = value;\n\t} else if (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.set) {\n\t\tsource.set(key, value);\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { isFunction } from '../types/isFunction.js';\nimport { isArray } from '../types/isArray.js';\nimport { isPlainObject } from '../types/isPlainObject.js';\nimport { isNumber } from '../types/isNumber.js';\nexport function setValue(source, value, key) {\n\tif (isNumber(key) && isArray(source)) {\n\t\tsource[key] = value;\n\t} else if (source.push) {\n\t\tsource.push(value);\n\t} else if (source.add) {\n\t\tsource.add(value);\n\t} else {\n\t\tsource[key] = value;\n\t}\n\treturn source;\n}\n","import { eachObject } from '../objects/each.js';\nexport class Store {\n\tsource;\n\tconstructor(source = {}) {\n\t\tthis.source = source;\n\t\tif (source === null || typeof source !== 'object') {\n\t\t\treturn source;\n\t\t}\n\t\teachObject(source, (property) => {\n\t\t\tsource[property] = new Store(source[property]);\n\t\t});\n\t\tthis.data = new Proxy(source, {\n\t\t\tget(proxySource, property) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\treturn proxySource[property];\n\t\t\t},\n\t\t\tset(proxySource, property, value) {\n\t\t\t\tconsole.log(proxySource, property, proxySource[property]);\n\t\t\t\tproxySource[property] = new Store(value);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t}\n}\n","/**\n * This method returns a new empty array.\n *\n * @function stubArray\n * @category utility\n * @type {Function}\n * @returns {Array} - Returns the new empty array.\n * @example\n * import { stubArray } from '@universalweb/acid';\n * stubArray();\n * // => []\n */\nexport const stubArray = () => {\n\treturn [];\n};\n\n","/**\n * This method returns a new empty object.\n *\n * @function stubObject\n * @category utility\n * @type {Function}\n * @returns {Object} - Returns the new empty object.\n *\n * @example\n * import { stubObject } from '@universalweb/acid';\n * stubObject();\n * // => {}\n */\nexport const stubObject = () => {\n\treturn {};\n};\n\n","/**\n * This method returns a new empty string.\n *\n * @function stubString\n * @category utility\n * @type {Function}\n * @returns {String} - Returns the new empty string.\n *\n * @example\n * import { stubString } from '@universalweb/acid';\n * stubString();\n * // => ''\n */\nexport const stubString = () => {\n\treturn '';\n};\n","/**\n * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.\n *\n * @async\n * @function timesAsync\n * @category utility\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @returns {undefined} - Nothing.\n *\n * @example\n * import { timesAsync } from '@universalweb/acid';\n * await timesAsync(3, async (item) => {\n * console.log(item);\n * });\n * // 0\n * // 1\n * // 2\n * // => undefined\n */\nexport async function timesAsync(amount, iteratee) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tawait iteratee(amount);\n\t}\n}\n/**\n * Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.\n *\n * @async\n * @function timesMapAsync\n * @category array\n * @type {Function}\n * @param {Number} amount - The amount of times to loop invoking the iteratee.\n * @param {Function} iteratee - Transformation function which is passed index and amount.\n * @param {Array} [results = []] - Array that will have iteratee return pushed to.\n * @returns {Array} - An array with iteratee's returned values.\n *\n * @example\n * import { timesMapAsync } from '@universalweb/acid';\n * await timesMapAsync(3, (item) => {\n * return item;\n * });\n * // => [0, 1, 2]\n */\nexport async function timesMapAsync(amount, iteratee, results = []) {\n\tfor (let index = 0; index < amount; index++) {\n\t\tresults[index] = await iteratee(amount);\n\t}\n\treturn results;\n}\n","import { isEqual } from './isEqual.js';\n/**\n * Performs a toggle between 2 values using a deep or strict comparison.\n *\n * @function toggle\n * @type {Function}\n * @category utility\n * @param {(string|number|Object|Array)} value - Strictly compared against on & off arguments.\n * @param {(string|number|Object|Array)} on - The first object to be compared to.\n * @param {(string|number|Object|Array)} off - The second object to be compared to.\n * @returns {(string|number|Object|Array)} - The opposing value to the current.\n *\n * @example\n * import { toggle } from '@universalweb/acid';\n * let toggleMe = true;\n * toggleMe = toggle(toggleMe, true, false);\n * // => false\n */\nexport function toggle(value, on = true, off = false) {\n\treturn (isEqual(on, value)) ? off : on;\n}\n\n","/**\n * Unique ID Generator Module.\n *\n * @module utility/uid\n */\nimport { hasValue } from '../types/hasValue.js';\nimport { construct } from '../classes/construct.js';\n/**\n * Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @class UniqID\n * @type {Class}\n * @category utility\n * @returns {UniqID} - Returns a new instance of UniqID.\n *\n * @example\n * import { UniqID, construct, assert } from '@universalweb/acid';\n * const gen = construct(UniqID);\n * assert(gen.get(), 0);\n * assert(gen.get(), 1);\n * gen.free(0);\n * assert(gen.get(), 0);\n */\nexport class UniqID {\n\ttotalActive = 0;\n\tfreed = [];\n\ttotalFree = 0;\n\t/**\n\t * Generates a new ID or recycle one that is no longer used.\n\t *\n\t * @function get\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @returns {Number} - Returns a unique id.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t */\n\tget() {\n\t\tlet result = this.freed.shift();\n\t\tif (hasValue(result)) {\n\t\t\tthis.totalFree--;\n\t\t} else {\n\t\t\tresult = this.totalActive;\n\t\t\tthis.totalActive++;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t * Frees an UID so that it may be recycled for later use.\n\t *\n\t * @function free\n\t * @class UniqID\n\t * @category utility\n\t * @type {Function}\n\t * @param {Number} id - Number to be freed.\n\t * @returns {undefined} - Nothing is returned.\n\t *\n\t * @example\n\t * import { UniqID, construct, assert } from '@universalweb/acid';\n\t * const gen = construct(UniqID);\n\t * assert(gen.get(), 0);\n\t * gen.free(0);\n\t * assert(gen.get(), 0);\n\t */\n\tfree(id) {\n\t\tthis.freed.push(id);\n\t\tthis.totalFree++;\n\t\tconst isActive = this.totalActive > 0;\n\t\tconst shouldReset = this.totalActive === this.totalFree;\n\t\tif (isActive && shouldReset) {\n\t\t\tthis.reset();\n\t\t}\n\t}\n\treset() {\n\t\tthis.totalActive = 0;\n\t\tthis.freed.length = 0;\n\t\tthis.totalFree = 0;\n\t}\n}\n/**\n * A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.\n *\n * @function uniqID\n * @category utility\n *\n * @example\n * import { uniqID, assert } from '@universalweb/acid';\n * assert(uniqID.get(), 0);\n * assert(uniqID.get(), 1);\n * uniqID.free(0);\n * assert(uniqID.get(), 0);\n */\nexport const uniqID = construct(UniqID);\n","/**\n * Class representing a virtual storage. A drop in replacement for localStorage.\n * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it.\n * Direct class/constructor access is named VirtualStorage.\n *\n * @category utility\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage } from '@universalweb/acid';\n * const myVirtualStorage = virtualStorage();\n * // => New Crate Object\n */\nexport class VirtualStorage {\n\tconstructor(initialObject = {}) {\n\t\tthis.items = initialObject;\n\t}\n\t/**\n\t * Get an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.getItem('key');\n\t * // => 'value'\n\t */\n\tgetItem(key) {\n\t\treturn this.items[key];\n\t}\n\t/**\n\t * Save an item to a virtual storage object.\n\t *\n\t * @param {String} key - The key used to store the data.\n\t * @param {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { VirtualStorage, assert } from '@universalweb/acid';\n\t * const vStorage = new VirtualStorage();\n\t * vStorage.setItem('title', 'value');\n\t * assert(vStorage.getItem('title'), 'value');\n\t */\n\tsetItem(key, value) {\n\t\tthis.items[key] = value;\n\t}\n\t/**\n\t * Clears all data from the virtual storage object by replacing with a new object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.clear();\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tclear() {\n\t\tthis.items = {};\n\t}\n\t/**\n\t * Remove an item from a virtual storage object.\n\t *\n\t * @param {String} key - The key used to remove data.\n\t * @returns {undefined} - Returns undefined.\n\t *\n\t * @example\n\t * import { virtualStorage } from '@universalweb/acid';\n\t * const myVirtualStorage = virtualStorage();\n\t * myVirtualStorage.setItem('key', 'value');\n\t * myVirtualStorage.removeItem('key');\n\t * myVirtualStorage.getItem('key');\n\t * // => undefined\n\t */\n\tremoveItem(key) {\n\t\tthis.items[key] = null;\n\t}\n}\n/**\n * The virtualStorage function is a factory which wraps the VirtualStorage class constructor.\n *\n * @function virtualStorage\n * @category browser\n * @type {Function}\n * @returns {*} - Returns a new VirtualStorage Object.\n *\n * @example\n * import { virtualStorage, assert } from '@universalweb/acid';\n * const vStorage = virtualStorage();\n * vStorage.setItem('title', 'value');\n * assert(vStorage.getItem('title'), 'value');\n */\nexport function virtualStorage(initialObject) {\n\treturn new VirtualStorage(initialObject);\n}\n\n","import {\n\treaddir, copyFile, mkdir, stat\n} from 'fs/promises';\nimport path from 'path';\nimport { eachAsyncArray } from '../arrays/eachAsync.js';\nasync function copyToPath(sourceFolder, destinationFolder, file) {\n\tconst sourcePath = path.join(sourceFolder, file);\n\tconst destinationPath = path.join(destinationFolder, file);\n\tawait copyFile(sourcePath, destinationPath);\n}\nexport async function copyFolder(sourceFolder, destinationFolder) {\n\tconst files = await readdir(sourceFolder);\n\tawait eachAsyncArray(files, async (file) => {\n\t\tconst sourcePath = path.join(sourceFolder, file);\n\t\tconst filestats = await stat(sourcePath);\n\t\tif (filestats.isDirectory()) {\n\t\t\tconst folderDestination = path.join(destinationFolder, file.replace(sourceFolder, ''));\n\t\t\tawait mkdir(folderDestination, {\n\t\t\t\trecursive: true\n\t\t\t});\n\t\t\tawait copyFolder(sourcePath, folderDestination);\n\t\t} else {\n\t\t\tawait copyToPath(sourceFolder, destinationFolder, file);\n\t\t}\n\t});\n\treturn true;\n}\n\n","import path from 'path';\nimport { fileURLToPath } from 'url';\nexport function currentFile(importMeta) {\n\tif (globalThis.__filename) {\n\t\treturn __filename;\n\t}\n\treturn fileURLToPath(importMeta.url);\n}\nexport function currentPath(importMeta) {\n\tif (globalThis.__dirname) {\n\t\treturn __dirname;\n\t}\n\treturn path.dirname(fileURLToPath(importMeta.url));\n}\n"],"names":["chunk","array","size","chunked","index","forEach","item","key","push","clearArray","source","length","cloneArray","slice","isUndefined","undefined","hasLength","Boolean","isNull","hasValue","returnValue","eachArray","iteratee","thisCall","additionalArg","arrayLength","call","compactMapArray","results","arrayOriginal","returned","async","eachAsyncArray","compactMapAsyncArray","result","sign","Math","isNegative","rangeUp","start","end","step","sourceArray","position","rangeDown","range","callback","isArray","Array","isNotArray","ensureArray","flattenDeep","flat","Infinity","reflectConstruct","Reflect","construct","target","argumentsList","newTarget","args","difference","sources","differencesMap","Map","differences","currentArray","parentIndex","child","childIndex","childRoot","get","count","set","drop","amount","upTo","splice","dropRight","eachRight","thisBind","eachRightAsync","everyArray","sourceLength","everyAsyncArray","filterArray","filterAsyncArray","first","flatten","level","i","reduce","previousValue","currentValue","concat","initial","intersection","arrays","otherItem","includes","invokeArray","arg","objectKeys","Object","keys","regexToPath","regexCloseBracket","emptyString","toPath","replace","split","propertyString","link","hasOwn","hasKeys","properties","pathArray","lastPath","pop","initialPathObject","hasAnyKeys","find","isPlainObject","value","constructor","toString","trim","isConstructor","isConstructorFactory","constructorName","name","isConstructorNameFactory","isTypeFactory","method","primarySource","otherSources","isBufferCall","isBuffer","isEqual","equals","sourceProperties","isMatchArray","compareArray","mathNativeMax","max","largest","last","indexFrom","mapArray","mapAsyncArray","mapRightArray","trueIndex","mapWhile","subtract","minuend","subtrahend","sortNumberAscending","numberList","sort","partition","predicate","rejected","subtractReverse","sortNumberDescening","remove","removeThese","removeBy","rest","right","floor","random","randomInt","min","arrayFrom","from","toArray","arrayLike","mapFn","thisArg","isNumberEqual","shuffle","shuffleArray","sample","sampleArray","used","mathNativeMin","smallest","getNumberInsertIndex","insertIndex","take","endIndex","takeRight","indexRight","onlyUnique","indexOf","sortUnique","unique","isSorted","filter","union","untilFalseArray","untilTrueArray","whileCompactMap","whileEachArray","whileMapArray","without","sourcesSet","Set","has","xor","xorMap","xored","zip","map","unZip","arraySet","ensureBuffer","Buffer","alloc","clearBuffer","fill","countBy","collection","object","countKey","propertyName","countWithoutKey","findIndexCache","element","indexMatch","findIndex","id","findItem","sortCollectionDescendingFilter","previous","next","ifMatch","previousKey","nextKey","sortCollectionDescending","sortObjectsAlphabetically","localeCompare","sortCollectionAlphabetically","sortCollectionAscendingFilter","sortCollectionAscending","getHighest","getLowest","groupBy","sortedObject","indexBy","invokeCollection","property","invokeCollectionAsync","isNumberCall","isNumber","isNotNumber","isString","String","isNotString","pluckObject","targets","pluck","sortObjectsAlphabeticallyReverse","sortCollectionAlphabeticallyReverse","getFileExtension","substring","lastIndexOf","getFilename","regexTestFactory","regexType","test","isFileCSS","isFileHTML","isFileJS","isFileJSON","after","callable","point","ary","before","objectAssign","assign","eachAsyncObject","propertyCount","eachObject","objectKeysArray","forEachAsync","values","valuesLength","isSetCall","isSet","forOf","isGeneratorCall","isGenerator","forOfAsync","generatorArgs","isFunction","Function","isAsyncCall","isAsync","generateLoop","arrayLoop","arrayLoopAsync","objectLoop","objectLoopAsync","forOfLoop","forOfLoopAsync","argument1","argument2","argument3","isIterateeAsync","each","Chain","methods","this","addChainMethod","thisChain","methodName","setValue","done","chain","config","curry","arity","curries","curried","curryArgs","curryRight","unshift","truth","stubTrue","falsy","stubFalse","noop","times","timesMap","Timers","list","clearTimeout","delete","time","currentThis","setTimeout","clear","timers","timer","clearTimers","applyNative","apply","thisArgument","debounce","debounced","bind","ifInvoke","inAsync","firstArgument","inSync","negate","nthArg","once","mapAsyncObject","thisObject","mapObject","original","getType","cloneType","sourceType","forOfMap","resultsObject","methodPush","add","methodPushBound","methodSet","forOfMapAsync","resultsGenerator","over","iteratees","everyAsyncObject","everyObject","forOfEvery","forOfEveryAsync","every","overEvery","predicates","reArg","indexes","throttle","throttled","shouldThrottle","wrap","wrapper","functionPrototype","prototype","cacheNativeMethod","getPropNames","getOwnPropertyNames","getPropDesc","getOwnPropertyDescriptor","defProp","defineProperty","hasProp","hasOwnProperty","isSame","is","augend","addend","deduct","divide","increment","multiply","calcProgress","total","currentAmount","randomFloat","remainder","subtractAll","a","b","sumAll","isNumberInRange","isNumberNotInRange","isPositive","isZero","objectEntries","entries","getEntries","compactKeys","compactedKeys","compactMapAsyncObject","compactMapObject","filterObject","filterAsyncObject","invert","isMatchObject","sourceKeys","targetKeys","isRegexCall","isRegex","escapeRegexRegex","escapeRegex","arrayToRegex","makeSafe","RegExp","join","omit","blacklist","blacklistRegex","numberToString","pick","whitelist","objectSize","zipObject","zipedObject","unZipObject","unZippedKeys","normalizeCase","camelCase","toLowerCase","toUpperCase","space","kebabCase","snakeCase","upperCase","lowerCase","insertInRange","string","text","rightString","chunkString","match","initialString","restString","replaceList","words","truncate","maxLength","stringLength","breakAll","breakAllLength","truncateDown","truncateRight","truncateUp","rawURLDecodeRegex","andRegex","lessThanRegex","moreThanRegex","doubleQuoteRegex","rawURLDecode","decodeURIComponent","htmlEntities","sanitize","tokenizeRegEx","wordsRegEx","tokenize","getWords","upperFirstLetter","upperFirst","upperFirstOnly","upperFirstAll","upperFirstOnlyAll","getTypeName","isArguments","noValue","isMapCall","isMap","typedArrayRegex","arrayConstructorName","isTypedArray","isArrayLike","strictFlag","isBigIntCall","isBigInt","isBooleanCall","isBoolean","isArrayBufferCall","isArrayBuffer","isChild","sourceChild","targetParent","constructorNames","isCloneable","isDateCall","isDate","isEmpty","isFalse","isF32Call","isF32","isF64Call","isF64","isInteger","Number","isFloat","isI16Call","isI16","isI32Call","isI32","isI8Call","isI8","isIterable","Symbol","iterator","isPromise","Promise","isKindAsync","isParent","sourceParent","targetChild","isPrimitive","type","isRelated","targetOne","targetTwo","isSafeInteger","isSafeInt","isSameType","other","otherType","isTrue","isU16Call","isU16","isU32Call","isU32","isU8Call","isU8","isU8CCall","isU8C","isWeakMapCall","isWeakMap","isDeno","globalThis","Deno","isNodejs","process","versions","node","isTruthy","returnIfTrue","isFalsy","ifValue","optional","notEqual","jsonNative","JSON","jsonParse","reviver","parse","stringify","createAssertError","expected","localOptions","options","errorTitle","title","file","Error","assertAsync","sourceArg","assert","bindAll","bindThis","targetAssign","structuredCloneSafe","structuredClone","clone","compact","sourceKeysLength","targetObject","keyName","forOfCompactMapAsync","forOfCompactMap","compactMap","everyArg","forOfFilter","forOfFilterAsync","returnFlow","flow","flowRight","flowAsync","flowAsyncRight","forMap","cloned","methodBound","arraysToObject","search","hasDot","ifNotAssign","rootObject","equalThis","Intervals","clearInterval","setInterval","intervals","interval","clearIntervals","merge","currentSource","sourceItem","sourceKey","Model","static","modelName","modelValue","models","model","pair","concurrent","queue","all","concurrentStatus","allSettled","promise","propertyMatch","compared","setKey","Store","data","Proxy","proxySource","console","log","stubArray","stubObject","stubString","timesAsync","timesMapAsync","toggle","on","off","UniqID","totalActive","freed","totalFree","shift","free","isActive","shouldReset","reset","uniqID","VirtualStorage","initialObject","items","getItem","setItem","removeItem","virtualStorage","copyFolder","sourceFolder","destinationFolder","files","readdir","sourcePath","path","stat","isDirectory","folderDestination","mkdir","recursive","destinationPath","copyFile","copyToPath","currentFile","importMeta","__filename","fileURLToPath","url","currentPath","__dirname","dirname"],"mappings":"iIAcO,SAASA,EAAMC,EAAOC,EAAO,GACnC,MAAMC,EAAU,GAChB,IAAIC,EAAQ,EAUZ,OATAH,EAAMI,SAAQ,CAACC,EAAMC,KACdA,EAAML,IACXC,EAAQK,KAAK,IACTD,GACHH,KAGFD,EAAQC,GAAOI,KAAKF,EAAK,IAEnBH,CACR,CCdO,SAASM,EAAWC,GAE1B,OADAA,EAAOC,OAAS,EACTD,CACR,CCHO,SAASE,EAAWF,GAC1B,OAAOA,EAAOG,OACf,CCJO,SAASC,EAAYJ,GAC3B,YAAkBK,IAAXL,CACR,CCAO,SAASM,EAAUN,GACzB,OAAOO,QAAQP,EAAOC,OACvB,CCFO,SAASO,EAAOR,GACtB,OAAkB,OAAXA,CACR,CCDO,SAASS,EAAST,GACxB,OAAQI,EAAYJ,KAAYQ,EAAOR,EACxC,CCRO,SAASU,EAAYV,GAC3B,OAAOA,CACR,CCYO,SAASW,EAAUX,EAAQY,EAAUC,EAAUC,GACrD,IAAKd,EACJ,OAED,MAAMe,EAAcf,EAAOC,OAC3B,GAAIQ,EAASI,GACZ,IAAK,IAAInB,EAAQ,EAAGA,EAAQqB,EAAarB,IACxCkB,EAASI,KAAKH,EAAUb,EAAON,GAAQA,EAAOM,EAAQe,EAAaD,QAGpE,IAAK,IAAIpB,EAAQ,EAAGA,EAAQqB,EAAarB,IACxCkB,EAASZ,EAAON,GAAQA,EAAOM,EAAQe,EAAaD,GAGtD,OAAOd,CACR,CCfO,SAASiB,EAAgBjB,EAAQY,EAAWF,EAAaQ,EAAU,GAAIL,EAAUC,GAgBvF,OAfIL,EAASI,GACZF,EAAUX,GAAQ,CAACJ,EAAMF,EAAOyB,EAAeJ,KAC9C,MAAMK,EAAWR,EAASI,KAAKH,EAAUjB,EAAMF,EAAOwB,EAASC,EAAeJ,EAAaD,GACvFL,EAASW,IACZF,EAAQpB,KAAKsB,EACb,IAGFT,EAAUX,GAAQ,CAACJ,EAAMF,EAAOyB,EAAeJ,KAC9C,MAAMK,EAAWR,EAAShB,EAAMF,EAAOwB,EAASC,EAAeJ,EAAaF,EAAUC,GAClFL,EAASW,IACZF,EAAQpB,KAAKsB,EACb,IAGIF,CACR,CCjBOG,eAAeC,EAAetB,EAAQY,EAAUC,EAAUC,GAChE,IAAKd,EACJ,OAED,MAAMe,EAAcf,EAAOC,OAC3B,GAAIQ,EAASI,GACZ,IAAK,IAAInB,EAAQ,EAAGA,EAAQqB,EAAarB,UAClCkB,EAASI,KAAKH,EAAUb,EAAON,GAAQA,EAAOM,EAAQe,EAAaD,QAG1E,IAAK,IAAIpB,EAAQ,EAAGA,EAAQqB,EAAarB,UAClCkB,EAASZ,EAAON,GAAQA,EAAOM,EAAQe,EAAaD,GAG5D,OAAOd,CACR,CCjBOqB,eAAeE,EAAqBvB,EAAQY,EAAWF,GAC7D,MAAMQ,EAAU,GAOhB,aANMI,EAAetB,GAAQqB,MAAOzB,EAAMF,EAAOqB,KAChD,MAAMS,QAAeZ,EAAShB,EAAMF,EAAOwB,EAASH,GAChDN,EAASe,IACZN,EAAQpB,KAAK0B,EACb,IAEKN,CACR,CChBA,MAAQO,KAAAA,GAASC,KACV,SAASC,EAAW3B,GAC1B,OAAyB,IAAlByB,EAAKzB,EACb,CCfO,SAAS4B,EAAQC,EAAOC,EAAKC,EAAMC,GACzC,IAAIC,EAAWJ,EACf,KAAOI,EAAWH,GACjBE,EAAYlC,KAAKmC,GACjBA,GAAYF,EAEb,OAAOC,CACR,CACO,SAASE,EAAUL,EAAOC,EAAKC,EAAMC,GAC3C,IAAIC,EAAWJ,EACf,KAAOI,EAAWH,GACjBE,EAAYlC,KAAKmC,GACjBA,GAAYF,EAEb,OAAOC,CACR,CAgBO,SAASG,EAAMN,EAAOC,EAAKC,EAAO,EAAGC,EAAc,IACzD,OAAIL,EAAWI,GACPC,EAEJH,EAAQC,EACJF,EAAQC,EAAOC,EAAKC,EAAMC,GAE1BE,EAAUL,EAAOC,EAAKC,EAAMC,EAErC,CCzCO,SAASrC,EAAQK,EAAQoC,GAE/B,OADApC,EAAOL,QAAQyC,GACRpC,CACR,CCUY,MAACqC,EAAUC,MAAMD,QActB,SAASE,EAAWvC,GAC1B,OAAQqC,EAAQrC,EACjB,CCdO,SAASwC,EAAYxC,GAC3B,OAAQqC,EAAQrC,IAAWA,GAAYS,EAAST,IAAW,CAACA,IAAY,EACzE,CCHO,SAASyC,EAAYzC,GAC3B,OAAOA,EAAO0C,KAAKC,IACpB,CCKA,MAAMC,EAAmBC,QAAQC,UAE1B,SAASA,EAAUC,EAAQC,EAAgB,GAAIC,GACrD,MAAMC,EAAQb,EAAQW,GAAkBA,EAAgB,CAACA,GACzD,OAAIC,EACIL,EAAiBG,EAAQG,EAAMD,GAEhCL,EAAiBG,EAAQG,EACjC,CCXO,SAASC,KAAcC,GAC7B,MAAMC,EAAiBP,EAAUQ,KAC3BC,EAAc,GAuBpB,OAtBA5C,EAAUyC,GAAS,CAACI,EAAcC,KACjC9C,EAAU6C,GAAc,CAACE,EAAOC,KAC/B,IAAIC,EAAYP,EAAeQ,IAAIH,GACnC,GAAKE,EAOE,IAAIA,EAAUH,cAAgBA,EACpC,OAEAG,EAAUE,OACV,MAVAF,EAAY,CACXE,MAAO,EACPL,cACAC,SAEDL,EAAeU,IAAIL,EAAOE,EAK1B,GACA,IAEHjE,EAAQ0D,GAAiBzD,IACL,IAAfA,EAAKkE,OAAoC,IAArBlE,EAAK6D,aAC5BF,EAAYzD,KAAKF,EAAK8D,MACtB,IAEKH,CACR,CC5BO,SAASS,EAAKzE,EAAO0E,EAAS,EAAGC,EAAO3E,EAAMU,QACpD,OAAOV,EAAM4E,OAAOF,EAAQC,EAC7B,CCDY,MAACE,EAAY,CAAC7E,EAAO0E,EAAS,EAAGC,EAAO3E,EAAMU,SAClD+D,EAAKzE,EAAO,EAAG2E,EAAOD,GCGvB,SAASI,EAAUrE,EAAQY,EAAU0D,GAC3C,IAAKtE,EACJ,OAED,MAAMe,EAAcf,EAAOC,OAC3B,IAAK,IAAIP,EAAQqB,EAAc,EAAErB,GAAS,EAAEA,IAC3CkB,EAASZ,EAAON,GAAQA,EAAOM,EAAQe,EAAauD,GAErD,OAAOtE,CACR,CCXOqB,eAAekD,EAAevE,EAAQY,GAC5C,IAAKZ,EACJ,OAED,MAAMe,EAAcf,EAAOC,OAC3B,IAAK,IAAIP,EAAQqB,EAAc,EAAGrB,GAAS,EAAGA,UACvCkB,EAASZ,EAAON,GAAQA,EAAOM,EAAQe,GAE9C,OAAOf,CACR,CCNO,SAASwE,EAAWxE,EAAQY,EAAU0D,GAC5C,IAAKtE,EACJ,OAED,MAAMyE,EAAezE,EAAOC,OAC5B,IAAK,IAAIP,EAAQ,EAAEA,EAAQ+E,EAAa/E,IACvC,IAAuE,IAAnEkB,EAASZ,EAAON,GAAQA,EAAOM,EAAQyE,EAAcH,GACxD,OAAO,EAGT,OAAO,CACR,CCXOjD,eAAeqD,EAAgB1E,EAAQY,EAAU0D,GACvD,IAAKtE,EACJ,OAED,MAAMyE,EAAezE,EAAOC,OAC5B,IAAK,IAAIP,EAAQ,EAAEA,EAAQ+E,EAAa/E,IACvC,IAA6E,UAAnEkB,EAASZ,EAAON,GAAQA,EAAOM,EAAQyE,EAAcH,GAC9D,OAAO,EAGT,OAAO,CACR,CCXO,SAASK,EAAY3E,EAAQY,EAAUM,EAAU,GAAIoD,GAM3D,OALA3D,EAAUX,GAAQ,CAACJ,EAAMF,EAAOyB,EAAeJ,MAC+B,IAAzEH,EAAShB,EAAMF,EAAOwB,EAASC,EAAeJ,EAAauD,IAC9DpD,EAAQpB,KAAKF,EACb,IAEKsB,CACR,CCPOG,eAAeuD,EAAiB5E,EAAQY,EAAUM,EAAU,GAAIoD,GAMtE,aALMhD,EAAetB,GAAQqB,MAAOzB,EAAMF,EAAOyB,EAAeJ,MACoB,UAAzEH,EAAShB,EAAMF,EAAOwB,EAASC,EAAeJ,EAAauD,IACpEpD,EAAQpB,KAAKF,EACb,IAEKsB,CACR,CCfO,SAAS2D,EAAMtF,EAAO2E,GAC5B,OAAO,EAAS3E,EAAMY,MAAM,EAAG+D,GAAQ3E,EAAM,EAC9C,CCDO,SAASuF,EAAQ9E,EAAQ+E,EAAQ,GACvC,IAAK/E,EACJ,OAED,IAAIgC,EAAchC,EAClB,IAAK,IAAIgF,EAAI,EAAGA,EAAID,EAAOC,IAC1BhD,EAAcA,EAAYiD,QAAO,CAACC,EAAeC,IACzCD,EAAcE,OAAO5C,EAAY2C,KACtC,IAEJ,OAAOnD,CACR,CCbO,SAASqD,EAAQ9F,GACvB,OAAOA,EAAMY,MAAM,EAAGZ,EAAMU,OAAS,EACtC,CCEO,SAASqF,EAAa/F,KAAUgG,GACtC,OAAOtE,EAAgB1B,GAAQK,IAI9B,GAHqB4E,EAAWe,GAASC,GACjCA,EAAUC,SAAS7F,KAG1B,OAAOA,CACP,GAEH,CCLO,SAAS8F,EAAY1F,EAAQ2F,EAAK9E,GACxC,IAAKb,EACJ,OAED,MAAMe,EAAcf,EAAOC,OAC3B,GAAIQ,EAASI,GACZ,IAAK,IAAInB,EAAQ,EAAGA,EAAQqB,EAAarB,IACxCM,EAAON,GAAOsB,KAAKH,EAAU8E,QAG9B,IAAK,IAAIjG,EAAQ,EAAGA,EAAQqB,EAAarB,IACxCM,EAAON,GAAOiG,GAGhB,OAAO3F,CACR,CCxBA,MAAM4F,EAAaC,OAAOC,KACnB,SAASA,EAAK9F,GACpB,GAAIA,EACH,OAAO4F,EAAW5F,EAEpB,CCjBA,MAAM+F,EAAc,QACdC,EAAoB,KACpBC,EAAc,GAcb,SAASC,EAAOlG,GACtB,OAAOA,EAAOmG,QAAQH,EAAmBC,GAAaG,MAAML,EAC7D,CCKO,SAASlC,EAAIwC,EAAgBtD,GACnC,IAAKA,EACJ,OAAO,EAER,IAAIuD,EAAOvD,EAMX,OAJAyB,EADmBnC,EAAQgE,GAAmBA,EAAiBH,EAAOG,IAC/CzG,IACtB0G,EAAOA,EAAK1G,GACLa,EAAS6F,MAEVA,CACR,CC9BA,MAAMC,EAASV,OAAOU,OAef,SAASC,EAAQxG,KAAWyG,GAClC,GAAKzG,EAGL,OAAOwE,EAAWiC,GAAa7G,IAC9B,MAAM8G,EAAYR,EAAOtG,GACzB,GAAyB,IAArB8G,EAAUzG,OACb,OAAOsG,EAAOvG,EAAQJ,GAChB,CACN,MAAM+G,EAAWD,EAAUE,MACrBC,EAAoBhD,EAAI6C,EAAW1G,GACzC,QAAI6G,GACIN,EAAOM,EAAmBF,EAGlC,IAEH,CAgBO,SAASG,EAAW9G,KAAWyG,GACrC,GAAKzG,EAGL,OAAOO,QAAQkG,EAAWM,MAAMnH,IAC/B,MAAM8G,EAAYR,EAAOtG,GACzB,GAAyB,IAArB8G,EAAUzG,OACb,OAAOsG,EAAOvG,EAAQJ,GAChB,CACN,MAAM+G,EAAWD,EAAUE,MACrBC,EAAoBhD,EAAI6C,EAAW1G,GACzC,QAAI6G,GACIN,EAAOM,EAAmBF,EAGlC,KAEH,CCvDY,MAACK,GAAiBC,KACzBxG,EAASwG,IAEO,YADZA,EAAMC,YAAYC,WAAWC,OAClCjH,MAAM,EAAG,ICHN,SAASkH,GAActE,EAAQ/C,GACrC,OAAO+C,GAAQmE,cAAgBlH,IAAU,CAC1C,CACO,SAASsH,GAAqBtH,GACpC,OAAQ+C,GACAsE,GAActE,EAAQ/C,EAE/B,CACO,SAASuH,GAAgBvH,GAC/B,OAAOA,GAAQkH,aAAaM,IAC7B,CACO,SAASC,GAAyBzH,GACxC,OAAQ+C,GACAwE,GAAgBxE,KAAY/C,IAAU,CAE/C,CC5BO,SAAS0H,GAAcC,GAC7B,OAAO,SAASC,KAAkBC,GACjC,OAAIA,EACIF,EAAOC,IAAkBpD,EAAWqD,EAAcF,GAEnDA,EAAOC,EAChB,CACA,CCMY,MAACE,GAAeL,GAAyB,UACxCM,GAAWL,GAAcI,ICMzBE,GAAU,CAAChI,EAAQ+C,KAC/B,GAAI/C,IAAW+C,EACd,OAAO,EACD,GAAIgF,GAAS/H,GACnB,OAAOA,EAAOiI,OAAOlF,GACf,GAAI/C,EAAOmH,aAAepE,EAAOoE,WACvC,GAAIH,GAAchH,GAAS,CAC1B,MAAMkI,EAAmBpC,EAAK9F,GAC9B,GAAIwG,EAAQzD,EAAQmF,GACnB,OAAO1D,EAAW0D,GAAmBrI,GAC7BmI,GAAQhI,EAAOH,GAAMkD,EAAOlD,KAGxC,MAAS,GAAIwC,EAAQrC,IACdA,EAAOC,SAAW8C,EAAO9C,OAC5B,OAAOuE,EAAWxE,GAAQ,CAACJ,EAAMF,IACzBsI,GAAQpI,EAAMmD,EAAOrD,MAKhC,OAAO,CAAK,EC1BN,SAASyI,GAAanI,EAAQoI,GACpC,OAAIpI,EAAOC,SAAWmI,EAAanI,QAC3BuE,EAAWxE,GAAQ,CAACJ,EAAMF,IACzBsI,GAAQI,EAAa1I,GAAQE,IAIvC,CCvBA,MAAMyI,GAAgB3G,KAAK4G,IAcpB,SAASC,GAAQhJ,GACvB,OAAO8I,MAAiB9I,EACzB,CCFO,SAASiJ,GAAKjJ,EAAOkJ,GAC3B,MAAM1H,EAAcxB,EAAMU,OAC1B,OAAO,EAAcV,EAAMY,MAAMY,EAAc0H,EAAW1H,GAAexB,EAAMwB,EAAc,EAC9F,CCKO,SAAS2H,GAAS1I,EAAQY,EAAUM,EAAU,GAAIL,EAAUC,GAUlE,OATIL,EAASI,GACZF,EAAUX,GAAQ,CAACJ,EAAMF,EAAOyB,EAAeJ,KAC9CG,EAAQxB,GAASkB,EAASI,KAAKH,EAAUjB,EAAMF,EAAOwB,EAASC,EAAeJ,EAAaD,EAAc,IAG1GH,EAAUX,GAAQ,CAACJ,EAAMF,EAAOyB,EAAeJ,KAC9CG,EAAQxB,GAASkB,EAAShB,EAAMF,EAAOwB,EAASC,EAAeJ,EAAaD,EAAc,IAGrFI,CACR,CCfOG,eAAesH,GAAc3I,EAAQY,GAC3C,MAAMM,EAAU,GAIhB,aAHMI,EAAetB,GAAQqB,MAAOzB,EAAMF,EAAOqB,KAChDG,EAAQxB,SAAekB,EAAShB,EAAMF,EAAOqB,EAAY,IAEnDG,CACR,CCHO,SAAS0H,GAAc5I,EAAQY,EAAUM,EAAU,GAAIoD,GAC7D,IAAIuE,EAAY,EAChB,MAAM9H,EAAcf,EAAOC,OAC3B,IAAK,IAAIP,EAAQqB,EAAc,EAAErB,GAAS,EAAEA,IAC3CwB,EAAQ2H,GAAajI,EAASZ,EAAON,GAAQA,EAAOM,EAAQe,EAAauD,GACzEuE,IAED,OAAO3H,CACR,CCRO,SAAS4H,GAAS9I,EAAQY,EAAUM,EAAU,GAAIoD,GACxD,MAAMvD,EAAcf,EAAOC,OAC3B,IAAK,IAAIP,EAAQ,EAAEA,EAAQqB,EAAYrB,IAAS,CAC/C,MAAME,EAAOI,EAAON,GAEpB,IAAiB,IADAkB,EAAShB,EAAMF,EAAOwB,EAASlB,EAAQe,EAAauD,GAEpE,MAEDpD,EAAQxB,GAASE,CACjB,CACD,OAAOsB,CACR,CClBO,SAAS6H,GAASC,EAASC,GACjC,OAAOD,EAAUC,CAClB,CCHO,SAASC,GAAoBC,GACnC,OAAOA,EAAWC,KAAKL,GACxB,CCOO,SAASM,GAAU9J,EAAO+J,GAChC,MAAMC,EAAW,GACjB,MAAO,CACNtI,EAAgB1B,GAAO,CAACK,EAAMF,KAC7B,GAAI4J,EAAU1J,EAAMF,GACnB,OAAOE,EAER2J,EAASzJ,KAAKF,EAAK,IAEpB2J,EAEF,CCnBO,SAASC,GAAgBP,EAAYD,GAC3C,OAAOA,EAAUC,CAClB,CCHO,SAASQ,GAAoBN,GACnC,OAAOA,EAAWC,KAAKI,GACxB,CCCO,SAASE,GAAOnK,EAAOoK,GAC7B,IAAI5I,EAAcxB,EAAMU,OACxB,IAAK,IAAIP,EAAQ,EAAGA,EAAQqB,EAAarB,IAAS,CACjD,MAAME,EAAOL,EAAMG,GACfiK,EAAYlE,SAAS7F,KACxBL,EAAM4E,OAAOzE,EAAO,GACpBA,IACAqB,IAED,CACD,OAAOxB,CACR,CAcO,SAASqK,GAAS5J,EAAQY,GAChC,IAAIG,EAAcf,EAAOC,OACzB,IAAK,IAAIP,EAAQ,EAAGA,EAAQqB,EAAarB,IAAS,CAE7CkB,EADSZ,EAAON,GACDA,KAClBM,EAAOmE,OAAOzE,EAAO,GACrBA,IACAqB,IAED,CACD,OAAOf,CACR,CCvCO,SAAS6J,GAAKtK,GACpB,OAAOA,EAAMY,MAAM,EAAGZ,EAAMU,OAC7B,CCDO,SAAS6J,GAAM9J,EAAQiE,GAC7B,OAAOjE,EAAOA,EAAOC,OAAS,EAAIgE,EACnC,CChBA,MAAM8F,MACLA,GACDC,OAACA,IACGtI,KAeG,SAASuI,GAAU3B,EAAK4B,EAAM,GACpC,OAAOH,GAAMC,MAAY1B,EAAM4B,IAAQA,CACxC,CCnBA,MAAMC,GAAY7H,MAAM8H,KAejB,SAASC,GAAQC,EAAWC,EAAOC,GACzC,GAAI/J,EAAS6J,GACZ,OAAOH,GAAUG,EAAWC,EAAOC,EAErC,CCNO,SAASC,GAAczK,EAAQ+C,GACrC,OAAO/C,IAAW+C,CACnB,CCAO,SAAS2H,GAAQ3H,EAAQkB,EAASlB,EAAO9C,QAC/C,GAAI8C,EAAO9C,QAAU,EACpB,OAAOoK,GAAQtH,GAEhB,MAAM4H,EAAeN,GAAQtH,GAC7B,IACIrD,EACAuH,EAFAnD,EAAQ,EAGZ,KAAOA,EAAQG,GACdvE,EAAQuK,GAAUU,EAAa1K,OAAS,EAAG,GAC3CgH,EAAQ0D,EAAa7G,GACrB6G,EAAa7G,GAAS6G,EAAajL,GACnCiL,EAAajL,GAASuH,EACtBnD,IAED,OAAO6G,CACR,CCXO,SAASC,GAAO5K,EAAQiE,GAC9B,IAAKjE,EACJ,OAAO,EAER,MAAMe,EAAcf,EAAOC,OAC3B,GAAIc,IAAgBkD,GAAUA,EAASlD,EACtC,OAAO2J,GAAQ1K,GAEhB,GAAe,IAAXiE,EACH,MAAO,CAACjE,EAAOiK,GAAUlJ,EAAc,EAAG,KAE3C,MAAM8J,EAAc,GACdC,EAAO,CAAA,EACb,IACIpL,EADAoE,EAAQ,EAEZ,KAAOA,EAAQG,GACdvE,EAAQuK,GAAUjK,EAAOC,OAAS,EAAG,GAChC6K,EAAKpL,KACTmL,EAAY/K,KAAKE,EAAON,IACxBoL,EAAKpL,IAAS,EACdoE,KAGF,OAAO+G,CACR,CC7CA,MAAME,GAAgBrJ,KAAKwI,IAcpB,SAASc,GAASzL,GACxB,OAAOwL,MAAiBxL,EACzB,CCDO,SAAS0L,GAAqBjL,EAAQ+C,GAC5C,IAAImI,EAAc,EAUlB,OATA1G,EAAWxE,GAAQ,CAACJ,EAAMF,KACzBwL,EAAcxL,EACVqD,GAAUnD,IACbsL,EAAcxL,EAAQ,GACf,MAKFwL,CACR,CCbO,SAASC,GAAKnL,EAAQoL,EAAW,GACvC,OAAOpL,EAAOG,MAAM,EAAGiL,EACxB,CCFO,SAASC,GAAUrL,EAAQsL,EAAa,GAC9C,MAAMvK,EAAcf,EAAOC,OAC3B,OAAOD,EAAOG,MAAMY,EAAcuK,EAAYvK,EAC/C,CCjBO,SAASwK,GAAWtE,EAAOvH,EAAOH,GACxC,OAAOA,EAAMiM,QAAQvE,KAAWvH,CACjC,CACO,SAAS+L,GAAW7L,EAAMF,EAAOH,GACvC,OAAOK,IAASL,EAAMG,EAAQ,EAC/B,CAeO,SAASgM,GAAO1L,EAAQ2L,GAC9B,OAAIA,EACI3L,EAAO4L,OAAOH,IAEfzL,EAAO4L,OAAOL,GACtB,CCVO,SAASM,MAAStG,GACxB,OAAOmG,GAAOjJ,EAAY8C,GAC3B,CCKO,SAASuG,GAAgB9L,EAAQY,GACvC,MAAM6D,EAAezE,EAAOC,OAC5B,IAAK,IAAIP,EAAQ,EAAEA,EAAQ+E,EAAa/E,IACvC,IAAuC,IAAnCkB,EAASZ,EAAON,GAAQA,GAC3B,OAAO,EAGT,OAAO,CACR,CCRO,SAASqM,GAAe/L,EAAQY,GACtC,MAAM6D,EAAezE,EAAOC,OAC5B,IAAK,IAAIP,EAAQ,EAAEA,EAAQ+E,EAAa/E,IACvC,IAAuC,IAAnCkB,EAASZ,EAAON,GAAQA,GAC3B,OAAO,EAGT,OAAO,CACR,CCRO,SAASsM,GAAgBhM,EAAQY,EAAUM,EAAU,GAAIoD,GAC/D,IAAI5E,EAAQ,EACZ,KAAOA,EAAQM,EAAOC,QAAQ,CAC7B,MAAMuB,EAASN,EAAQpB,KAAKc,EAASZ,EAAON,GAAQA,EAAOM,EAAQA,EAAOC,OAAQqE,IAClF5E,IACIe,EAASe,IACZN,EAAQpB,KAAK0B,EAEd,CACD,OAAOxB,CACR,CCXO,SAASiM,GAAejM,EAAQY,EAAU0D,GAChD,IAAI5E,EAAQ,EACZ,KAAOA,EAAQM,EAAOC,QACrBW,EAASZ,EAAON,GAAQA,EAAOM,EAAQA,EAAOC,OAAQqE,GACtD5E,IAED,OAAOM,CACR,CCJO,SAASkM,GAAclM,EAAQY,EAAUM,EAAU,GAAIoD,GAC7D,IAAI5E,EAAQ,EACZ,KAAOA,EAAQM,EAAOC,QACrBiB,EAAQpB,KAAKc,EAASZ,EAAON,GAAQA,EAAOM,EAAQA,EAAOC,OAAQqE,IACnE5E,IAED,OAAOM,CACR,CChBO,SAASmM,GAAQpJ,EAAQK,GAC/B,IAAKA,EACJ,OAAOL,EAER,MAAMqJ,EAAatJ,EAAUuJ,IAAKjJ,GAClC,OAAOL,EAAO6I,QAAQhM,IACbwM,EAAWE,IAAI1M,IAEzB,CCNO,SAAS2M,MAAOnJ,GACtB,MAAMoJ,EAAS1J,EAAUQ,KACnBmJ,EAAQ,GAEd,OAAsB,IADArJ,EAAQnD,OAEtBkD,EAAWC,EAAQ,GAAIA,EAAQ,KAEvCzC,EAAUyC,GAAS,CAACI,EAAcC,KACjC9C,EAAU6C,GAAc,CAACE,EAAOC,KAC/B,IAAIC,EAAY4I,EAAO3I,IAAIH,GAC3B,GAAKE,EAOE,IAAIA,EAAUH,cAAgBA,EACpC,OAEAG,EAAUE,OACV,MAVAF,EAAY,CACXE,MAAO,EACPL,cACAC,SAED8I,EAAOzI,IAAIL,EAAOE,EAKlB,GACA,IAEHjE,EAAQ6M,GAAS5M,IACG,IAAfA,EAAKkE,OACR2I,EAAM3M,KAAKF,EAAK8D,MAChB,IAEK+I,EACR,CClCO,SAASC,MAAOnH,GACtB,OAAOA,EAAO,GAAGoH,KAAI,CAAC/M,EAAMF,IACpB6F,EAAOoH,KAAKpN,GACXA,EAAMG,MAGhB,CAcO,SAASkN,GAAM5M,GACrB,OAAOA,EAAO,GAAG2M,KAAI,CAAC/M,EAAMF,IACpBM,EAAO2M,KAAKE,GACXA,EAASnN,MAGnB,CCxBO,SAASoN,GAAa9M,GAC5B,OAAQ+H,GAAS/H,IAAWA,GAAYS,EAAST,IAAW+M,OAAO3C,KAAKpK,IAAY+M,OAAOC,MAAM,EAClG,CCJO,SAASC,GAAYjN,GAE3B,OADAA,EAAOkN,KAAK,GACLlN,CACR,CCAO,SAASmN,GAAQC,EAAYxM,GACnC,MAAMyM,EAAS,CAAA,EACf,IAAI7L,EAQJ,OAPAb,EAAUyM,GAAaxN,IACtB4B,EAASZ,EAAShB,GACbyN,EAAO7L,KACX6L,EAAO7L,GAAU,GAElB6L,EAAO7L,IAAS,IAEV6L,CACR,CCZO,SAASC,GAASF,EAAYG,GACpC,IAAIzJ,EAAQ,EAMZ,OALAnD,EAAUyM,GAAaxN,IAClBA,EAAK2N,IACRzJ,GACA,IAEKA,CACR,CCRO,SAAS0J,GAAgBJ,EAAYG,GAC3C,IAAIzJ,EAAQ,EAMZ,OALAnD,EAAUyM,GAAaxN,IACjBA,EAAK2N,IACTzJ,GACA,IAEKA,CACR,CCvBO,SAAS2J,GAAeC,EAAShO,EAAOH,EAAOoO,EAAYJ,GACjE,GAAIG,EAAQH,KAAkBI,EAC7B,OAAO,CAET,CCYO,SAASC,GAAUR,EAAYS,EAAIN,EAAe,MACxD,MAAM/L,EAAS4L,EAAWQ,WAAU,CAACF,EAAShO,IACtC+N,GAAeC,EAAShO,EAAO0N,EAAYS,EAAIN,KAEvD,OAAoB,IAAZ/L,GAAyBA,CAClC,CCLO,SAASsM,GAASV,EAAYS,EAAIN,EAAe,MACvD,MAAM/L,EAAS4L,EAAWrG,MAAK,CAAC2G,EAAShO,IACjC+N,GAAeC,EAAShO,EAAO0N,EAAYS,EAAIN,KAEvD,OAAoB,IAAZ/L,GAAyBA,CAClC,CCHO,SAASuM,GAA+BC,EAAUC,EAAMV,EAAcW,GAC5E,MAAMC,EAAcH,EAAST,GACvBa,EAAUH,EAAKV,GACrB,OAAIY,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMV,GAE3Ba,EAEOD,EAEDA,EAAcC,EACjB,EACGD,EAAcC,GAChB,EAEF,EANC,GAFC,CASV,CACO,SAASC,GAAyBjB,EAAYG,EAAe,KAAMW,GACzE,OAAOd,EAAWhE,MAAK,CAAC4E,EAAUC,IAC1BF,GAA+BC,EAAUC,EAAMV,EAAcW,IAEtE,CCbO,SAASI,GAA0BN,EAAUC,EAAMV,EAAcW,GACvE,MAAMC,EAAcH,EAAST,GACvBa,EAAUH,EAAKV,GACrB,OAAIY,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMV,GAEzBY,EAAYI,cAAcH,EAClC,CACO,SAASI,GAA6BpB,EAAYG,EAAe,KAAMW,GAC7E,OAAOd,EAAWhE,MAAK,CAAC4E,EAAUC,IAC1BK,GAA0BN,EAAUC,EAAMV,EAAcW,IAEjE,CCpBO,SAASO,GAA8BT,EAAUC,EAAMV,EAAcW,GAC3E,MAAMC,EAAcH,EAAST,GACvBa,EAAUH,EAAKV,GACrB,OAAIY,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMV,GAE3Ba,EAEOD,EAEDA,EAAcC,GAChB,EACED,EAAcC,EACjB,EAED,GANE,EAFD,CAST,CACO,SAASM,GAAwBtB,EAAYG,EAAe,KAAMW,GACxE,OAAOd,EAAWhE,MAAK,CAAC4E,EAAUC,IAC1BQ,GAA8BT,EAAUC,EAAMV,EAAcW,IAErE,CCvBO,SAASS,GAAWvB,EAAYG,EAAe,MACrD,OAAOmB,GAAwBtB,EAAYG,GAAc,EAC1D,CCDO,SAASqB,GAAUxB,EAAYG,GACrC,OAAOc,GAAyBjB,EAAYG,GAAc,GAAO,EAClE,CCFO,SAASsB,GAAQzB,EAAYxM,GACnC,MAAMkO,EAAe,CAAA,EAQrB,OAPAnO,EAAUyM,GAAaxN,IACtB,MAAMsB,EAAUN,EAAShB,GACpBkP,EAAa5N,KACjB4N,EAAa5N,GAAW,IAEzB4N,EAAa5N,GAASpB,KAAKF,EAAK,IAE1BkP,CACR,CCVO,SAASC,GAAQ3B,EAAYG,EAAe,MAClD,MAAMuB,EAAe,CAAA,EAIrB,OAHAnO,EAAUyM,GAAaxN,IACtBkP,EAAalP,EAAK2N,IAAiB3N,CAAI,IAEjCkP,CACR,CCJO,SAASE,GAAiB5B,EAAY6B,EAAUhI,EAAO3C,GAC7D,OACQoE,GAAS0E,EADb9I,EACyB,CAAC1E,EAAMF,IAC3BE,EAAKqP,GAAUjO,KAAKsD,EAAU2C,GAGX,CAACrH,EAAMF,IAC3BE,EAAKqP,GAAUhI,GAExB,CCRO,SAASiI,GAAsB9B,EAAY6B,EAAUhI,EAAO3C,GAClE,OACQqE,GAAcyE,EADlB9I,EAC+B1E,GAC1BA,EAAKqP,GAAUjO,KAAKsD,EAAU2C,GAGN5F,MAAOzB,GAChCA,EAAKqP,GAAUhI,GAExB,CCfY,MAACkI,GAAe1H,GAAyB,UACxC2H,GAAW1H,GAAcyH,IAa/B,SAASE,GAAYrP,GAC3B,OAAQoP,GAASpP,EAClB,CCfY,MAACsP,GAAWhI,GAAqBiI,QActC,SAASC,GAAYxP,GAC3B,OAAQsP,GAAStP,EAClB,CCfO,SAASyP,GAAYzP,EAAQ0P,GACnC,GAAK1P,EAEE,OAAIsP,GAASI,GACZ1P,EAAO0P,GAERhH,GAASgH,GAAU9P,GAClBI,EAAOJ,IAEhB,CCRO,SAAS+P,GAAMvC,EAAYsC,GACjC,OAAOhH,GAAS0E,GAAaxN,GACrB6P,GAAY7P,EAAM8P,IAE3B,CCHO,SAASE,GAAiC5B,EAAUC,EAAMV,EAAcW,GAC9E,MAAMC,EAAcH,EAAST,GACvBa,EAAUH,EAAKV,GACrB,OAAIY,IAAgBC,GAAWF,EACvBA,EAAQF,EAAUC,EAAMV,GAEzBa,EAAQG,cAAcJ,EAC9B,CACO,SAAS0B,GAAoCzC,EAAYG,EAAe,KAAMW,GACpF,OAAOd,EAAWhE,MAAK,CAAC4E,EAAUC,IAC1B2B,GAAiC5B,EAAUC,EAAMV,EAAcW,IAExE,CClBO,SAAS4B,GAAiB9P,GAChC,GAAIA,EACH,OAAOA,EAAO+P,UAAU/P,EAAOgQ,YAAY,KAAO,EAEpD,CCJO,SAASC,GAAYjQ,GAC3B,GAAIA,EACH,OAAOA,EAAO+P,UAAU/P,EAAOgQ,YAAY,KAAO,EAEpD,CCfO,SAASE,GAAiBC,GAChC,OAAQvQ,KACCa,EAASb,IAASuQ,EAAUC,KAAKxQ,EAE3C,CCQY,MAACyQ,GAAYH,GAAiB,UCA7BI,GAAaJ,GAAiB,WCA9BK,GAAWL,GAAiB,SCA5BM,GAAaN,GAAiB,WCSpC,SAASO,GAAMxM,EAAQyM,GAC7B,IACIzJ,EADA0J,EAAQ1M,EAYZ,MAVkB,IAAIf,KACP,OAAVyN,GACHA,IAEGA,GAAS,IACZ1J,EAAQyJ,KAAYxN,GACpByN,EAAQ,MAEF1J,EAGT,CCtBO,SAAS2J,GAAIF,EAAUzM,GAC7B,MAAO,IAAIf,IACHwN,KAAYxN,EAAKiB,OAAO,EAAGF,GAEpC,CCHO,SAAS4M,GAAO5M,EAAQyM,GAC9B,IACIzJ,EADA0J,EAAQ1M,EAaZ,MAXmB,IAAIf,KACR,OAAVyN,GACHA,IAEGA,GAAS,EACZ1J,EAAQyJ,KAAYxN,GAEpByN,EAAQ,KAEF1J,EAGT,CC7BY,MAAC6J,GAAejL,OAAOkL,OAc5B,SAASA,GAAOhO,KAAWK,GACjC,GAAI3C,EAASsC,GACZ,OAAO+N,GAAa/N,KAAWK,EAEjC,CCIY,MAAC4N,GAAkB3P,MAAOrB,EAAQY,EAAUC,EAAUC,KACjE,IAAKd,EACJ,OAED,MAAM4F,EAAaE,EAAK9F,GAUxB,OATIS,EAASI,SACNS,EAAesE,GAAY,CAAC/F,EAAKH,EAAOH,EAAO0R,IAC7CrQ,EAASI,KAAKH,EAAUb,EAAOH,GAAMA,EAAKG,EAAQiR,EAAerL,EAAY9E,WAG/EQ,EAAesE,GAAY,CAAC/F,EAAKH,EAAOH,EAAO0R,IAC7CrQ,EAASZ,EAAOH,GAAMA,EAAKG,EAAQiR,EAAerL,EAAY9E,KAGhEd,CAAM,EChBP,SAASkR,GAAWlR,EAAQY,EAAUC,EAAUC,GACtD,IAAKd,EACJ,OAED,MAAM4F,EAAaE,EAAK9F,GAUxB,OATIS,EAASI,GACZF,EAAUiF,GAAY,CAAC/F,EAAKH,EAAOyR,EAAiBF,KACnDrQ,EAASI,KAAKH,EAAUb,EAAOH,GAAMA,EAAKG,EAAQiR,EAAeE,EAAiBrQ,EAAc,IAGjGH,EAAUiF,GAAY,CAAC/F,EAAKH,EAAOyR,EAAiBF,KACnDrQ,EAASZ,EAAOH,GAAMA,EAAKG,EAAQiR,EAAeE,EAAiBrQ,EAAc,IAG5Ed,CACR,CCpCOqB,eAAe+P,GAAapR,EAAQoC,GAC1C,MAAMiP,EAAS,GACT5K,EAAa,GACnB,IAAI6K,EAAe,EACnBtR,EAAOL,SAAQ,CAACC,EAAMC,KACrBwR,EAAOC,GAAgB1R,EACvB6G,EAAW6K,GAAgB1R,EAC3B0R,GAAc,IAEf,IAAK,IAAI5R,EAAQ,EAAGA,EAAQ4R,EAAc5R,UACnC0C,EAASiP,EAAO3R,GAAQ+G,EAAW/G,IAE1C,OAAOM,CACR,CCEY,MAACuR,GAAY9J,GAAyB,OACrC+J,GAAQ9J,GAAc6J,ICf5B,SAASE,GAAMzR,EAAQY,GAC7B,GAAI4Q,GAAMxR,GAAS,CAClB,IAAK,MAAMiH,KAASjH,EACnBY,EAASqG,EAAOjH,GAEjB,OAAOA,CACP,CACD,IAAK,MAAOH,EAAKoH,KAAUjH,EAC1BY,EAASqG,EAAOpH,EAAKG,GAEtB,OAAOA,CACR,CCGY,MAAC0R,GAAkBjK,GAAyB,qBAC3CkK,GAAcjK,GAAcgK,ICdlCrQ,eAAeuQ,GAAW5R,EAAQY,EAAUiR,GAClD,GAAIL,GAAMxR,GAAS,CAClB,IAAK,MAAMiH,KAASjH,QACbY,EAASqG,EAAOjH,GAEvB,OAAOA,CACP,CACD,GAAI2R,GAAY3R,GACf,UAAW,MAAMJ,KAAQI,KAAU6R,SAC5BjR,EAAShB,EAAMI,GAGvB,IAAK,MAAOH,EAAKoH,KAAUjH,QACpBY,EAASqG,EAAOpH,EAAKG,GAE5B,OAAOA,CACR,CCJY,MAAC8R,GAAc9R,KAClBS,EAAST,IAAWA,aAAkB+R,SCDlCC,GAAcvK,GAAyB,iBACvCwK,GAAUvK,GAAcsK,ICT9B,SAASE,GAAaC,EAAWC,EAAgBC,EAAYC,EAAiBC,EAAWC,GAC/F,MAAO,CAACxS,EAAQY,EAAU6R,EAAWC,EAAWC,KAC/C,IAAIvR,EACJ,MAAMwR,EAAkBX,GAAQrR,GAChC,GAAKH,EAAST,IAAYY,EAa1B,OAVCQ,EADUiB,EAAQrC,GACP,EAAoBoS,EAAiBD,EACtCnL,GAAchH,IAAW8R,GAAW9R,GACnC,EAAoBsS,EAAkBD,EACvCE,EACC,EAAoBC,EAAiBD,EACtCZ,GAAY3R,GACXwS,EAEA,EAAoBF,EAAkBD,EAE3CjR,EAASpB,EAAQY,EAAU6R,EAAWC,EAAWC,EAAU,CAEpE,CCIY,MAACE,GAAOX,GAAavR,EAAWW,EAAgB4P,GAAYF,GAAiBS,GAAOG,ICvBzF,MAAMkB,GACZ,WAAA5L,CAAY6L,GACXC,KAAKC,eAAeF,EACpB,CACD,cAAAE,CAAeF,GACd,MAAMG,EAAYF,KAClBH,GAAKE,GAAS,CAACpL,EAAQwL,KACtBD,EAAUC,GAAc,YAAYjQ,GAEnC,OADA8P,KAAK/L,MAAQU,EAAO3G,KAAKkS,EAAWA,EAAUjM,SAAU/D,GACjDgQ,CACX,CAAI,GAEF,CACD,QAAAE,CAASnM,GAER,OADA+L,KAAK/L,MAAQA,EACN+L,IACP,CACD,IAAAK,GACC,MAAMpM,EAAQ+L,KAAK/L,MAEnB,OADA+L,KAAK/L,MAAQ,KACNA,CACP,CACDA,MAAQ,KAoBF,SAASqM,GAAMC,GACrB,OAAOzQ,EAAUgQ,GAAO,CAACS,GAC1B,CChCO,SAASC,GAAM9C,EAAU+C,EAAQ/C,EAASzQ,QAChD,MAAMyT,EAAU,GACVC,EAAU,IAAIC,KAEnB,GADAF,EAAQ5T,QAAQ8T,GACZF,EAAQzT,SAAWwT,EAAO,CAC7B,MAAMjS,EAASkP,KAAYgD,GAE3B,OADA3T,EAAW2T,GACJlS,CACP,CACD,OAAOmS,CAAO,EAEf,OAAOA,CACR,CCbO,SAASE,GAAWnD,EAAU+C,EAAQ/C,EAASzQ,QACrD,MAAMyT,EAAU,GACVC,EAAU,IAAIC,KAEnB,GADAF,EAAQI,WAAWF,GACfF,EAAQzT,SAAWwT,EAAO,CAC7B,MAAMjS,EAASkP,KAAYgD,GAE3B,OADA3T,EAAW2T,GACJlS,CACP,CACD,OAAOmS,CAAO,EAEf,OAAOA,CACR,CChBY,MAACI,IAAQ,EACRC,GAAW,IAChBD,GCFKE,IAAQ,EACRC,GAAY,IACjBD,GCJKE,GAAO,KACZ,ECQD,SAASC,GAAMnQ,EAAQrD,GAC7B,IAAK,IAAIlB,EAAQ,EAAGA,EAAQuE,EAAQvE,IACnCkB,EAASlB,EAEX,CAmBO,SAAS2U,GAASpQ,EAAQrD,EAAUM,EAAU,IACpD,IAAK,IAAIxB,EAAQ,EAAGA,EAAQuE,EAAQvE,IACnCwB,EAAQxB,GAASkB,EAASqD,GAE3B,OAAO/C,CACR,CC3CO,MAAMoT,GACZC,KAAOzR,EAAUQ,KACjB,SAAAR,GACC,CAYD,MAAA4G,CAAOmE,GACN2G,aAAa3G,GACbmF,KAAKuB,KAAKE,OAAO5G,EACjB,CACD,GAAAvB,CAAIuB,GACH,OAAOmF,KAAKuB,KAAKjI,IAAIuB,EACrB,CACD,GAAAhK,CAAIgK,GACH,OAAOmF,KAAKuB,KAAK1Q,IAAIgK,EACrB,CAcD,GAAA9J,CAAI2M,EAAUgE,GACb,MAAMC,EAAc3B,KACdnF,EAAK+G,YAAW,KACrBlE,IACAiE,EAAYjL,OAAOmE,EAAG,GACpB6G,GAEH,OADA1B,KAAKuB,KAAKxQ,IAAI8J,EAAIkG,IACXlG,CACP,CAWD,KAAAgH,GACC,MAAMF,EAAc3B,KACpB2B,EAAYJ,KAAK5U,SAASkO,IACzB8G,EAAYjL,OAAOmE,EAAG,GAEvB,EAEU,MAACiH,GAAShS,EAAUwR,IAgBzB,SAASS,GAAMrE,EAAUgE,GAC/B,OAAOI,GAAO/Q,IAAI2M,EAAUgE,EAC7B,CAaO,SAASM,KAEfZ,GADWQ,WAAWT,GAAM,IACjBzU,IACVoV,GAAOpL,OAAOhK,EAAM,GAEtB,CCzGA,MAAMuV,GAAcpS,QAAQqS,MAiBrB,SAASA,GAAMnS,EAAQoS,EAAcnS,GAC3C,GAAI8O,GAAW/O,GACd,OAAOkS,GAAYlS,EAAQoS,EAAcnS,EAE3C,CCAO,SAASoS,GAAS1E,EAAUgE,GAClC,SAASW,KAAanS,GACjBmS,EAAUxH,KAAOoG,IACpBa,GAAOpL,OAAO2L,EAAUxH,IAEzBwH,EAAUxH,GAAKkH,IAAM,KACpBM,EAAU3E,YAAYxN,GACtBmS,EAAUxH,GAAKoG,EAAK,GAClBS,EACH,CASD,OARAW,EAAUxH,GAAKoG,GACfoB,EAAU3E,SAAWA,EAAS4E,KAAKD,GACnCA,EAAUR,MAAQ,KACbQ,EAAUxH,KAAOoG,KACpBa,GAAOpL,OAAO2L,EAAUxH,IACxBwH,EAAUxH,GAAKoG,GACf,EAEKoB,CACR,CCzBO,SAASE,GAAS7E,KAAaxN,GACrC,GAAI4O,GAAWpB,GACd,OAAOA,KAAYxN,EAErB,CCGO7B,eAAemU,GAAQxV,EAAQyV,GACrC,MAAM1U,EAAcf,EAAOC,OAC3B,IAAK,IAAIP,EAAQ,EAAGA,EAAQqB,EAAarB,IAAS,CACjD,MAAMiI,EAAS3H,EAAON,SAChBiI,EAAO8N,EAAe/V,EAAOM,EAAQe,EAC3C,CACD,OAAOf,CACR,CCLY,MAAC0V,GAAS,CAACtI,EAAYnG,IAC3B4L,GAAKzF,GAAaxN,IACxBA,EAAKqH,EAAM,ICbN,SAAS0O,GAAOjF,GACtB,MAAO,IAAIxN,KACFwN,KAAYxN,EAEtB,CCJO,SAAS0S,GAAOlW,EAAQ,GAC9B,MAAO,IAAIwD,IACHA,EAAKxD,EAEd,CCKY,MAACmW,GAAQnF,IACpB,IAAIzJ,EAOJ,MANiB,IAAI/D,KACfzC,EAASwG,KACbA,EAAQyJ,KAAYxN,IAEd+D,EAEO,ECXT5F,eAAeyU,GAAe9V,EAAQY,EAAUM,EAAU,CAAA,GAChE,GAAKlB,EAML,aAHMgR,GAAgBhR,GAAQqB,MAAOzB,EAAMC,EAAKkW,EAAY9E,EAAerL,KAC1E1E,EAAQrB,SAAae,EAAShB,EAAMC,EAAKqB,EAAS6U,EAAY9E,EAAerL,EAAW,IAElF1E,CACR,CCLO,SAAS8U,GAAUhW,EAAQY,EAAUM,EAAU,CAAE,EAAEL,EAAUC,GACnE,GAAKd,EAYL,OATIS,EAASI,GACZqQ,GAAWlR,GAAQ,CAACJ,EAAMC,EAAKoW,EAAUhF,EAAerL,KACvD1E,EAAQrB,GAAOe,EAASI,KAAKH,EAAUjB,EAAMC,EAAKqB,EAAS+U,EAAUhF,EAAerL,EAAY9E,EAAc,IAG/GoQ,GAAWlR,GAAQ,CAACJ,EAAMC,EAAKoW,EAAUhF,EAAerL,KACvD1E,EAAQrB,GAAOe,EAAShB,EAAMC,EAAKqB,EAAS+U,EAAUhF,EAAerL,EAAY9E,EAAc,IAG1FI,CACR,CCxBO,SAASgV,GAAQlW,GACvB,OAAOA,GAAQkH,WAChB,CCAO,SAASiP,GAAUnW,EAAQkD,EAAO,IACxC,MAAMkT,EAAaF,GAAQlW,GAC3B,OAAIoW,IAAerE,UACM,aAApBqE,EAAW5O,KACP,WAAW,EAGb1E,EAAUsT,EAAYlT,EAC9B,CCEO,SAASmT,GAASrW,EAAQY,EAAWF,EAAa4V,GACxD,MAAMpV,EAAUoV,GAAiBH,GAAUnW,GAC3C,GAAIqC,EAAQrC,IAAWwR,GAAMxR,GAAS,CACrC,MAAMuW,EAAarV,EAAQpB,MAAQoB,EAAQsV,IACrCC,EAAkBF,GAAcA,EAAWjB,KAAKpU,GACtD,IAAK,MAAM+F,KAASjH,EAAQ,CAE3ByW,EADe7V,EAASqG,EAAO/F,EAASlB,GAExC,CACD,OAAOkB,CACP,CACD,MAAMwV,EAAY5E,GAAW5Q,EAAQ6C,KACrC,IAAK,MAAOlE,EAAKoH,KAAUjH,EAAQ,CAClC,MAAMwB,EAASZ,EAASqG,EAAOpH,EAAKqB,EAASlB,GACzC0W,EACHxV,EAAQ6C,IAAIlE,EAAK2B,GAEjBN,EAAQrB,GAAO2B,CAEhB,CACD,OAAON,CACR,CCrBOG,eAAesV,GAAc3W,EAAQY,EAAWF,EAAa4V,EAAezE,GAClF,GAAIF,GAAY3R,GAAS,CACxB,MAAM4W,EAAmB,GACzB,UAAW,MAAMhX,KAAQI,KAAU6R,GAClC+E,EAAiB9W,WAAWc,EAAShB,EAAMgX,EAAkB5W,IAE9D,OAAO4W,CACP,CACD,MAAM1V,EAAUoV,GAAiBH,GAAUnW,GAC3C,GAAIqC,EAAQrC,IAAWwR,GAAMxR,GAAS,CACrC,MAAMuW,EAAarV,EAAQpB,MAAQoB,EAAQsV,IACrCC,EAAkBF,GAAcA,EAAWjB,KAAKpU,GACtD,IAAK,MAAM+F,KAASjH,EAAQ,CAE3ByW,QADqB7V,EAASqG,EAAO/F,EAASlB,GAE9C,CACD,OAAOkB,CACP,CACD,MAAMwV,EAAY5E,GAAW5Q,EAAQ6C,KACrC,UAAW,MAAOlE,EAAKoH,KAAUjH,EAAQ,CACxC,MAAMwB,QAAeZ,EAASqG,EAAOpH,EAAKqB,EAASlB,GAC/C0W,EACHxV,EAAQ6C,IAAIlE,EAAK2B,GAEjBN,EAAQrB,GAAO2B,CAEhB,CACD,OAAON,CACR,CC1BY,MAACyL,GAAMuF,GAAaxJ,GAAUC,GAAeqN,GAAWF,GAAgBO,GAAUM,ICZvF,SAASE,GAAKC,GACpB,MAAO,IAAI5T,IACHyJ,GAAImK,GAAYlX,GACfA,KAAQsD,IAGlB,CCAO7B,eAAe0V,GAAiB/W,EAAQY,GAC9C,IAAKZ,EACJ,OAGD,OAAO0E,EADYoB,EAAK9F,IACW,CAACH,EAAKH,EAAOuW,EAAUhF,IAClDrQ,EAASZ,EAAOH,GAAMA,EAAKG,EAAQiR,EAAegF,IAE3D,CCTO,SAASe,GAAYhX,EAAQY,GACnC,IAAKZ,EACJ,OAGD,OAAOwE,EADYsB,EAAK9F,IACM,CAACH,EAAKH,EAAOuW,EAAUhF,IAC7CrQ,EAASZ,EAAOH,GAAMA,EAAKG,EAAQiR,EAAegF,IAE3D,CCNO,SAASgB,GAAWjX,EAAQY,EAAWF,GAC7C,GAAI2B,EAAQrC,IAAWwR,GAAMxR,GAC5B,IAAK,MAAMiH,KAASjH,EAAQ,CAE3B,IAAe,IADAY,EAASqG,EAAOjH,GAE9B,OAAO,CAER,MAED,IAAK,MAAOH,EAAKoH,KAAUjH,EAAQ,CAElC,IAAe,IADAY,EAASqG,EAAOpH,EAAKG,GAEnC,OAAO,CAER,CAEF,OAAO,CACR,CChBOqB,eAAe6V,GAAgBlX,EAAQY,EAAWF,EAAamR,GACrE,GAAIF,GAAY3R,GACf,UAAW,MAAMJ,KAAQI,KAAU6R,GAAgB,CAElD,IAAe,UADMjR,EAAShB,EAAMI,GAEnC,OAAO,CAER,MACK,GAAIqC,EAAQrC,IAAWwR,GAAMxR,GACnC,IAAK,MAAMiH,KAASjH,EAAQ,CAE3B,IAAe,UADMY,EAASqG,EAAOjH,GAEpC,OAAO,CAER,MAED,IAAK,MAAOH,EAAKoH,KAAUjH,EAAQ,CAElC,IAAe,UADMY,EAASqG,EAAOpH,EAAKG,GAEzC,OAAO,CAER,CAEF,OAAO,CACR,CCvBY,MAACmX,GAAQjF,GAAa1N,EAAYE,EAAiBsS,GAAaD,GAAkBE,GAAYC,ICTnG,SAASE,GAAUC,GACzB,OAAQ1R,GACAwR,GAAME,GAAa/N,GAClBA,EAAU3D,IAGpB,CCJO,SAAS2R,GAAM5G,EAAU6G,GAC/B,MAAO,IAAIrU,IACHwN,KAAY6G,EAAQ5K,KAAK/M,GACxBsD,EAAKtD,KAGf,CCJO,SAAS4X,GAAS9G,EAAUgE,GAClC,SAAS+C,KAAavU,GACjBuU,EAAU5J,GACb4J,EAAUC,eAAiB3D,IAG5B0D,EAAU/G,YAAYxN,GACtBuU,EAAU5J,GAAKkH,IAAM,KAChB0C,EAAUC,gBACbD,EAAU/G,YAAYxN,GAEvBuU,EAAU5J,GAAKoG,EAAK,GAClBS,GACH,CAOD,OANA+C,EAAU5J,GAAKoG,GACfwD,EAAU/G,SAAWA,EAAS4E,KAAKmC,GACnCA,EAAU5C,MAAQ,KACjBC,GAAOpL,OAAO+N,EAAU5J,IACxB4J,EAAU5J,GAAKoG,EAAK,EAEdwD,CACR,CCvBO,SAASE,GAAK1Q,EAAO2Q,GAC3B,MAAO,IAAIjS,IACHiS,EAAQ3Q,KAAUtB,EAE3B,CCpBA,MAAMkS,GAAoB9F,SAAS+F,UAc5B,SAASC,GAAkBpQ,GACjC,OAAOkQ,GAAkB7W,KAAKsU,KAAK3N,EACpC,CCHY,MAACqQ,GAAenS,OAAOoS,oBActBC,GAAcrS,OAAOsS,yBAoBrBC,GAAUvS,OAAOwS,eACjBC,GAAUP,GAAkBlS,OAAO0S,gBClCnCC,GAAS3S,OAAO4S,GCAtB,SAASjC,GAAIkC,EAAQC,GAC3B,OAAOD,EAASC,CACjB,CCDO,SAASC,GAAO5Y,GACtB,OAAOA,EAAS,CACjB,CCHO,SAAS6Y,GAAO7Y,EAAQiH,GAC9B,OAAOjH,EAASiH,CACjB,CCDO,SAAS6R,GAAU9Y,GACzB,OAAOA,EAAS,CACjB,CCHO,SAAS+Y,GAAS/Y,EAAQiH,GAChC,OAAOjH,EAASiH,CACjB,CCFO,SAAS+R,GAAaC,EAAOC,GACnC,OAAc,IAAVD,IAGkB,IAAlBC,EACI,EAEAA,EAAgBD,EAAS,IAClC,CCtBA,MAAMjP,OAAEA,IAAWtI,KAgBZ,SAASyX,GAAY7Q,EAAK4B,EAAM,GACtC,OAAOF,MAAY1B,EAAM4B,GAAOA,CACjC,CCFO,SAASkP,GAAUpZ,EAAQiH,GACjC,OAAOjH,EAASiH,CACjB,CCLO,SAASoS,GAAYrZ,GAC3B,OAAOA,EAAOiF,QAAO,CAACqU,EAAGC,IACjBD,EAAIC,GACT,EACJ,CCJO,SAASC,GAAOxZ,GACtB,OAAOA,EAAOiF,QAAO,CAACqU,EAAGC,IACjBD,EAAIC,GACT,EACJ,CCDO,SAASE,GAAgBzZ,EAAQ6B,EAAOC,GAC9C,OAAO9B,EAAS6B,GAAS7B,EAAS8B,CACnC,CCFO,SAAS4X,GAAmB1Z,EAAQ6B,EAAOC,GACjD,OAAO9B,EAAS6B,GAAS7B,EAAS8B,CACnC,CCLA,MAAML,KAAEA,IAASC,KACV,SAASiY,GAAW3Z,GAC1B,OAAwB,IAAjByB,GAAKzB,EACb,CCHO,SAAS4Z,GAAO5Z,GACtB,OAAkB,IAAXA,CACR,CCdY,MAAC6Z,GAAgBhU,OAAOiU,QAa7B,SAASC,GAAW/Z,GAC1B,GAAIS,EAAST,GACZ,OAAO6Z,GAAc7Z,EAEvB,CCFO,SAASga,GAAY3M,GAC3B,MAAM4M,EAAgB,GAMtB,OALA/I,GAAW7D,GAAQ,CAACzN,EAAMC,KACrBY,EAASb,IACZqa,EAAcna,KAAKD,EACnB,IAEKoa,CACR,CCHO5Y,eAAe6Y,GAAsBla,EAAQY,EAAWF,EAAaQ,EAAU,CAAA,GAOrF,aANM8P,GAAgBhR,GAAQqB,MAAOzB,EAAMC,EAAKoW,EAAUhF,EAAerL,KACxE,MAAMpE,QAAeZ,EAAShB,EAAMC,EAAKqB,EAAS+U,EAAUhF,EAAerL,GACvEnF,EAASe,KACZN,EAAQrB,GAAO2B,EACf,IAEKN,CACR,CCPO,SAASiZ,GAAiBna,EAAQY,EAAWF,EAAaQ,EAAU,CAAA,GAO1E,OANAgQ,GAAWlR,GAAQ,CAACJ,EAAMC,EAAKoW,EAAUhF,EAAerL,KACvD,MAAMpE,EAASZ,EAAShB,EAAMC,EAAKqB,EAAS+U,EAAUhF,EAAerL,GACjEnF,EAASe,KACZN,EAAQrB,GAAO2B,EACf,IAEKN,CACR,CCZO,SAASkZ,GAAapa,EAAQY,EAAUM,EAAU,CAAA,GAMxD,OALAgQ,GAAWlR,GAAQ,CAACJ,EAAMC,EAAKoW,EAAUhF,EAAerL,MACmB,IAAtEhF,EAAShB,EAAMC,EAAKqB,EAAS+U,EAAUhF,EAAerL,KACzD1E,EAAQrB,GAAOD,EACf,IAEKsB,CACR,CCPOG,eAAegZ,GAAkBra,EAAQY,EAAUM,EAAU,CAAA,GAMnE,aALM8P,GAAgBhR,GAAQqB,MAAOzB,EAAMC,EAAKoW,EAAUhF,EAAerL,MACQ,UAAtEhF,EAAShB,EAAMC,EAAKqB,EAAS+U,EAAUhF,EAAerL,KAC/D1E,EAAQrB,GAAOD,EACf,IAEKsB,CACR,CCTO,SAASoZ,GAAOta,EAAQ+C,EAAS,IACvC,GAAK/C,EAML,OAHAkR,GAAWlR,GAAQ,CAACJ,EAAMC,KACzBkD,EAAOnD,GAAQC,CAAG,IAEZkD,CACR,CCPY,MAACwX,GAAgB,CAACva,EAAQ+C,KACrC,GAAI/C,IAAW+C,EACd,OAAO,EAER,MAAMyX,EAAa1U,EAAK9F,GAClBya,EAAa3U,EAAK/C,GACxB,OAAIyX,EAAWva,SAAWwa,EAAWxa,QAC7BuE,EAAWgW,GAAa3a,GACvBG,EAAOH,KAASkD,EAAOlD,IAGpB,ECdA6a,GAAcjT,GAAyB,UACvCkT,GAAUjT,GAAcgT,ICFxBE,GAAmB,4BACzB,SAASC,GAAY7a,GAC3B,OAAOA,EAAOmG,QAAQyU,GAAkB,OACzC,CCDO,SAASE,GAAa9a,EAAQ+a,GACpC,OAAIA,EACID,GAAapS,GAAS1I,EAAQ6a,KAE/BG,OAAOhb,EAAOib,KAAK,KAC3B,CCGO,SAASC,GAAKlb,EAAQmb,GAC5B,GAAKnb,EAAL,CAGA,GAAIqC,EAAQ8Y,GAAY,CACvB,MAAMC,EAAiBN,GAAaK,GACpC,OAAOf,GAAapa,GAAQ,CAACJ,EAAMC,KAC1Bub,EAAehL,KAAKvQ,IAE7B,CACD,GAAI8a,GAAQQ,GACX,OAAOf,GAAapa,GAAQ,CAACJ,EAAMC,KAC1Bsb,EAAU/K,KAAKvQ,KAGzB,GAAIyP,GAAS6L,GACZ,OAAOf,GAAapa,GAAQ,CAACJ,EAAMC,IAC3BA,IAAQsb,IAGjB,GAAI/L,GAAS+L,GAAY,CACxB,MAAME,EAAiBF,EAAUhU,WACjC,OAAOiT,GAAapa,GAAQ,CAACJ,EAAMC,IAC3BA,IAAQwb,GAEhB,CACD,OAAIvJ,GAAWqJ,GACPf,GAAapa,GAAQ,CAACJ,EAAMC,KAC1Bsb,EAAUvb,EAAMC,UAF1B,CAvBC,CA4BF,CCtCY,MAACyb,GAAO,CAACtb,EAAQub,EAAWxY,EAAS,CAAA,KAChD,GAAK/C,EAML,OAHAW,EAAU4a,GAAY3b,IACrBmD,EAAOnD,GAAQI,EAAOJ,EAAK,IAErBmD,CAAM,ECVP,SAASyY,GAAWxb,GAC1B,GAAKA,EAGL,OAAO8F,EAAK9F,GAAQC,MACrB,CCFY,MAACwb,GAAY,CAAChV,EAAY4K,KACrC,MAAMqK,EAAc,CAAA,EAIpB,OAHA/a,EAAU8F,GAAY,CAAC7G,EAAMC,KAC5B6b,EAAY9b,GAAQyR,EAAOxR,EAAI,IAEzB6b,CAAW,EAeNC,GAAetO,IAC3B,MAAMuO,EAAe,GACfvK,EAAS,GAKf,OAJAH,GAAW7D,GAAQ,CAACzN,EAAMC,KACzB+b,EAAa9b,KAAKD,GAClBwR,EAAOvR,KAAKF,EAAK,IAEX,CAACgc,EAAcvK,EAAO,EC3CxBwK,GAAgB,UAcf,SAASC,GAAU9b,GACzB,IAAIwB,EAAS,GAUb,OATAxB,EAAOmG,QAAQ0V,GAAe,KAAKzU,OACjChB,MAAM,KACNzG,SAAQ,CAACC,EAAMF,KAEd8B,GADa,IAAV9B,EACOE,EAAKmc,cAELnc,EAAK,GAAGoc,cAAgBpc,EAAKO,MAAM,GAAG4b,aAChD,IAEIva,CACR,CC1BA,MAAMqa,GAAgB,UAChBI,GAAQ,QAcP,SAASC,GAAUlc,GACzB,OAAOA,EAAOmG,QAAQ,YAAa,OACjCA,QAAQ0V,GAAe,KACvBzU,OACA2U,cACA5V,QAAQ8V,GAAO,IAClB,CCrBA,MAAMJ,GAAgB,UAChBI,GAAQ,QAcP,SAASE,GAAUnc,GACzB,OAAOA,EAAOmG,QAAQ,YAAa,OACjCA,QAAQ0V,GAAe,KACvBzU,OACA2U,cACA5V,QAAQ8V,GAAO,IAClB,CCrBA,MAAMJ,GAAgB,UAef,SAASO,GAAUpc,GACzB,OAAOA,EACLmG,QAAQ,YAAa,OACrBA,QAAQ0V,GAAe,KACvBzU,OACA4U,aACH,CCrBA,MAAMH,GAAgB,UAcf,SAASQ,GAAUrc,GACzB,OAAOA,EACLmG,QAAQ,YAAa,OACrBA,QAAQ0V,GAAe,KACvBzU,OACA2U,aACH,CCLO,SAASO,GAAcC,EAAQ7c,EAAO8c,GAC5C,OAAOD,EAAOpc,MAAM,EAAGT,GAAS8c,EAAOD,EAAOpc,MAAMT,EAAO6c,EAAOtc,OACnE,CAgBO,SAASwc,GAAYF,EAAQ7c,EAAQ,GAC3C,OAAO6c,EAAOA,EAAOtc,OAASP,EAC/B,CAeO,SAASgd,GAAYH,EAAQ/c,GACnC,OAAO+c,EAAOI,MAAM,IAAI3B,OAAO,gBAAgBxb,KAAS,KACzD,CAeO,SAASod,GAAcL,EAAQ7c,EAAQ,GAC7C,OAAO6c,EAAOpc,MAAM,GAAY,EAATT,EACxB,CAeO,SAASmd,GAAWN,EAAQ7c,EAAQ,GAC1C,OAAO6c,EAAOxM,UAAUrQ,EACzB,CCvEO,SAASod,GAAYP,EAAQQ,EAAO9V,GAC1C,OAAOsV,EAAOpW,QAAQ,IAAI6U,OAAO,MAAM+B,EAAM9B,KAAK,UAAW,MAAOhU,EACrE,CCuBO,SAAS+V,GAAST,EAAQU,GAChC,MAAMC,EAAeX,EAAOtc,OAC5B,OAAQid,EAAeD,EA1CH,EAACV,EAAQU,EAAWC,KACxC,MAAMC,EAAWZ,EAAOnW,MAAM,IACxBgX,EAAiBD,EAASld,OAChC,IAAIL,EACAF,EAAQwd,EAAeD,EAC3B,KAAOvd,EAAQ0d,GAAkB1d,GAAS,IACzCE,EAAOud,EAASzd,GACH,MAATE,GAFwCF,KAM7C,OAAO6c,EAAOpc,MAAM,EAAGT,GAAO0H,MAAM,EA+BAiW,CAAad,EAAQU,EAAWC,GAAgBX,CACrF,CAeO,SAASe,GAAcf,EAAQU,GACrC,MAAMC,EAAeX,EAAOtc,OAC5B,OAAQid,EAAeD,EA/CL,EAACV,EAAQU,EAAWC,KACtC,MAAMC,EAAWZ,EAAOnW,MAAM,IACxBgX,EAAiBD,EAASld,OAChC,IAAIL,EACAF,EAAQud,EACZ,KAAOvd,EAAQ0d,GAAkB1d,EAAQ,IACxCE,EAAOud,EAASzd,GACH,MAATE,GAFuCF,KAM5C,OAAO6c,EAAOxM,UAAUrQ,EAAOwd,GAAc9V,MAAM,EAoCfmW,CAAWhB,EAAQU,EAAWC,GAAgBX,CACnF,CC5DA,MAAMiB,GAAoB,oBACpBC,GAAW,KACXC,GAAgB,KAChBC,GAAgB,KAChBC,GAAmB,KAclB,SAASC,GAAatB,GAC5B,OAAOuB,mBAAmBvB,EAAOpW,QAAQqX,IAAmB,IACpD,QAET,CAcO,SAASO,GAAaxB,GAC5B,OAAOA,EAAOpW,QAAQsX,GAAU,SAC9BtX,QAAQuX,GAAe,QACvBvX,QAAQwX,GAAe,QACvBxX,QAAQyX,GAAkB,SAC7B,CAcO,SAASI,GAASzB,GACxB,OAAOwB,GAAaF,GAAatB,GAClC,CC1DA,MAAM0B,GAAgB,OAChBC,GAAa,OAcZ,SAASC,GAAS5B,GACxB,OAAOA,EAAOI,MAAMsB,KAAkB,EACvC,CAaO,SAASlB,GAAMR,GACrB,OAAOA,EAAOI,MAAMuB,KAAe,EACpC,CC/BA,MAAME,GAAW,OAcV,SAASC,GAAiB9B,GAChC,OAAOA,EAAO,GAAGP,aAClB,CAgBO,SAASsC,GAAW/B,GAC1B,OAAO8B,GAAiB9B,GAAUM,GAAWN,EAC9C,CAcO,SAASgC,GAAehC,GAC9B,OAAO8B,GAAiB9B,GAAUM,GAAWN,GAAQR,aACtD,CAcO,SAASyC,GAAcjC,GAC7B,OAAOA,EAAOpW,QAAQiY,IAAWzB,GACzB2B,GAAW3B,IAEpB,CAcO,SAAS8B,GAAkBlC,GACjC,OAAOA,EAAOpW,QAAQiY,IAAWzB,GACzB4B,GAAe5B,IAExB,CC1EO,SAAS+B,GAAY1e,GAC3B,OAAOkW,GAAQlW,IAASwH,IACzB,CCAO,SAASmX,GAAY3e,GAC3B,QAAQS,EAAST,IAFM,uBAEKA,EAAOmH,UACpC,CCDO,SAASyX,GAAQ5e,GACvB,OAAQS,EAAST,EAClB,CCFY,MAAC6e,GAAYpX,GAAyB,OACrCqX,GAAQpX,GAAcmX,ICH7BE,GAAkB,QAClBC,GAAuB,QACtB,SAASC,GAAajf,GAC5B,GAAIA,EAAQ,CACX,MAAMuH,EAAkBmX,GAAY1e,GACpC,GAAI+e,GAAgB3O,KAAK7I,IAAoBA,IAAoByX,GAChE,OAAO,CAER,CACD,OAAO,CACR,CCDO,SAASE,GAAYlf,EAAQmf,GACnC,GAAIP,GAAQ5e,IAAW8R,GAAW9R,GACjC,OAAO,EAER,GAAIqC,EAAQrC,IAAWif,GAAajf,GACnC,OAAO,EAER,MAAMyE,EAAezE,EAAOC,OAC5B,IAAK2e,GAAQna,KAAkB2K,GAAS3K,IAAiBA,EAAe,EACvE,OAAO,EAER,GAAI0a,EAAY,CACf,MAAM5H,EAAUzR,EAAK9F,GACrB,QAAIuX,GACIJ,GAAMI,GAAS,CAACtQ,EAAOvH,IACtBA,GAAS,GAAK0P,GAAS1P,IAIhC,CACD,OAAO,CACR,CC9BY,MAAC0f,GAAe3X,GAAyB,UACxC4X,GAAW3X,GAAc0X,ICAzBE,GAAgB7X,GAAyB,WACzC8X,GAAY7X,GAAc4X,ICF1BE,GAAoB/X,GAAyB,eAC7CgY,GAAgB/X,GAAc8X,ICKpC,SAASE,GAAQC,EAAaC,GACpC,SAAKD,IAAgBC,IAGdD,aAAuBC,CAC/B,CCZA,MAAMC,GAAmB7E,OAAO,uKACzB,SAAS8E,GAAY9f,GAC3B,GAAIS,EAAST,GAAS,CACrB,MAAMuH,EAAkBvH,GAAQkH,aAAaM,KAC7C,OAAOqY,GAAiBzP,KAAK7I,EAC7B,CACD,OAAO,CACR,CCNY,MAACwY,GAAatY,GAAyB,QACtCuY,GAAStY,GAAcqY,ICG7B,SAASE,GAAQjgB,GACvB,OAAIsP,GAAStP,IAAWqC,EAAQrC,IACvBM,EAAUN,GACRgH,GAAchH,IAChBwb,GAAWxb,IAEZS,EAAST,EAClB,CCVO,SAASkgB,GAAQlgB,GACvB,OAAkB,IAAXA,CACR,CCHY,MAACmgB,GAAY1Y,GAAyB,gBACrC2Y,GAAQ1Y,GAAcyY,ICAtBE,GAAY5Y,GAAyB,gBACrC6Y,GAAQ5Y,GAAc2Y,KChB7BE,UAAEA,IAAcC,OAcTC,GAAUF,GCCVG,GAAYjZ,GAAyB,cACrCkZ,GAAQjZ,GAAcgZ,ICHtBE,GAAYnZ,GAAyB,cACrCoZ,GAAQnZ,GAAckZ,ICCtBE,GAAWrZ,GAAyB,aACpCsZ,GAAOrZ,GAAcoZ,ICD3B,SAASE,GAAWhhB,GAC1B,OAAOS,EAAST,IAA8C,mBAA5BA,EAAOihB,OAAOC,SACjD,CCJO,SAASC,GAAUnhB,GACzB,QAAIA,GACIA,aAAkBohB,OAG3B,CCHO,SAASC,GAAYrhB,GAC3B,QAAIA,IACImhB,GAAUnhB,IAAWiS,GAAQjS,IAAW2R,GAAY3R,GAG7D,CCAO,SAASshB,GAASC,EAAcC,GACtC,SAAKD,GAAiBC,GAAgBA,EAAYxgB,OAG3CugB,aAAwBC,CAChC,CCZO,SAASC,GAAYzhB,GAC3B,MAAM0hB,SAAcza,MACpB,OAAOjH,SAAqD,WAAT0hB,GAA8B,aAATA,CACzE,CCMO,SAASC,GAAUC,EAAWC,GACpC,OAAIjD,GAAQgD,KAAchD,GAAQiD,KAG9BD,EAAU5gB,KACN6gB,aAAqBD,EAEzBC,EAAU7gB,KACN4gB,aAAqBC,EAEtBA,EAAU3a,cAAgB0a,EAAU1a,YAC5C,CCjCA,MAAM4a,cAAEA,IAAkBtB,OAcbuB,GAAYD,GCblB,SAASE,GAAWhiB,EAAQiiB,GAClC,MAAM7L,EAAaF,GAAQlW,GACrBkiB,EAAYhM,GAAQ+L,GAC1B,OAAI7L,IAAe8L,GACd9L,EAAW5O,OAAS0a,EAAU1a,IAKpC,CCKO,SAAS2a,GAAOniB,GACtB,OAAkB,IAAXA,CACR,CCFY,MAACoiB,GAAY3a,GAAyB,eACrC4a,GAAQ3a,GAAc0a,ICDtBE,GAAY7a,GAAyB,eACrC8a,GAAQ7a,GAAc4a,ICDtBE,GAAW/a,GAAyB,cACpCgb,GAAO/a,GAAc8a,ICDrBE,GAAYjb,GAAyB,qBACrCkb,GAAQjb,GAAcgb,ICDtBE,GAAgBnb,GAAyB,WACzCob,GAAYnb,GAAckb,IChB1BE,QAAoC,IAApBC,WAAWC,KCA3BC,QAAyC,IAAvBF,WAAWG,SAA2BA,QAAQC,UAAYD,QAAQC,SAASC,KCenG,SAASC,GAASrjB,EAAQsjB,GAAe,GAC/C,OAAO/iB,QAAQP,IAAWsjB,CAC3B,CCFO,SAASC,GAAQvjB,EAAQsjB,GAAe,GAC9C,OAA2B,IAApB/iB,QAAQP,IAAqBsjB,CACrC,CCEO,SAASE,GAAQxjB,EAAQ+C,EAAQ0gB,EAAUvgB,GACjD,GAAIzC,EAAST,GAAS,CACrB,GAAI8R,GAAW/O,GACd,OAAI0gB,EACIvO,GAAMnS,EAAQ0gB,EAAUvgB,GAEzBH,KAAUG,GACX,GAAI8D,GAAcjE,GAExB,OADAA,EAAO0gB,GAAYzjB,EACZ+C,CAER,CACF,CCfO,SAAS2gB,GAAS1jB,EAAQ+C,GAChC,OAAOmd,GAAQlY,GAAQhI,EAAQ+C,GAChC,CClBA,MAAM4gB,GAAaC,KAeZ,SAASC,GAAU7jB,EAAQ8jB,GACjC,GAAI9jB,EACH,OAAO2jB,GAAWI,MAAM/jB,EAAQ8jB,EAElC,CAcY,MAACE,GAAYL,GAAWK,UC7BpC,SAASC,GAAkBjkB,EAAQkkB,EAAUC,GAC5C,MAAMC,EAAUrB,WAAWqB,SAAWD,EACtC,IAAIE,EAMJ,OALIvS,GAAWsS,GACdC,EAAa,GAAGD,EAAQ5c,UAAU4c,EAAQld,YAAYM,OAC5C4c,IACVC,EAAa,GAAGD,EAAQE,OAASF,EAAQzc,OAAOH,WAAW4c,EAAQG,QAE7D,IAAIC,MAAM,gBAAgBH,kBACtBL,GAAUhkB,qBACRgkB,GAAUE,KAAaE,EACrC,CACO/iB,eAAeojB,GAAYC,EAAWR,EAAUE,GACtD,MAAMpkB,QAAe0kB,EAErB,QADyB5S,GAAWoS,KAAiD,UAA9BA,EAASlkB,EAAQokB,MAChDV,GAAS1jB,EAAQkkB,IACjCD,GAAkBjkB,EAAQkkB,EAAUE,EAG7C,CAkBO,SAASO,GAAO3kB,EAAQkkB,EAAUE,GACxC,GAAI/C,GAAYrhB,IAAWqhB,GAAY6C,GACtC,OAAOO,GAAYzkB,EAAQkkB,EAAUE,GAGtC,QADyBtS,GAAWoS,KAA2C,IAA9BA,EAASlkB,EAAQokB,MAC1CV,GAAS1jB,EAAQkkB,IACjCD,GAAkBjkB,EAAQkkB,EAAUE,EAG7C,CC9BO,SAASQ,GAAQxX,EAAYyX,EAAUC,GAC7C,MAAM5jB,EAAUyL,GAAIS,GAAaxN,GACzBkS,GAAWlS,GAAQA,EAAK0V,KAAKuP,GAAYjlB,IAEjD,OAAO,EAAiBmR,GAAO+T,EAAc5jB,GAAWA,CACzD,CCRO,SAAS2T,GAAM7U,GACrB,GAAIA,EAAQ,CACX,GAAI+H,GAAS/H,GACZ,OAAOiN,GAAYjN,GACb,GAAIqC,EAAQrC,GAClB,OAAOD,EAAWC,GACRA,EAAO6U,MACjB7U,EAAO6U,QACG7U,EAAOC,SACjBD,EAAOC,OAAS,EAEjB,CACD,OAAOD,CACR,CCjBA,MAAM+kB,GAAsBhC,WAAWiC,gBAChC,SAASC,GAAMjlB,GACrB,OAAO+kB,GAAoB/kB,EAC5B,CCAO,SAASklB,GAAQllB,GACvB,GAAIgH,GAAchH,GAAS,CAC1B,MAAMwa,EAAa1U,EAAK9F,GAClBmlB,EAAmB3K,EAAWva,OAC9BmlB,EAAe,CAAA,EACrB,IAAK,IAAIpgB,EAAI,EAAGA,EAAImgB,EAAkBngB,IAAK,CAC1C,MAAMqgB,EAAU7K,EAAWxV,GACrBpF,EAAOI,EAAOqlB,GACDhC,GAASzjB,KAE3BwlB,EAAaC,GAAWzlB,EAEzB,CACD,OAAOwlB,CACP,CACD,OAAOplB,EAAO4L,QAAQhM,GACdyjB,GAASzjB,IAElB,CCPOyB,eAAeikB,GAAqBtlB,EAAQY,EAAWF,EAAa4V,EAAezE,GACzF,GAAIF,GAAY3R,GAAS,CACxB,MAAM4W,EAAmB,GACzB,UAAW,MAAMhX,KAAQI,KAAU6R,GAAgB,CAClD,MAAMrQ,QAAeZ,EAAShB,EAAMgX,EAAkB5W,GAClDS,EAASe,IACZoV,EAAiB9W,KAAK0B,EAEvB,CACD,OAAOoV,CACP,CACD,MAAM1V,EAAUoV,GAAiBH,GAAUnW,GAC3C,GAAIqC,EAAQrC,IAAWwR,GAAMxR,GAAS,CACrC,MAAMuW,EAAarV,EAAQpB,MAAQoB,EAAQsV,IACrCC,EAAkBF,GAAcA,EAAWjB,KAAKpU,GACtD,IAAK,MAAM+F,KAASjH,EAAQ,CAC3B,MAAMwB,QAAeZ,EAASqG,EAAO/F,EAASlB,GAC1CS,EAASe,IACZiV,EAAgBjV,EAEjB,CACD,OAAON,CACP,CACD,MAAMwV,EAAY5E,GAAW5Q,EAAQ6C,KACrC,UAAW,MAAOlE,EAAKoH,KAAUjH,EAAQ,CACxC,MAAMwB,QAAeZ,EAASqG,EAAOpH,EAAKqB,EAASlB,GAC/CS,EAASe,KACRkV,EACHxV,EAAQ6C,IAAIlE,EAAK2B,GAEjBN,EAAQrB,GAAO2B,EAGjB,CACD,OAAON,CACR,CCnCO,SAASqkB,GAAgBvlB,EAAQY,EAAWF,EAAa4V,GAC/D,MAAMpV,EAAUoV,GAAiBH,GAAUnW,GAC3C,GAAIqC,EAAQrC,IAAWwR,GAAMxR,GAAS,CACrC,MAAMuW,EAAarV,EAAQpB,MAAQoB,EAAQsV,IACrCC,EAAkBF,GAAcA,EAAWjB,KAAKpU,GACtD,IAAK,MAAM+F,KAASjH,EAAQ,CAC3B,MAAMwB,EAASZ,EAASqG,EAAO/F,EAASlB,GACpCS,EAASe,IACZiV,EAAgBjV,EAEjB,CACD,OAAON,CACP,CACD,MAAMwV,EAAY5E,GAAW5Q,EAAQ6C,KACrC,IAAK,MAAOlE,EAAKoH,KAAUjH,EAAQ,CAClC,MAAMwB,EAASZ,EAASqG,EAAOpH,EAAKqB,EAASlB,GACzCS,EAASe,KACRkV,EACHxV,EAAQ6C,IAAIlE,EAAK2B,GAEjBN,EAAQrB,GAAO2B,EAGjB,CACD,OAAON,CACR,CC5BY,MAACskB,GAAatT,GAAajR,EAAiBM,EACvD4Y,GAAkBD,GAAuBqL,GAAiBD,ICvBpD,SAASG,MAAY1S,GAC3B,OAAId,GAAQc,EAAQ,IACZ1R,kBAAkB6B,GACxB,OAAOiU,GAAMpE,GAAS1R,MAAOsG,GACrBwP,GAAMjU,GAAM7B,MAAOzB,GAClB+H,EAAO/H,MAGnB,EAEQ,YAAYsD,GAClB,OAAOiU,GAAMpE,GAAUpL,GACfwP,GAAMjU,GAAOtD,GACZ+H,EAAO/H,MAGlB,CACA,CCOO,SAAS8lB,GAAY1lB,EAAQY,EAAWF,EAAa4V,GAC3D,MAAMpV,EAAUoV,GAAiBH,GAAUnW,GAC3C,GAAIqC,EAAQrC,IAAWwR,GAAMxR,GAAS,CACrC,MAAMuW,EAAarV,EAAQpB,MAAQoB,EAAQsV,IACrCC,EAAkBF,GAAcA,EAAWjB,KAAKpU,GACtD,IAAK,MAAM+F,KAASjH,EAAQ,EAEZ,IADAY,EAASqG,EAAO/F,EAASlB,IAEvCyW,EAAgBxP,EAEjB,CACH,KAAQ,CACN,MAAMyP,EAAY5E,GAAW5Q,EAAQ6C,KACrC,IAAK,MAAOlE,EAAKoH,KAAUjH,EAAQ,EAEnB,IADAY,EAASqG,EAAOpH,EAAKqB,EAASlB,KAExC0W,EACHxV,EAAQ6C,IAAIlE,EAAKoH,GAEjB/F,EAAQrB,GAAOoH,EAGjB,CACD,CACD,OAAO/F,CACR,CCxBOG,eAAeskB,GAAiB3lB,EAAQY,EAAWF,EAAa4V,EAAezE,GACrF,GAAIF,GAAY3R,GAAS,CACxB,MAAM4W,EAAmB,GACzB,UAAW,MAAMhX,KAAQI,KAAU6R,IACqB,UAA7CjR,EAAShB,EAAMgX,EAAkB5W,IAC1C4W,EAAiB9W,KAAKF,GAGxB,OAAOgX,CACP,CACD,MAAM1V,EAAUoV,GAAiBH,GAAUnW,GAC3C,GAAIqC,EAAQrC,IAAWwR,GAAMxR,GAAS,CACrC,MAAMuW,EAAarV,EAAQpB,MAAQoB,EAAQsV,IACrCC,EAAkBF,GAAcA,EAAWjB,KAAKpU,GACtD,IAAK,MAAM+F,KAASjH,EAAQ,EAEZ,UADMY,EAASqG,EAAO/F,EAASlB,IAE7CyW,EAAgBxP,EAEjB,CACH,KAAQ,CACN,MAAMyP,EAAY5E,GAAW5Q,EAAQ6C,KACrC,UAAW,MAAOlE,EAAKoH,KAAUjH,EAAQ,EAEzB,UADMY,EAASqG,EAAOpH,EAAKqB,EAASlB,KAE9C0W,EACHxV,EAAQ6C,IAAIlE,EAAKoH,GAEjB/F,EAAQrB,GAAOoH,EAGjB,CACD,CACD,OAAO/F,CACR,CCrCY,MAAC0K,GAASsG,GAAavN,EAAaC,EAAkBwV,GAAcC,GAAmBqL,GAAaC,ICtBhH,SAASC,GAAWlV,GACnB,MAAO,IAAIqC,IACFpN,IACP,IAAIsB,EAAQtB,EAIZ,OAHA+K,EAASqC,GAAUnT,IAClBqH,EAAQrH,EAAKqH,EAAM,IAEbA,CAAK,CAGf,CAcY,MAAC4e,GAAOD,GAAWjlB,GAclBmlB,GAAYF,GAAWvhB,GCtCpC,SAASuhB,GAAWlV,GACnB,MAAO,IAAIqC,IACH1R,MAAOsE,IACb,IAAIsB,EAAQtB,EAIZ,aAHM+K,EAASqC,GAAS1R,MAAOzB,IAC9BqH,QAAcrH,EAAKqH,EAAM,IAEnBA,CAAK,CAGf,CAeY,MAAC8e,GAAYH,GAAWtkB,GAevB0kB,GAAiBJ,GAAWrhB,GCvClC,SAAS0hB,GAAOjmB,EAAQoC,GAC9B,MAAM8jB,EAAS/P,GAAUnW,GACnB2H,EAASue,EAAOpmB,MAAQomB,EAAO1P,IACrC,GAAI7O,GAAUmK,GAAWnK,GAAS,CACjC,MAAMwe,EAAcxe,EAAO2N,KAAK4Q,GAChClmB,EAAOL,SAASC,IACf,MAAM4B,EAASY,EAASxC,EAAMsmB,GAC9BC,EAAY3kB,EAAO,GAEpB,MAAUsQ,GAAWoU,EAAOniB,KAC5B/D,EAAOL,SAAQ,CAACC,EAAMC,KACrB,MAAM2B,EAASY,EAASxC,EAAMC,EAAKqmB,GACnCA,EAAOniB,IAAIlE,EAAK2B,EAAO,IAGxBxB,EAAOL,SAAQ,CAACC,EAAMC,KACrB,MAAM2B,EAASY,EAASxC,EAAMC,EAAKqmB,GACnCA,EAAOrmB,GAAO2B,CAAM,IAGtB,OAAO0kB,CACR,CCTO,SAASE,GAAepmB,EAAQyG,GACtC,MAAMqI,EAAe,CAAA,EAIrB,OAHAnO,EAAUX,GAAQ,CAACJ,EAAMC,KACxBiP,EAAarI,EAAW5G,IAAQD,CAAI,IAE9BkP,CACR,CCAO,SAASxC,GAAItM,EAAQqmB,EAAQpkB,GACnC,GAAI2c,GAAQ5e,IAAW4e,GAAQyH,GAC9B,OAAO,EAER,GAAI/W,GAAStP,GACZ,OAAIsP,GAAS+W,GACLrmB,EAAOyF,SAAS4gB,EAAQpkB,GAE5B0Y,GAAQ0L,GACJA,EAAOjW,KAAKpQ,GAEhB8R,GAAWuU,GACP9lB,QAAQ8lB,EAAOrmB,IAEhBmX,GAAMkP,GAASzmB,GACdW,QAAQ+L,GAAItM,EAAQJ,MAG7B,GAAIyC,EAAQrC,GAAS,CACpB,GAAIsP,GAAS+W,GACZ,OAAOrmB,EAAOyF,SAAS4gB,EAAQpkB,GAEhC,GAAI0Y,GAAQ0L,GACX,OAAOlP,GAAMnX,GAASJ,GACdA,EAAKwQ,KAAKiW,KAGnB,GAAIhkB,EAAQgkB,GACX,OAAOlP,GAAMkP,GAASzmB,GACdW,QAAQ+L,GAAItM,EAAQJ,KAG7B,CACD,OAAO,CACR,CC1CY,MAAC0mB,GAASpW,GAAiB,MCG1BqW,GAAc,CAACC,EAAYvX,EAAUwX,KAC7CxX,IAAaxO,EAAS+lB,EAAWvX,MACpCuX,EAAWvX,GAAYwX,GAEjBD,GCfD,MAAME,GACZnS,KAAOzR,EAAUQ,KACjB,SAAAR,GACC,CAWD,MAAA4G,CAAOmE,GACN8Y,cAAc9Y,GACdmF,KAAKuB,KAAKE,OAAO5G,EACjB,CACD,GAAAvB,CAAIuB,GACH,OAAOmF,KAAKuB,KAAKjI,IAAIuB,EACrB,CACD,GAAAhK,CAAIgK,GACH,OAAOmF,KAAKuB,KAAK1Q,IAAIgK,EACrB,CAaD,GAAA9J,CAAI2M,EAAUgE,GAEb,MAAM7G,EAAK+Y,aAAY,KACtBlW,GAAU,GACRgE,GAEH,OADA1B,KAAKuB,KAAKxQ,IAAI8J,EAAIkG,IACXlG,CACP,CAUD,KAAAgH,GACC,MAAMF,EAAc3B,KACpB2B,EAAYJ,KAAK5U,SAASkO,IACzB8G,EAAYjL,OAAOmE,EAAG,GAEvB,EAEU,MAACgZ,GAAY/jB,EAAU4jB,IAe5B,SAASI,GAASpW,EAAUgE,GAClC,OAAOmS,GAAU9iB,IAAI2M,EAAUgE,EAChC,CAYO,SAASqS,KAEf3S,GADWQ,WAAWT,GAAM,IACjBzU,IACVmnB,GAAUnd,OAAOhK,EAAM,GAEzB,CCjFO,SAASsnB,GAAMjkB,KAAWK,GAWhC,OAVAyP,GAAKzP,GAAU6jB,IACdpU,GAAKoU,GAAe,CAACC,EAAYC,KAChC,GAAIpkB,EAAOokB,KACNngB,GAAckgB,IAAe7kB,EAAQ6kB,IAAeA,EAAWvnB,SAClE,OAAOqnB,GAAMjkB,EAAOokB,GAAYD,GAGlCnkB,EAAOokB,GAAaD,CAAU,GAC7B,IAEInkB,CACR,CCbO,MAAMqkB,GACZC,cAAgB,CAAA,EAChB,WAAAngB,CAAYogB,EAAWC,GAClB9mB,EAAS8mB,IACZxW,GAAOiC,KAAMuU,GACbvU,KAAKsU,UAAYA,EACjBF,GAAMI,OAAOzjB,IAAIujB,EAAWC,IAE5BxW,GAAOiC,KAAMsU,EAEd,EASK,SAASG,GAAMH,EAAWC,GAChC,OAAI9mB,EAAS8mB,GACLzkB,EAAUskB,GAAO,CAACE,EAAWC,IAE9B1jB,EAAIyjB,EAAWF,GAAMI,OAC7B,CC3BO,SAASE,GAAKjV,EAAWC,GAC/B,MAAO,CAACD,EAAWC,EACpB,CCKO,SAASiV,GAAW3nB,EAAQY,EAAU0D,GAC5C,MAAMvD,EAAcf,EAAOC,OACrB2nB,EAAQ,GACd,IAAK,IAAIloB,EAAQ,EAAEA,EAAQqB,EAAarB,IACvCkoB,EAAMloB,GAASkB,EAASZ,EAAON,GAAQA,EAAOM,EAAQe,EAAauD,GAEpE,OAAO8c,QAAQyG,IAAID,EACpB,CCPO,SAASE,GAAiB9nB,EAAQY,EAAU0D,GAClD,MAAMvD,EAAcf,EAAOC,OACrB2nB,EAAQ,GACd,IAAK,IAAIloB,EAAQ,EAAEA,EAAQqB,EAAarB,IACvCkoB,EAAMloB,GAASkB,EAASZ,EAAON,GAAQA,EAAOM,EAAQe,EAAauD,GAEpE,OAAO8c,QAAQ2G,WAAWH,EAC3B,CCTO,SAASI,GAAQ5lB,GACvB,OAAO,IAAIgf,QAAQhf,EACpB,CCGY,MAAC6lB,GAAgB,CAACjoB,EAAQkoB,EAAUzhB,EAAaX,EAAK9F,KAC1DwE,EAAWiC,GAAawI,GACvBjH,GAAQhI,EAAOiP,GAAWiZ,EAASjZ,MCtBrC,SAASkZ,GAAOnoB,EAAQH,EAAKoH,GAcnC,OAbIpH,GAAOmH,GAAchH,IAEdoP,GAASvP,IAAQwC,EAAQrC,GADnCA,EAAOH,GAAOoH,EAGJjH,EAAO+D,IACjB/D,EAAO+D,IAAIlE,EAAKoH,GACNjH,EAAOF,KACjBE,EAAOF,KAAKmH,GACFjH,EAAOwW,IACjBxW,EAAOwW,IAAIvP,GAEXjH,EAAOH,GAAOoH,EAERjH,CACR,CCfO,SAASoT,GAASpT,EAAQiH,EAAOpH,GAUvC,OATIuP,GAASvP,IAAQwC,EAAQrC,GAC5BA,EAAOH,GAAOoH,EACJjH,EAAOF,KACjBE,EAAOF,KAAKmH,GACFjH,EAAOwW,IACjBxW,EAAOwW,IAAIvP,GAEXjH,EAAOH,GAAOoH,EAERjH,CACR,CCdO,MAAMooB,GACZpoB,OACA,WAAAkH,CAAYlH,EAAS,IAEpB,GADAgT,KAAKhT,OAASA,EACC,OAAXA,GAAqC,iBAAXA,EAC7B,OAAOA,EAERkR,GAAWlR,GAASiP,IACnBjP,EAAOiP,GAAY,IAAImZ,GAAMpoB,EAAOiP,GAAU,IAE/C+D,KAAKqV,KAAO,IAAIC,MAAMtoB,EAAQ,CAC7B6D,IAAG,CAAC0kB,EAAatZ,KAChBuZ,QAAQC,IAAIF,EAAatZ,EAAUsZ,EAAYtZ,IACxCsZ,EAAYtZ,IAEpBlL,IAAG,CAACwkB,EAAatZ,EAAUhI,KAC1BuhB,QAAQC,IAAIF,EAAatZ,EAAUsZ,EAAYtZ,IAC/CsZ,EAAYtZ,GAAY,IAAImZ,GAAMnhB,IAC3B,IAGT,ECVU,MAACyhB,GAAY,IACjB,GCAKC,GAAa,KAClB,ICDKC,GAAa,IAClB,GCODvnB,eAAewnB,GAAW5kB,EAAQrD,GACxC,IAAK,IAAIlB,EAAQ,EAAGA,EAAQuE,EAAQvE,UAC7BkB,EAASqD,EAEjB,CAoBO5C,eAAeynB,GAAc7kB,EAAQrD,EAAUM,EAAU,IAC/D,IAAK,IAAIxB,EAAQ,EAAGA,EAAQuE,EAAQvE,IACnCwB,EAAQxB,SAAekB,EAASqD,GAEjC,OAAO/C,CACR,CChCO,SAAS6nB,GAAO9hB,EAAO+hB,GAAK,EAAMC,GAAM,GAC9C,OAAQjhB,GAAQghB,EAAI/hB,GAAUgiB,EAAMD,CACrC,CCGO,MAAME,GACZC,YAAc,EACdC,MAAQ,GACRC,UAAY,EAeZ,GAAAxlB,GACC,IAAIrC,EAASwR,KAAKoW,MAAME,QAOxB,OANI7oB,EAASe,GACZwR,KAAKqW,aAEL7nB,EAASwR,KAAKmW,YACdnW,KAAKmW,eAEC3nB,CACP,CAkBD,IAAA+nB,CAAK1b,GACJmF,KAAKoW,MAAMtpB,KAAK+N,GAChBmF,KAAKqW,YACL,MAAMG,EAAWxW,KAAKmW,YAAc,EAC9BM,EAAczW,KAAKmW,cAAgBnW,KAAKqW,UAC1CG,GAAYC,GACfzW,KAAK0W,OAEN,CACD,KAAAA,GACC1W,KAAKmW,YAAc,EACnBnW,KAAKoW,MAAMnpB,OAAS,EACpB+S,KAAKqW,UAAY,CACjB,EAeU,MAACM,GAAS7mB,EAAUomB,ICnFzB,MAAMU,GACZ,WAAA1iB,CAAY2iB,EAAgB,IAC3B7W,KAAK8W,MAAQD,CACb,CAcD,OAAAE,CAAQlqB,GACP,OAAOmT,KAAK8W,MAAMjqB,EAClB,CAcD,OAAAmqB,CAAQnqB,EAAKoH,GACZ+L,KAAK8W,MAAMjqB,GAAOoH,CAClB,CAeD,KAAA4N,GACC7B,KAAK8W,MAAQ,EACb,CAeD,UAAAG,CAAWpqB,GACVmT,KAAK8W,MAAMjqB,GAAO,IAClB,EAgBK,SAASqqB,GAAeL,GAC9B,OAAO,IAAID,GAAeC,EAC3B,CC1FOxoB,eAAe8oB,GAAWC,EAAcC,GAC9C,MAAMC,QAAcC,EAAQH,GAc5B,aAbM9oB,EAAegpB,GAAOjpB,MAAOkjB,IAClC,MAAMiG,EAAaC,EAAKxP,KAAKmP,EAAc7F,GAE3C,UADwBmG,EAAKF,IACfG,cAAe,CAC5B,MAAMC,EAAoBH,EAAKxP,KAAKoP,EAAmB9F,EAAKpe,QAAQikB,EAAc,WAC5ES,EAAMD,EAAmB,CAC9BE,WAAW,UAENX,GAAWK,EAAYI,EAChC,YAhBAvpB,eAA0B+oB,EAAcC,EAAmB9F,GAC1D,MAAMiG,EAAaC,EAAKxP,KAAKmP,EAAc7F,GACrCwG,EAAkBN,EAAKxP,KAAKoP,EAAmB9F,SAC/CyG,EAASR,EAAYO,EAC5B,CAaSE,CAAWb,EAAcC,EAAmB9F,EAClD,KAEK,CACR,CCxBO,SAAS2G,GAAYC,GAC3B,OAAIpI,WAAWqI,WACPA,WAEDC,EAAcF,EAAWG,IACjC,CACO,SAASC,GAAYJ,GAC3B,OAAIpI,WAAWyI,UACPA,UAEDf,EAAKgB,QAAQJ,EAAcF,EAAWG,KAC9C"} \ No newline at end of file diff --git a/docs/basic.es.js b/docs/basic.es.js index f1407d70..917ac48a 100644 --- a/docs/basic.es.js +++ b/docs/basic.es.js @@ -1,2 +1,2 @@ -function n(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function t(n){return n.length=0,n}function r(n){return n.slice()}function e(n){return void 0===n}function o(n){return Boolean(n.length)}function u(n){return null===n}function c(n){return!e(n)&&!u(n)}function i(n){return n}function s(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const f=t.call(e,n,u,r,i,s,o);c(f)&&r.push(f)})):s(n,((n,u,i,s)=>{const f=t(n,u,r,i,s,e,o);c(f)&&r.push(f)})),r}async function a(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const u=await t(n,e,r,o);c(u)&&r.push(u)})),r}const{sign:h}=Math;function g(n){return-1===h(n)}function p(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function m(n,t,r=1,e=[]){return g(r)?e:n{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function O(n,t=1,r=n.length){return n.splice(t,r)}const $=(n,t=1,r=n.length)=>O(n,0,r-t);function j(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function B(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function C(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function F(n,t,r=[],e){return await a(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function R(n,t){return t?n.slice(0,t):n[0]}function T(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(v(t))),[]);return r}function P(n){return n.slice(0,n.length-1)}function U(n,...t){return f(n,(n=>{if(C(t,(t=>t.includes(n))))return n}))}const N=Object.keys;function L(n){if(n)return N(n)}const _=/\.|\[/,D=/]/g,Z="";function k(n){return n.replace(D,Z).split(_)}function q(n,t){if(!t)return!1;let r=t;return C(y(n)?n:k(n),(n=>(r=r[n],c(r)))),r}const V=Object.hasOwn;function G(n,...t){if(n)return C(t,(t=>{const r=k(t);if(1===r.length)return V(n,t);{const t=r.pop(),e=q(r,n);return!!e&&V(e,t)}}))}function J(n,...t){if(n)return Boolean(t.find((t=>{const r=k(t);if(1===r.length)return V(n,t);{const t=r.pop(),e=q(r,n);return!!e&&V(e,t)}})))}const W=n=>!!c(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function z(n,t){return n?.constructor===t||!1}function H(n){return t=>z(t,n)}function K(n){return n?.constructor?.name}function Q(n){return t=>K(t)===n||!1}function X(n){return function(t,...r){return r?n(t)&&C(r,n):n(t)}}const Y=Q("Buffer"),nn=X(Y),tn=(n,t)=>{if(n===t)return!0;if(nn(n))return n.equals(t);if(n.toString()===t.toString())if(W(n)){const r=L(n);if(G(t,r))return C(r,(r=>tn(n[r],t[r])))}else if(y(n)&&n.length===t.length)return C(n,((n,r)=>tn(n,t[r])));return!1};function rn(n,t){return n.length===t.length&&C(n,((n,r)=>tn(t[r],n)))}const en=Math.max;function on(n){return en(...n)}function un(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function cn(n,t,r=[],e,o){return c(e)?s(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):s(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function sn(n,t){const r=[];return await a(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function fn(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function an(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function pn(n,t){return t-n}function dn(n){return n.sort(pn)}function mn(n,t){let r=n.length;for(let e=0;er)return $n(n);if(1===t)return[n[En(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Mn(n,t=1){return n.slice(0,t)}function Fn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Rn(n,t,r){return r.indexOf(n)===t}function Tn(n,t,r){return n!==r[t-1]}function Pn(n,t){return t?n.filter(Tn):n.filter(Rn)}function Un(...n){return Pn(A(n))}function Nn(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function qn(...n){const t=I(Map),r=[];return 2===n.length?x(n[0],n[1]):(s(n,((n,r)=>{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Vn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Gn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Jn(n){return nn(n)&&n||c(n)&&Buffer.from(n)||Buffer.alloc(0)}function Wn(n){return n.fill(0),n}function zn(n,t){const r={};let e;return s(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function Hn(n,t){let r=0;return s(n,(n=>{n[t]&&r++})),r}function Kn(n,t){let r=0;return s(n,(n=>{n[t]||r++})),r}function Qn(n,t,r,e,o){if(n[o]===e)return!0}function Xn(n,t,r="id"){const e=n.findIndex(((n,e)=>Qn(n,0,0,t,r)));return-1!==e&&e}function Yn(n,t,r="id"){const e=n.find(((n,e)=>Qn(n,0,0,t,r)));return-1!==e&&e}function nt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function tt(n,t="id",r){return n.sort(((n,e)=>nt(n,e,t,r)))}function rt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function et(n,t="id",r){return n.sort(((n,e)=>rt(n,e,t,r)))}function ot(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function ut(n,t="id",r){return n.sort(((n,e)=>ot(n,e,t,r)))}function ct(n,t="id"){return ut(n,t)[0]}function it(n,t){return tt(n,t,!1)[0]}function st(n,t){const r={};return s(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function ft(n,t="id"){const r={};return s(n,(n=>{r[n[t]]=n})),r}function at(n,t,r){return cn(n,((n,e)=>n[t](r,e)))}function lt(n,t,r){return sn(n,(async(n,e)=>n[t](r,e)))}const ht=Q("Number"),gt=X(ht);function pt(n){return!gt(n)}const dt=H(String);function mt(n){return!dt(n)}function wt(n,t){if(n)return dt(t)?n[t]:cn(t,(t=>n[t]))}function yt(n,t){return cn(n,(n=>wt(n,t)))}function bt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function vt(n,t="id",r){return n.sort(((n,e)=>bt(n,e,t,r)))}function At(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function Et(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function It(n){return t=>!!c(t)&&n.test(t)}const xt=It(/\.css$/),Ot=It(/\.html$/),$t=It(/\.js$/),jt=It(/\.json$/);function Bt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function Ct(n,t){return(...r)=>n(...r.splice(0,t))}function St(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Mt=Object.assign;function Ft(n,...t){if(c(n))return Mt(n,...t)}const Rt=async(n,t,r,e)=>{if(!n)return;const o=L(n);return c(r)?await a(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await a(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Tt(n,t,r,e){if(!n)return;const o=L(n);return c(r)?s(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):s(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function Pt(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!c(n)&&n instanceof Function,qt=Q("AsyncFunction"),Vt=X(qt);function Gt(n,t,r,e,o,u){return(i,s,f,a,l)=>{let h;const g=Vt(s);if(c(i)&&s)return h=y(i)?g?t:n:W(i)||kt(i)?g?e:r:o?g?u:o:Dt(i)?u:g?e:r,h(i,s,f,a,l)}}const Jt=Gt(s,a,Tt,Rt,Lt,Zt);class Wt{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Jt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function zt(n){return I(Wt,[n])}function Ht(n,r=n.length){const e=[],o=(...u)=>{if(e.push(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}function Kt(n,r=n.length){const e=[],o=(...u)=>{if(e.unshift(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}const Qt=!0,Xt=()=>Qt,Yt=!1,nr=()=>Yt,tr=()=>{};function rr(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,Qt),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const ur=I(or);function cr(n,t){return ur.set(n,t)}function ir(){rr(setTimeout(tr,0),(n=>{ur.remove(n)}))}const sr=Reflect.apply;function fr(n,t,r){if(kt(n))return sr(n,t,r)}function ar(n,t){function r(...n){r.id!==Yt&&ur.remove(r.id),r.id=cr((()=>{r.callable(...n),r.id=Yt}),t)}return r.id=Yt,r.callable=n.bind(r),r.clear=()=>{r.id!==Yt&&(ur.remove(r.id),r.id=Yt)},r}function lr(n,...t){if(kt(n))return n(...t)}async function hr(n,t){const r=n.length;for(let e=0;eJt(n,(n=>{n(t)}));function pr(n){return(...t)=>!n(...t)}function dr(n=0){return(...t)=>t[n]}const mr=n=>{let t;return(...r)=>(c(t)||(t=n(...r)),t)};async function wr(n,t,r={}){if(n)return await Rt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function yr(n,t,r={},e,o){if(n)return c(e)?Tt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Tt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function br(n){return n?.constructor}function vr(n,t=[]){const r=br(n);return r===Function&&"function"===r.name?function(){}:I(r,t)}function Ar(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=kt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Er(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=kt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const Ir=Gt(cn,sn,yr,wr,Ar,Er);function xr(n){return(...t)=>Ir(n,(n=>n(...t)))}async function Or(n,t){if(!n)return;return S(L(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function $r(n,t){if(!n)return;return C(L(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function jr(n,t=i){if(y(n)||Nt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Br(n,t=i,r){if(Dt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(y(n)||Nt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Cr=Gt(C,S,$r,Or,jr,Br);function Sr(n){return t=>Cr(n,(n=>n(t)))}function Mr(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Fr(n,t){function r(...n){r.id?r.shouldThrottle=Qt:(r.callable(...n),r.id=cr((()=>{r.shouldThrottle&&r.callable(...n),r.id=Yt}),t))}return r.id=Yt,r.callable=n.bind(r),r.clear=()=>{ur.remove(r.id),r.id=Yt},r}function Rr(n,t){return(...r)=>t(n,...r)}const Tr=Function.prototype;function Pr(n){return Tr.call.bind(n)}const Ur=Object.getOwnPropertyNames,Nr=Object.getOwnPropertyDescriptor,Lr=Object.defineProperty,_r=Pr(Object.hasOwnProperty),Dr=Object.is;function Zr(n,t){return n+t}function kr(n){return n-1}function qr(n,t){return n/t}function Vr(n){return n+1}function Gr(n,t){return n*t}function Jr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:Wr}=Math;function zr(n,t=0){return Wr()*(n-t)+t}function Hr(n,t){return n%t}function Kr(n){return n.reduce(((n,t)=>n-t),0)}function Qr(n){return n.reduce(((n,t)=>n+t),0)}function Xr(n,t,r){return n>t&&nr}const{sign:ne}=Math;function te(n){return 1===ne(n)}function re(n){return 0===n}const ee=Object.entries;function oe(n){if(c(n))return ee(n)}function ue(n){const t=[];return Tt(n,((n,r)=>{c(n)&&t.push(r)})),t}async function ce(n,t=i,r={}){return await Rt(n,(async(n,e,o,u,i)=>{const s=await t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function ie(n,t=i,r={}){return Tt(n,((n,e,o,u,i)=>{const s=t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function se(n,t,r={}){return Tt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function fe(n,t,r={}){return await Rt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function ae(n,t={}){if(n)return Tt(n,((n,r)=>{t[n]=r})),t}const le=(n,t)=>{if(n===t)return!0;const r=L(n),e=L(t);return r.length===e.length&&C(r,(r=>n[r]===t[r]))},he=Q("RegExp"),ge=X(he),pe=/[()[\]{}*+?^$|#.,/\\\s-]/g;function de(n){return n.replace(pe,"\\$&")}function me(n,t){return t?me(cn(n,de)):RegExp(n.join("|"))}function we(n,t){if(n){if(y(t)){const r=me(t);return se(n,((n,t)=>!r.test(t)))}if(ge(t))return se(n,((n,r)=>!t.test(r)));if(dt(t))return se(n,((n,r)=>r!==t));if(gt(t)){const r=t.toString();return se(n,((n,t)=>t!==r))}return kt(t)?se(n,((n,r)=>!t(n,r))):void 0}}const ye=(n,t,r={})=>{if(n)return s(t,(t=>{r[t]=n[t]})),r};function be(n){if(n)return L(n).length}const ve=(n,t)=>{const r={};return s(n,((n,e)=>{r[n]=t[e]})),r},Ae=n=>{const t=[],r=[];return Tt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Ee=/[ _-]+/g;function Ie(n){let t="";return n.replace(Ee," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const xe=/[ _-]+/g,Oe=/[ ]+/g;function $e(n){return n.replace(/([A-Z]+)/g," $1").replace(xe," ").trim().toLowerCase().replace(Oe,"-")}const je=/[ _-]+/g,Be=/[ ]+/g;function Ce(n){return n.replace(/([A-Z]+)/g," $1").replace(je," ").trim().toLowerCase().replace(Be,"_")}const Se=/[ _-]+/g;function Me(n){return n.replace(/([A-Z]+)/g," $1").replace(Se," ").trim().toUpperCase()}const Fe=/[ _-]+/g;function Re(n){return n.replace(/([A-Z]+)/g," $1").replace(Fe," ").trim().toLowerCase()}function Te(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function Pe(n,t=1){return n[n.length-t]}function Ue(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function Ne(n,t=1){return n.slice(0,-1*t)}function Le(n,t=1){return n.substring(t)}function _e(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function De(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function Ze(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const ke=/%(?![\da-f]{2})/gi,qe=/&/g,Ve=//g,Je=/"/g;function We(n){return decodeURIComponent(n.replace(ke,(()=>"%25")))}function ze(n){return n.replace(qe,"&").replace(Ve,"<").replace(Ge,">").replace(Je,""")}function He(n){return ze(We(n))}const Ke=/\S+/g,Qe=/\w+/g;function Xe(n){return n.match(Ke)||[]}function Ye(n){return n.match(Qe)||[]}const no=/\w+/g;function to(n){return n[0].toUpperCase()}function ro(n){return to(n)+Le(n)}function eo(n){return to(n)+Le(n).toLowerCase()}function oo(n){return n.replace(no,(n=>ro(n)))}function uo(n){return n.replace(no,(n=>eo(n)))}function co(n){return br(n)?.name}function io(n){return!!c(n)&&"[object Arguments]"===n.toString()}function so(n){return!c(n)}const fo=Q("Map"),ao=X(fo),lo=/Array/,ho="Array";function go(n){if(n){const t=co(n);if(lo.test(t)&&t!==ho)return!0}return!1}function po(n,t){if(so(n)||kt(n))return!1;if(y(n)||go(n))return!0;const r=n.length;if(!so(r)||!gt(r)||r<0)return!1;if(t){const t=L(n);return!!t&&Cr(t,((n,t)=>t>=0&>(t)))}return!0}const mo=Q("BigInt"),wo=X(mo),yo=Q("Boolean"),bo=X(yo),vo=Q("ArrayBuffer"),Ao=X(vo);function Eo(n,t){return!(!n||!t)&&n instanceof t}const Io=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function xo(n){if(c(n)){const t=n?.constructor?.name;return Io.test(t)}return!1}const Oo=Q("Date"),$o=X(Oo);function jo(n){return dt(n)||y(n)?!o(n):W(n)?!be(n):!c(n)}function Bo(n){return!1===n}const Co=Q("Float32Array"),So=X(Co),Mo=Q("Float64Array"),Fo=X(Mo),{isInteger:Ro}=Number,To=Ro,Po=Q("Int16Array"),Uo=X(Po),No=Q("Int32Array"),Lo=X(No),_o=Q("Int8Array"),Do=X(_o);function Zo(n){return c(n)&&"function"==typeof n[Symbol.iterator]}function ko(n){return!!n&&n instanceof Promise}function qo(n){return!!n&&(ko(n)||Vt(n)||Dt(n))}function Vo(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Go(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Jo(n,t){return!so(n)&&!so(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:Wo}=Number,zo=Wo;function Ho(n,t){const r=br(n),e=br(t);return r===e&&r.name===e.name}function Ko(n){return!0===n}const Qo=Q("Uint16Array"),Xo=X(Qo),Yo=Q("Uint32Array"),nu=X(Yo),tu=Q("Uint8Array"),ru=X(tu),eu=Q("Uint8ClampedArray"),ou=X(eu),uu=Q("WeakMap"),cu=X(uu),iu=void 0!==globalThis.Deno,su=void 0!==globalThis.process&&process.versions&&process.versions.node;function fu(n,t=!0){return Boolean(n)&&t}function au(n,t=!0){return!1===Boolean(n)&&t}function lu(n,t,r,e){if(c(n)){if(kt(t))return r?fr(t,r,e):t(...e);if(W(t))return t[r]=n,t}}function hu(n,t){return Bo(tn(n,t))}const gu=JSON;function pu(n,t){if(n)return gu.parse(n,t)}const du=gu.stringify;function mu(n,t,r){const e=globalThis.options||r;let o;return kt(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${du(n)}\n\t\tExpected: ${du(t)}`,e)}async function wu(n,t,r){const e=await n;return!(kt(t)&&!1===await t(e,r))&&!hu(e,t)||mu(e,t,r)}function yu(n,t,r){if(qo(n)||qo(t))return wu(n,t,r);return!(kt(t)&&!1===t(n,r))&&!hu(n,t)||mu(n,t,r)}function bu(n,t,r){const e=Ir(n,(n=>kt(n)?n.bind(t):n));return r?Ft(r,e):e}function vu(n){if(n){if(nn(n))return Wn(n);if(y(n))return t(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const Au=globalThis.structuredClone;function Eu(n){return Au(n)}function Iu(n){if(W(n)){const t=L(n),r=t.length,e={};for(let o=0;ofu(n)))}async function xu(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);c(e)&&r.push(e)}return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);c(u)&&e(u)}return o}const u=kt(o.set);for await(const[r,e]of n){const i=await t(e,r,o,n);c(i)&&(u?o.set(r,i):o[r]=i)}return o}function Ou(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);c(u)&&o(u)}return e}const o=kt(e.set);for(const[r,u]of n){const i=t(u,r,e,n);c(i)&&(o?e.set(r,i):e[r]=i)}return e}const $u=Gt(f,l,ie,ce,Ou,xu);function ju(...n){return Vt(n[0])?async function(...t){return Cr(n,(async n=>Cr(t,(async t=>n(t)))))}:function(...t){return Cr(n,(n=>Cr(t,(t=>n(t)))))}}function Bu(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=kt(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Cu(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=kt(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Su=Gt(M,F,se,fe,Bu,Cu);function Mu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Fu=Mu(s),Ru=Mu(j);function Tu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const Pu=Tu(a),Uu=Tu(B);function Nu(n,t){const r=vr(n),e=r.push||r.add;if(e&&kt(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else kt(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function Lu(n,t){const r={};return s(n,((n,e)=>{r[t[e]]=n})),r}function _u(n,t,r){if(so(n)||so(t))return!1;if(dt(n))return dt(t)?n.includes(t,r):ge(t)?t.test(n):kt(t)?Boolean(t(n)):Cr(t,(t=>Boolean(_u(n,t))));if(y(n)){if(dt(t))return n.includes(t,r);if(ge(t))return Cr(n,(n=>n.test(t)));if(y(t))return Cr(t,(t=>Boolean(_u(n,t))))}return!1}const Du=It(/\./),Zu=(n,t,r)=>(t&&!c(n[t])&&(n[t]=r),n);class ku{list=I(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,Qt),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const qu=I(ku);function Vu(n,t){return qu.set(n,t)}function Gu(){rr(setTimeout(tr,0),(n=>{qu.remove(n)}))}function Ju(n,...t){return Jt(t,(t=>{Jt(t,((t,r)=>{if(n[r]&&(W(t)||y(t)||t.forEach))return Ju(n[r],t);n[r]=t}))})),n}class Wu{static models={};constructor(n,t){c(t)?(Ft(this,t),this.modelName=n,Wu.models.set(n,t)):Ft(this,n)}}function zu(n,t){return c(t)?I(Wu,[n,t]):q(n,Wu.models)}function Hu(n,t){return[n,t]}function Ku(n,t,r){const e=n.length,o=[];for(let u=0;uC(r,(r=>tn(n[r],t[r])));function nc(n,t,r){return t&&W(n)||gt(t)&&y(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function tc(n,t,r){return gt(r)&&y(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class rc{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Tt(n,(t=>{n[t]=new rc(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new rc(r),!0)})}}const ec=()=>[],oc=()=>({}),uc=()=>"";async function cc(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ac=I(fc);class lc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function hc(n){return new lc(n)}export{Wt as Chain,ku as Intervals,Wu as Model,rc as Store,or as Timers,fc as UniqID,lc as VirtualStorage,Zr as add,Bt as after,fr as apply,me as arrayToRegex,Lu as arraysToObject,Ct as ary,yu as assert,wu as assertAsync,Ft as assign,St as before,bu as bindAll,Pr as cacheNativeMethod,Jr as calcProgress,Ie as camelCase,zt as chain,n as chunk,Ue as chunkString,vu as clear,t as clearArray,Wn as clearBuffer,Gu as clearIntervals,ir as clearTimers,Eu as clone,r as cloneArray,vr as cloneType,Iu as compact,ue as compactKeys,$u as compactMap,f as compactMapArray,l as compactMapAsyncArray,ce as compactMapAsyncObject,ie as compactMapObject,Ku as concurrent,Qu as concurrentStatus,I as construct,K as constructorName,zn as countBy,Hn as countKey,Kn as countWithoutKey,Ht as curry,Kt as curryRight,ar as debounce,kr as deduct,Lr as defProp,x as difference,qr as divide,O as drop,$ as dropRight,Jt as each,s as eachArray,a as eachAsyncArray,Rt as eachAsyncObject,Tt as eachObject,j as eachRight,B as eachRightAsync,v as ensureArray,Jn as ensureBuffer,de as escapeRegex,pe as escapeRegexRegex,Cr as every,ju as everyArg,C as everyArray,S as everyAsyncArray,Or as everyAsyncObject,$r as everyObject,Yt as falsy,Su as filter,M as filterArray,F as filterAsyncArray,fe as filterAsyncObject,se as filterObject,Xn as findIndex,Qn as findIndexCache,Yn as findItem,R as first,T as flatten,A as flattenDeep,Fu as flow,Pu as flowAsync,Uu as flowAsyncRight,Ru as flowRight,w as forEach,Pt as forEachAsync,Nu as forMap,Lt as forOf,Zt as forOfAsync,Ou as forOfCompactMap,xu as forOfCompactMapAsync,jr as forOfEvery,Br as forOfEveryAsync,Bu as forOfFilter,Cu as forOfFilterAsync,Ar as forOfMap,Er as forOfMapAsync,Gt as generateLoop,q as get,oe as getEntries,At as getFileExtension,Et as getFilename,ct as getHighest,it as getLowest,Sn as getNumberInsertIndex,Nr as getPropDesc,Ur as getPropNames,br as getType,co as getTypeName,st as groupBy,_u as has,J as hasAnyKeys,Du as hasDot,G as hasKeys,o as hasLength,_r as hasProp,c as hasValue,ze as htmlEntities,lr as ifInvoke,Zu as ifNotAssign,lu as ifValue,hr as inAsync,gr as inSync,Vr as increment,ft as indexBy,P as initial,Ne as initialString,Te as insertInRange,U as intersection,Vu as interval,qu as intervals,ae as invert,at as invoke,lt as invokeAsync,io as isArguments,y as isArray,Ao as isArrayBuffer,vo as isArrayBufferCall,po as isArrayLike,Vt as isAsync,qt as isAsyncCall,wo as isBigInt,mo as isBigIntCall,bo as isBoolean,yo as isBooleanCall,nn as isBuffer,Y as isBufferCall,Eo as isChild,xo as isCloneable,z as isConstructor,H as isConstructorFactory,Q as isConstructorNameFactory,$o as isDate,Oo as isDateCall,iu as isDeno,jo as isEmpty,tn as isEqual,So as isF32,Co as isF32Call,Fo as isF64,Mo as isF64Call,Bo as isFalse,au as isFalsy,xt as isFileCSS,Ot as isFileHTML,$t as isFileJS,jt as isFileJSON,To as isFloat,kt as isFunction,Dt as isGenerator,_t as isGeneratorCall,Uo as isI16,Po as isI16Call,Lo as isI32,No as isI32Call,Do as isI8,_o as isI8Call,Zo as isIterable,qo as isKindAsync,ao as isMap,fo as isMapCall,rn as isMatchArray,le as isMatchObject,g as isNegative,su as isNodejs,b as isNotArray,pt as isNotNumber,mt as isNotString,u as isNull,gt as isNumber,ht as isNumberCall,On as isNumberEqual,Xr as isNumberInRange,Yr as isNumberNotInRange,Vo as isParent,W as isPlainObject,te as isPositive,Go as isPrimitive,ko as isPromise,ge as isRegex,he as isRegexCall,Jo as isRelated,zo as isSafeInt,Dr as isSame,Ho as isSameType,Nt as isSet,Ut as isSetCall,dt as isString,Ko as isTrue,fu as isTruthy,X as isTypeFactory,go as isTypedArray,Xo as isU16,Qo as isU16Call,nu as isU32,Yo as isU32Call,ru as isU8,ou as isU8C,eu as isU8CCall,tu as isU8Call,e as isUndefined,cu as isWeakMap,uu as isWeakMapCall,re as isZero,pu as jsonParse,$e as kebabCase,L as keys,on as largest,un as last,Re as lowerCase,Ir as map,cn as mapArray,sn as mapAsyncArray,wr as mapAsyncObject,yr as mapObject,fn as mapRightArray,an as mapWhile,Ju as merge,zu as model,Gr as multiply,pr as negate,so as noValue,tr as noop,hu as notEqual,dr as nthArg,Mt as objectAssign,ee as objectEntries,be as objectSize,we as omit,mr as once,Rn as onlyUnique,xr as over,Sr as overEvery,Hu as pair,gn as partition,ye as pick,yt as pluck,wt as pluckObject,Xu as promise,Yu as propertyMatch,zr as randomFloat,En as randomInt,m as range,d as rangeDown,p as rangeUp,We as rawURLDecode,Mr as reArg,It as regexTestFactory,Hr as remainder,mn as remove,wn as removeBy,_e as replaceList,yn as rest,Le as restString,i as returnValue,bn as right,Pe as rightString,jn as sample,He as sanitize,nc as setKey,tc as setValue,$n as shuffle,Cn as smallest,Ce as snakeCase,et as sortCollectionAlphabetically,vt as sortCollectionAlphabeticallyReverse,ut as sortCollectionAscending,ot as sortCollectionAscendingFilter,tt as sortCollectionDescending,nt as sortCollectionDescendingFilter,hn as sortNumberAscending,dn as sortNumberDescening,rt as sortObjectsAlphabetically,bt as sortObjectsAlphabeticallyReverse,Tn as sortUnique,du as stringify,ec as stubArray,nr as stubFalse,oc as stubObject,uc as stubString,Xt as stubTrue,ln as subtract,Kr as subtractAll,pn as subtractReverse,Qr as sumAll,Mn as take,Fn as takeRight,Fr as throttle,cr as timer,ur as timers,rr as times,cc as timesAsync,er as timesMap,ic as timesMapAsync,xn as toArray,k as toPath,sc as toggle,Xe as tokenize,De as truncate,Ze as truncateRight,Qt as truth,Gn as unZip,Ae as unZipObject,Un as union,ac as uniqID,Pn as unique,Nn as untilFalseArray,Ln as untilTrueArray,Me as upperCase,ro as upperFirst,oo as upperFirstAll,to as upperFirstLetter,eo as upperFirstOnly,uo as upperFirstOnlyAll,hc as virtualStorage,_n as whileCompactMap,Dn as whileEachArray,Zn as whileMapArray,kn as without,Ye as words,Rr as wrap,qn as xor,Vn as zip,ve as zipObject}; +function n(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function t(n){return n.length=0,n}function r(n){return n.slice()}function e(n){return void 0===n}function o(n){return Boolean(n.length)}function u(n){return null===n}function c(n){return!e(n)&&!u(n)}function i(n){return n}function s(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const f=t.call(e,n,u,r,i,s,o);c(f)&&r.push(f)})):s(n,((n,u,i,s)=>{const f=t(n,u,r,i,s,e,o);c(f)&&r.push(f)})),r}async function a(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const u=await t(n,e,r,o);c(u)&&r.push(u)})),r}const{sign:h}=Math;function g(n){return-1===h(n)}function p(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function m(n,t,r=1,e=[]){return g(r)?e:n{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function O(n,t=1,r=n.length){return n.splice(t,r)}const $=(n,t=1,r=n.length)=>O(n,0,r-t);function j(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function B(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function C(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function F(n,t,r=[],e){return await a(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function R(n,t){return t?n.slice(0,t):n[0]}function T(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(v(t))),[]);return r}function P(n){return n.slice(0,n.length-1)}function U(n,...t){return f(n,(n=>{if(C(t,(t=>t.includes(n))))return n}))}function N(n,t,r){if(!n)return;const e=n.length;if(c(r))for(let o=0;o(r=r[n],c(r)))),r}const G=Object.hasOwn;function J(n,...t){if(n)return C(t,(t=>{const r=q(t);if(1===r.length)return G(n,t);{const t=r.pop(),e=V(r,n);return!!e&&G(e,t)}}))}function W(n,...t){if(n)return Boolean(t.find((t=>{const r=q(t);if(1===r.length)return G(n,t);{const t=r.pop(),e=V(r,n);return!!e&&G(e,t)}})))}const z=n=>!!c(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function H(n,t){return n?.constructor===t||!1}function K(n){return t=>H(t,n)}function Q(n){return n?.constructor?.name}function X(n){return t=>Q(t)===n||!1}function Y(n){return function(t,...r){return r?n(t)&&C(r,n):n(t)}}const nn=X("Buffer"),tn=Y(nn),rn=(n,t)=>{if(n===t)return!0;if(tn(n))return n.equals(t);if(n.toString()===t.toString())if(z(n)){const r=_(n);if(J(t,r))return C(r,(r=>rn(n[r],t[r])))}else if(y(n)&&n.length===t.length)return C(n,((n,r)=>rn(n,t[r])));return!1};function en(n,t){return n.length===t.length&&C(n,((n,r)=>rn(t[r],n)))}const on=Math.max;function un(n){return on(...n)}function cn(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function sn(n,t,r=[],e,o){return c(e)?s(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):s(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function fn(n,t){const r=[];return await a(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function an(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function ln(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function dn(n,t){return t-n}function mn(n){return n.sort(dn)}function wn(n,t){let r=n.length;for(let e=0;er)return jn(n);if(1===t)return[n[In(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Fn(n,t=1){return n.slice(0,t)}function Rn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Tn(n,t,r){return r.indexOf(n)===t}function Pn(n,t,r){return n!==r[t-1]}function Un(n,t){return t?n.filter(Pn):n.filter(Tn)}function Nn(...n){return Un(A(n))}function Ln(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function Vn(...n){const t=I(Map),r=[];return 2===n.length?x(n[0],n[1]):(s(n,((n,r)=>{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Gn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Jn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Wn(n){return tn(n)&&n||c(n)&&Buffer.from(n)||Buffer.alloc(0)}function zn(n){return n.fill(0),n}function Hn(n,t){const r={};let e;return s(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function Kn(n,t){let r=0;return s(n,(n=>{n[t]&&r++})),r}function Qn(n,t){let r=0;return s(n,(n=>{n[t]||r++})),r}function Xn(n,t,r,e,o){if(n[o]===e)return!0}function Yn(n,t,r="id"){const e=n.findIndex(((n,e)=>Xn(n,0,0,t,r)));return-1!==e&&e}function nt(n,t,r="id"){const e=n.find(((n,e)=>Xn(n,0,0,t,r)));return-1!==e&&e}function tt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function rt(n,t="id",r){return n.sort(((n,e)=>tt(n,e,t,r)))}function et(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function ot(n,t="id",r){return n.sort(((n,e)=>et(n,e,t,r)))}function ut(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function ct(n,t="id",r){return n.sort(((n,e)=>ut(n,e,t,r)))}function it(n,t="id"){return ct(n,t)[0]}function st(n,t){return rt(n,t,!1)[0]}function ft(n,t){const r={};return s(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function at(n,t="id"){const r={};return s(n,(n=>{r[n[t]]=n})),r}function lt(n,t,r,e){return sn(n,e?(n,o)=>n[t].call(e,r):(n,e)=>n[t](r))}function ht(n,t,r,e){return fn(n,e?n=>n[t].call(e,r):async n=>n[t](r))}const gt=X("Number"),pt=Y(gt);function dt(n){return!pt(n)}const mt=K(String);function wt(n){return!mt(n)}function yt(n,t){if(n)return mt(t)?n[t]:sn(t,(t=>n[t]))}function bt(n,t){return sn(n,(n=>yt(n,t)))}function vt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function At(n,t="id",r){return n.sort(((n,e)=>vt(n,e,t,r)))}function Et(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function It(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function xt(n){return t=>!!c(t)&&n.test(t)}const Ot=xt(/\.css$/),$t=xt(/\.html$/),jt=xt(/\.js$/),Bt=xt(/\.json$/);function Ct(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function St(n,t){return(...r)=>n(...r.splice(0,t))}function Mt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Ft=Object.assign;function Rt(n,...t){if(c(n))return Ft(n,...t)}const Tt=async(n,t,r,e)=>{if(!n)return;const o=_(n);return c(r)?await a(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await a(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Pt(n,t,r,e){if(!n)return;const o=_(n);return c(r)?s(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):s(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function Ut(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!c(n)&&n instanceof Function,Vt=X("AsyncFunction"),Gt=Y(Vt);function Jt(n,t,r,e,o,u){return(i,s,f,a,l)=>{let h;const g=Gt(s);if(c(i)&&s)return h=y(i)?g?t:n:z(i)||qt(i)?g?e:r:o?g?u:o:Zt(i)?u:g?e:r,h(i,s,f,a,l)}}const Wt=Jt(s,a,Pt,Tt,_t,kt);class zt{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Wt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function Ht(n){return I(zt,[n])}function Kt(n,r=n.length){const e=[],o=(...u)=>{if(e.push(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}function Qt(n,r=n.length){const e=[],o=(...u)=>{if(e.unshift(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}const Xt=!0,Yt=()=>Xt,nr=!1,tr=()=>nr,rr=()=>{};function er(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,Xt),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const cr=I(ur);function ir(n,t){return cr.set(n,t)}function sr(){er(setTimeout(rr,0),(n=>{cr.remove(n)}))}const fr=Reflect.apply;function ar(n,t,r){if(qt(n))return fr(n,t,r)}function lr(n,t){function r(...n){r.id!==nr&&cr.remove(r.id),r.id=ir((()=>{r.callable(...n),r.id=nr}),t)}return r.id=nr,r.callable=n.bind(r),r.clear=()=>{r.id!==nr&&(cr.remove(r.id),r.id=nr)},r}function hr(n,...t){if(qt(n))return n(...t)}async function gr(n,t){const r=n.length;for(let e=0;eWt(n,(n=>{n(t)}));function dr(n){return(...t)=>!n(...t)}function mr(n=0){return(...t)=>t[n]}const wr=n=>{let t;return(...r)=>(c(t)||(t=n(...r)),t)};async function yr(n,t,r={}){if(n)return await Tt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function br(n,t,r={},e,o){if(n)return c(e)?Pt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Pt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function vr(n){return n?.constructor}function Ar(n,t=[]){const r=vr(n);return r===Function&&"function"===r.name?function(){}:I(r,t)}function Er(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=qt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Ir(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=qt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const xr=Jt(sn,fn,br,yr,Er,Ir);function Or(n){return(...t)=>xr(n,(n=>n(...t)))}async function $r(n,t){if(!n)return;return S(_(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function jr(n,t){if(!n)return;return C(_(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function Br(n,t=i){if(y(n)||Lt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Cr(n,t=i,r){if(Zt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(y(n)||Lt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Sr=Jt(C,S,jr,$r,Br,Cr);function Mr(n){return t=>Sr(n,(n=>n(t)))}function Fr(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Rr(n,t){function r(...n){r.id?r.shouldThrottle=Xt:(r.callable(...n),r.id=ir((()=>{r.shouldThrottle&&r.callable(...n),r.id=nr}),t))}return r.id=nr,r.callable=n.bind(r),r.clear=()=>{cr.remove(r.id),r.id=nr},r}function Tr(n,t){return(...r)=>t(n,...r)}const Pr=Function.prototype;function Ur(n){return Pr.call.bind(n)}const Nr=Object.getOwnPropertyNames,Lr=Object.getOwnPropertyDescriptor,_r=Object.defineProperty,Dr=Ur(Object.hasOwnProperty),Zr=Object.is;function kr(n,t){return n+t}function qr(n){return n-1}function Vr(n,t){return n/t}function Gr(n){return n+1}function Jr(n,t){return n*t}function Wr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:zr}=Math;function Hr(n,t=0){return zr()*(n-t)+t}function Kr(n,t){return n%t}function Qr(n){return n.reduce(((n,t)=>n-t),0)}function Xr(n){return n.reduce(((n,t)=>n+t),0)}function Yr(n,t,r){return n>t&&nr}const{sign:te}=Math;function re(n){return 1===te(n)}function ee(n){return 0===n}const oe=Object.entries;function ue(n){if(c(n))return oe(n)}function ce(n){const t=[];return Pt(n,((n,r)=>{c(n)&&t.push(r)})),t}async function ie(n,t=i,r={}){return await Tt(n,(async(n,e,o,u,i)=>{const s=await t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function se(n,t=i,r={}){return Pt(n,((n,e,o,u,i)=>{const s=t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function fe(n,t,r={}){return Pt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function ae(n,t,r={}){return await Tt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function le(n,t={}){if(n)return Pt(n,((n,r)=>{t[n]=r})),t}const he=(n,t)=>{if(n===t)return!0;const r=_(n),e=_(t);return r.length===e.length&&C(r,(r=>n[r]===t[r]))},ge=X("RegExp"),pe=Y(ge),de=/[()[\]{}*+?^$|#.,/\\\s-]/g;function me(n){return n.replace(de,"\\$&")}function we(n,t){return t?we(sn(n,me)):RegExp(n.join("|"))}function ye(n,t){if(n){if(y(t)){const r=we(t);return fe(n,((n,t)=>!r.test(t)))}if(pe(t))return fe(n,((n,r)=>!t.test(r)));if(mt(t))return fe(n,((n,r)=>r!==t));if(pt(t)){const r=t.toString();return fe(n,((n,t)=>t!==r))}return qt(t)?fe(n,((n,r)=>!t(n,r))):void 0}}const be=(n,t,r={})=>{if(n)return s(t,(t=>{r[t]=n[t]})),r};function ve(n){if(n)return _(n).length}const Ae=(n,t)=>{const r={};return s(n,((n,e)=>{r[n]=t[e]})),r},Ee=n=>{const t=[],r=[];return Pt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Ie=/[ _-]+/g;function xe(n){let t="";return n.replace(Ie," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const Oe=/[ _-]+/g,$e=/[ ]+/g;function je(n){return n.replace(/([A-Z]+)/g," $1").replace(Oe," ").trim().toLowerCase().replace($e,"-")}const Be=/[ _-]+/g,Ce=/[ ]+/g;function Se(n){return n.replace(/([A-Z]+)/g," $1").replace(Be," ").trim().toLowerCase().replace(Ce,"_")}const Me=/[ _-]+/g;function Fe(n){return n.replace(/([A-Z]+)/g," $1").replace(Me," ").trim().toUpperCase()}const Re=/[ _-]+/g;function Te(n){return n.replace(/([A-Z]+)/g," $1").replace(Re," ").trim().toLowerCase()}function Pe(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function Ue(n,t=1){return n[n.length-t]}function Ne(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function Le(n,t=1){return n.slice(0,-1*t)}function _e(n,t=1){return n.substring(t)}function De(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function Ze(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function ke(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const qe=/%(?![\da-f]{2})/gi,Ve=/&/g,Ge=//g,We=/"/g;function ze(n){return decodeURIComponent(n.replace(qe,(()=>"%25")))}function He(n){return n.replace(Ve,"&").replace(Ge,"<").replace(Je,">").replace(We,""")}function Ke(n){return He(ze(n))}const Qe=/\S+/g,Xe=/\w+/g;function Ye(n){return n.match(Qe)||[]}function no(n){return n.match(Xe)||[]}const to=/\w+/g;function ro(n){return n[0].toUpperCase()}function eo(n){return ro(n)+_e(n)}function oo(n){return ro(n)+_e(n).toLowerCase()}function uo(n){return n.replace(to,(n=>eo(n)))}function co(n){return n.replace(to,(n=>oo(n)))}function io(n){return vr(n)?.name}function so(n){return!!c(n)&&"[object Arguments]"===n.toString()}function fo(n){return!c(n)}const ao=X("Map"),lo=Y(ao),ho=/Array/,go="Array";function po(n){if(n){const t=io(n);if(ho.test(t)&&t!==go)return!0}return!1}function mo(n,t){if(fo(n)||qt(n))return!1;if(y(n)||po(n))return!0;const r=n.length;if(!fo(r)||!pt(r)||r<0)return!1;if(t){const t=_(n);return!!t&&Sr(t,((n,t)=>t>=0&&pt(t)))}return!0}const wo=X("BigInt"),yo=Y(wo),bo=X("Boolean"),vo=Y(bo),Ao=X("ArrayBuffer"),Eo=Y(Ao);function Io(n,t){return!(!n||!t)&&n instanceof t}const xo=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function Oo(n){if(c(n)){const t=n?.constructor?.name;return xo.test(t)}return!1}const $o=X("Date"),jo=Y($o);function Bo(n){return mt(n)||y(n)?!o(n):z(n)?!ve(n):!c(n)}function Co(n){return!1===n}const So=X("Float32Array"),Mo=Y(So),Fo=X("Float64Array"),Ro=Y(Fo),{isInteger:To}=Number,Po=To,Uo=X("Int16Array"),No=Y(Uo),Lo=X("Int32Array"),_o=Y(Lo),Do=X("Int8Array"),Zo=Y(Do);function ko(n){return c(n)&&"function"==typeof n[Symbol.iterator]}function qo(n){return!!n&&n instanceof Promise}function Vo(n){return!!n&&(qo(n)||Gt(n)||Zt(n))}function Go(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Jo(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Wo(n,t){return!fo(n)&&!fo(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:zo}=Number,Ho=zo;function Ko(n,t){const r=vr(n),e=vr(t);return r===e&&r.name===e.name}function Qo(n){return!0===n}const Xo=X("Uint16Array"),Yo=Y(Xo),nu=X("Uint32Array"),tu=Y(nu),ru=X("Uint8Array"),eu=Y(ru),ou=X("Uint8ClampedArray"),uu=Y(ou),cu=X("WeakMap"),iu=Y(cu),su=void 0!==globalThis.Deno,fu=void 0!==globalThis.process&&process.versions&&process.versions.node;function au(n,t=!0){return Boolean(n)&&t}function lu(n,t=!0){return!1===Boolean(n)&&t}function hu(n,t,r,e){if(c(n)){if(qt(t))return r?ar(t,r,e):t(...e);if(z(t))return t[r]=n,t}}function gu(n,t){return Co(rn(n,t))}const pu=JSON;function du(n,t){if(n)return pu.parse(n,t)}const mu=pu.stringify;function wu(n,t,r){const e=globalThis.options||r;let o;return qt(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${mu(n)}\n\t\tExpected: ${mu(t)}`,e)}async function yu(n,t,r){const e=await n;return!(qt(t)&&!1===await t(e,r))&&!gu(e,t)||wu(e,t,r)}function bu(n,t,r){if(Vo(n)||Vo(t))return yu(n,t,r);return!(qt(t)&&!1===t(n,r))&&!gu(n,t)||wu(n,t,r)}function vu(n,t,r){const e=xr(n,(n=>qt(n)?n.bind(t):n));return r?Rt(r,e):e}function Au(n){if(n){if(tn(n))return zn(n);if(y(n))return t(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const Eu=globalThis.structuredClone;function Iu(n){return Eu(n)}function xu(n){if(z(n)){const t=_(n),r=t.length,e={};for(let o=0;oau(n)))}async function Ou(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);c(e)&&r.push(e)}return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);c(u)&&e(u)}return o}const u=qt(o.set);for await(const[r,e]of n){const i=await t(e,r,o,n);c(i)&&(u?o.set(r,i):o[r]=i)}return o}function $u(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);c(u)&&o(u)}return e}const o=qt(e.set);for(const[r,u]of n){const i=t(u,r,e,n);c(i)&&(o?e.set(r,i):e[r]=i)}return e}const ju=Jt(f,l,se,ie,$u,Ou);function Bu(...n){return Gt(n[0])?async function(...t){return Sr(n,(async n=>Sr(t,(async t=>n(t)))))}:function(...t){return Sr(n,(n=>Sr(t,(t=>n(t)))))}}function Cu(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=qt(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Su(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=qt(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Mu=Jt(M,F,fe,ae,Cu,Su);function Fu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Ru=Fu(s),Tu=Fu(j);function Pu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const Uu=Pu(a),Nu=Pu(B);function Lu(n,t){const r=Ar(n),e=r.push||r.add;if(e&&qt(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else qt(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function _u(n,t){const r={};return s(n,((n,e)=>{r[t[e]]=n})),r}function Du(n,t,r){if(fo(n)||fo(t))return!1;if(mt(n))return mt(t)?n.includes(t,r):pe(t)?t.test(n):qt(t)?Boolean(t(n)):Sr(t,(t=>Boolean(Du(n,t))));if(y(n)){if(mt(t))return n.includes(t,r);if(pe(t))return Sr(n,(n=>n.test(t)));if(y(t))return Sr(t,(t=>Boolean(Du(n,t))))}return!1}const Zu=xt(/\./),ku=(n,t,r)=>(t&&!c(n[t])&&(n[t]=r),n);class qu{list=I(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,Xt),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const Vu=I(qu);function Gu(n,t){return Vu.set(n,t)}function Ju(){er(setTimeout(rr,0),(n=>{Vu.remove(n)}))}function Wu(n,...t){return Wt(t,(t=>{Wt(t,((t,r)=>{if(n[r]&&(z(t)||y(t)||t.forEach))return Wu(n[r],t);n[r]=t}))})),n}class zu{static models={};constructor(n,t){c(t)?(Rt(this,t),this.modelName=n,zu.models.set(n,t)):Rt(this,n)}}function Hu(n,t){return c(t)?I(zu,[n,t]):V(n,zu.models)}function Ku(n,t){return[n,t]}function Qu(n,t,r){const e=n.length,o=[];for(let u=0;uC(r,(r=>rn(n[r],t[r])));function tc(n,t,r){return t&&z(n)||pt(t)&&y(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function rc(n,t,r){return pt(r)&&y(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class ec{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Pt(n,(t=>{n[t]=new ec(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new ec(r),!0)})}}const oc=()=>[],uc=()=>({}),cc=()=>"";async function ic(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const lc=I(ac);class hc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function gc(n){return new hc(n)}export{zt as Chain,qu as Intervals,zu as Model,ec as Store,ur as Timers,ac as UniqID,hc as VirtualStorage,kr as add,Ct as after,ar as apply,we as arrayToRegex,_u as arraysToObject,St as ary,bu as assert,yu as assertAsync,Rt as assign,Mt as before,vu as bindAll,Ur as cacheNativeMethod,Wr as calcProgress,xe as camelCase,Ht as chain,n as chunk,Ne as chunkString,Au as clear,t as clearArray,zn as clearBuffer,Ju as clearIntervals,sr as clearTimers,Iu as clone,r as cloneArray,Ar as cloneType,xu as compact,ce as compactKeys,ju as compactMap,f as compactMapArray,l as compactMapAsyncArray,ie as compactMapAsyncObject,se as compactMapObject,Qu as concurrent,Xu as concurrentStatus,I as construct,Q as constructorName,Hn as countBy,Kn as countKey,Qn as countWithoutKey,Kt as curry,Qt as curryRight,lr as debounce,qr as deduct,_r as defProp,x as difference,Vr as divide,O as drop,$ as dropRight,Wt as each,s as eachArray,a as eachAsyncArray,Tt as eachAsyncObject,Pt as eachObject,j as eachRight,B as eachRightAsync,v as ensureArray,Wn as ensureBuffer,me as escapeRegex,de as escapeRegexRegex,Sr as every,Bu as everyArg,C as everyArray,S as everyAsyncArray,$r as everyAsyncObject,jr as everyObject,nr as falsy,Mu as filter,M as filterArray,F as filterAsyncArray,ae as filterAsyncObject,fe as filterObject,Yn as findIndex,Xn as findIndexCache,nt as findItem,R as first,T as flatten,A as flattenDeep,Ru as flow,Uu as flowAsync,Nu as flowAsyncRight,Tu as flowRight,w as forEach,Ut as forEachAsync,Lu as forMap,_t as forOf,kt as forOfAsync,$u as forOfCompactMap,Ou as forOfCompactMapAsync,Br as forOfEvery,Cr as forOfEveryAsync,Cu as forOfFilter,Su as forOfFilterAsync,Er as forOfMap,Ir as forOfMapAsync,Jt as generateLoop,V as get,ue as getEntries,Et as getFileExtension,It as getFilename,it as getHighest,st as getLowest,Mn as getNumberInsertIndex,Lr as getPropDesc,Nr as getPropNames,vr as getType,io as getTypeName,ft as groupBy,Du as has,W as hasAnyKeys,Zu as hasDot,J as hasKeys,o as hasLength,Dr as hasProp,c as hasValue,He as htmlEntities,hr as ifInvoke,ku as ifNotAssign,hu as ifValue,gr as inAsync,pr as inSync,Gr as increment,at as indexBy,P as initial,Le as initialString,Pe as insertInRange,U as intersection,Gu as interval,Vu as intervals,le as invert,N as invokeArray,lt as invokeCollection,ht as invokeCollectionAsync,so as isArguments,y as isArray,Eo as isArrayBuffer,Ao as isArrayBufferCall,mo as isArrayLike,Gt as isAsync,Vt as isAsyncCall,yo as isBigInt,wo as isBigIntCall,vo as isBoolean,bo as isBooleanCall,tn as isBuffer,nn as isBufferCall,Io as isChild,Oo as isCloneable,H as isConstructor,K as isConstructorFactory,X as isConstructorNameFactory,jo as isDate,$o as isDateCall,su as isDeno,Bo as isEmpty,rn as isEqual,Mo as isF32,So as isF32Call,Ro as isF64,Fo as isF64Call,Co as isFalse,lu as isFalsy,Ot as isFileCSS,$t as isFileHTML,jt as isFileJS,Bt as isFileJSON,Po as isFloat,qt as isFunction,Zt as isGenerator,Dt as isGeneratorCall,No as isI16,Uo as isI16Call,_o as isI32,Lo as isI32Call,Zo as isI8,Do as isI8Call,ko as isIterable,Vo as isKindAsync,lo as isMap,ao as isMapCall,en as isMatchArray,he as isMatchObject,g as isNegative,fu as isNodejs,b as isNotArray,dt as isNotNumber,wt as isNotString,u as isNull,pt as isNumber,gt as isNumberCall,$n as isNumberEqual,Yr as isNumberInRange,ne as isNumberNotInRange,Go as isParent,z as isPlainObject,re as isPositive,Jo as isPrimitive,qo as isPromise,pe as isRegex,ge as isRegexCall,Wo as isRelated,Ho as isSafeInt,Zr as isSame,Ko as isSameType,Lt as isSet,Nt as isSetCall,mt as isString,Qo as isTrue,au as isTruthy,Y as isTypeFactory,po as isTypedArray,Yo as isU16,Xo as isU16Call,tu as isU32,nu as isU32Call,eu as isU8,uu as isU8C,ou as isU8CCall,ru as isU8Call,e as isUndefined,iu as isWeakMap,cu as isWeakMapCall,ee as isZero,du as jsonParse,je as kebabCase,_ as keys,un as largest,cn as last,Te as lowerCase,xr as map,sn as mapArray,fn as mapAsyncArray,yr as mapAsyncObject,br as mapObject,an as mapRightArray,ln as mapWhile,Wu as merge,Hu as model,Jr as multiply,dr as negate,fo as noValue,rr as noop,gu as notEqual,mr as nthArg,Ft as objectAssign,oe as objectEntries,ve as objectSize,ye as omit,wr as once,Tn as onlyUnique,Or as over,Mr as overEvery,Ku as pair,pn as partition,be as pick,bt as pluck,yt as pluckObject,Yu as promise,nc as propertyMatch,Hr as randomFloat,In as randomInt,m as range,d as rangeDown,p as rangeUp,ze as rawURLDecode,Fr as reArg,xt as regexTestFactory,Kr as remainder,wn as remove,yn as removeBy,De as replaceList,bn as rest,_e as restString,i as returnValue,vn as right,Ue as rightString,Bn as sample,Ke as sanitize,tc as setKey,rc as setValue,jn as shuffle,Sn as smallest,Se as snakeCase,ot as sortCollectionAlphabetically,At as sortCollectionAlphabeticallyReverse,ct as sortCollectionAscending,ut as sortCollectionAscendingFilter,rt as sortCollectionDescending,tt as sortCollectionDescendingFilter,gn as sortNumberAscending,mn as sortNumberDescening,et as sortObjectsAlphabetically,vt as sortObjectsAlphabeticallyReverse,Pn as sortUnique,mu as stringify,oc as stubArray,tr as stubFalse,uc as stubObject,cc as stubString,Yt as stubTrue,hn as subtract,Qr as subtractAll,dn as subtractReverse,Xr as sumAll,Fn as take,Rn as takeRight,Rr as throttle,ir as timer,cr as timers,er as times,ic as timesAsync,or as timesMap,sc as timesMapAsync,On as toArray,q as toPath,fc as toggle,Ye as tokenize,Ze as truncate,ke as truncateRight,Xt as truth,Jn as unZip,Ee as unZipObject,Nn as union,lc as uniqID,Un as unique,Ln as untilFalseArray,_n as untilTrueArray,Fe as upperCase,eo as upperFirst,uo as upperFirstAll,ro as upperFirstLetter,oo as upperFirstOnly,co as upperFirstOnlyAll,gc as virtualStorage,Dn as whileCompactMap,Zn as whileEachArray,kn as whileMapArray,qn as without,no as words,Tr as wrap,Vn as xor,Gn as zip,Ae as zipObject}; //# sourceMappingURL=basic.js.map diff --git a/docs/basic.js b/docs/basic.js index 5c60b6b5..94a02001 100644 --- a/docs/basic.js +++ b/docs/basic.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function r(t){return void 0===t}function e(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!r(t)&&!o(t)}function c(t){return t}function u(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const a=n.call(e,t,c,r,u,s,o);i(a)&&r.push(a)})):u(t,((t,c,u,s)=>{const a=n(t,c,r,u,s,e,o);i(a)&&r.push(a)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const c=await n(t,e,r,o);i(c)&&r.push(c)})),r}const{sign:l}=Math;function h(t){return-1===l(t)}function p(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function y(t,n){return t.forEach(n),t}const d=Array.isArray;function m(t){return d(t)&&t||i(t)&&[t]||[]}function A(t){return t.flat(1/0)}const b=Reflect.construct;function w(t,n=[],r){const e=d(n)?n:[n];return r?b(t,e,r):b(t,e)}function v(...t){const n=w(Map),r=[];return u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function C(t,n=1,r=t.length){return t.splice(n,r)}function O(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function I(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function j(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function M(t,n,r=[],e){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const S=Object.keys;function R(t){if(t)return S(t)}const x=/\.|\[/,B=/]/g,N="";function T(t){return t.replace(B,N).split(x)}function U(t,n){if(!n)return!1;let r=n;return j(d(t)?t:T(t),(t=>(r=r[t],i(r)))),r}const P=Object.hasOwn;function k(t,...n){if(t)return j(n,(n=>{const r=T(n);if(1===r.length)return P(t,n);{const n=r.pop(),e=U(r,t);return!!e&&P(e,n)}}))}const $=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function D(t,n){return t?.constructor===n||!1}function L(t){return n=>D(n,t)}function q(t){return t?.constructor?.name}function V(t){return n=>q(n)===t||!1}function K(t){return function(n,...r){return r?t(n)&&j(r,t):t(n)}}const Z=V("Buffer"),_=K(Z),z=(t,n)=>{if(t===n)return!0;if(_(t))return t.equals(n);if(t.toString()===n.toString())if($(t)){const r=R(t);if(k(n,r))return j(r,(r=>z(t[r],n[r])))}else if(d(t)&&t.length===n.length)return j(t,((t,r)=>z(t,n[r])));return!1};const W=Math.max;function G(t,n,r=[],e,o){return i(e)?u(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):u(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function J(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function H(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function rt(t,n,r){if(i(t))return nt(t,n,r)}function et(t,n=t.length){if(t.length<=1)return rt(t);const r=rt(t);let e,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",r){return t.sort(((t,e)=>ft(t,e,n,r)))}function ht(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function pt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}const yt=V("Number"),dt=K(yt);const mt=L(String);function At(t,n){if(t)return mt(n)?t[n]:G(n,(n=>t[n]))}function bt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),Ot=wt(/\.js$/),It=wt(/\.json$/);const jt=Object.assign;function Ft(t,...n){if(i(t))return jt(t,...n)}const Et=async(t,n,r,e)=>{if(!t)return;const o=R(t);return i(r)?await a(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await a(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function Mt(t,n,r,e){if(!t)return;const o=R(t);return i(r)?u(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):u(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const St=V("Set"),Rt=K(St);function xt(t,n){if(Rt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Bt=V("GeneratorFunction"),Nt=K(Bt);async function Tt(t,n,r){if(Rt(t)){for(const r of t)await n(r,t);return t}if(Nt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const Ut=t=>!!i(t)&&t instanceof Function,Pt=V("AsyncFunction"),kt=K(Pt);function $t(t,n,r,e,o,c){return(u,s,a,f,l)=>{let h;const p=kt(s);if(i(u)&&s)return h=d(u)?p?n:t:$(u)||Ut(u)?p?e:r:o?p?c:o:Nt(u)?c:p?e:r,h(u,s,a,f,l)}}const Dt=$t(u,a,Mt,Et,xt,Tt);class Lt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Dt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,Vt=!1,Kt=()=>{};function Zt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const zt=w(_t);function Wt(t,n){return zt.set(t,n)}const Gt=Reflect.apply;function Jt(t,n,r){if(Ut(t))return Gt(t,n,r)}async function Ht(t,n,r={}){if(t)return await Et(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function Qt(t,n,r={},e,o){if(t)return i(e)?Mt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):Mt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function Xt(t){return t?.constructor}function Yt(t,n=[]){const r=Xt(t);return r===Function&&"function"===r.name?function(){}:w(r,n)}function tn(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Ut(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function nn(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const rn=$t(G,J,Qt,Ht,tn,nn);async function en(t,n){if(!t)return;return F(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function on(t,n){if(!t)return;return j(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function cn(t,n=c){if(d(t)||Rt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function un(t,n=c,r){if(Nt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(d(t)||Rt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const sn=$t(j,F,on,en,cn,un);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,pn=Object.defineProperty,gn=fn(Object.hasOwnProperty),yn=Object.is;const{random:dn}=Math;const{sign:mn}=Math;const An=Object.entries;async function bn(t,n=c,r={}){return await Et(t,(async(t,e,o,c,u)=>{const s=await n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function wn(t,n=c,r={}){return Mt(t,((t,e,o,c,u)=>{const s=n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function vn(t,n,r={}){return Mt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Cn(t,n,r={}){return await Et(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const On=V("RegExp"),In=K(On),jn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(jn,"\\$&")}function En(t,n){return n?En(G(t,Fn)):RegExp(t.join("|"))}function Mn(t){if(t)return R(t).length}const Sn=/[ _-]+/g;const Rn=/[ _-]+/g,xn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Tn=/[ _-]+/g;const Un=/[ _-]+/g;function Pn(t,n=1){return t.substring(n)}const kn=/%(?![\da-f]{2})/gi,$n=/&/g,Dn=//g,qn=/"/g;function Vn(t){return decodeURIComponent(t.replace(kn,(()=>"%25")))}function Kn(t){return t.replace($n,"&").replace(Dn,"<").replace(Ln,">").replace(qn,""")}const Zn=/\S+/g,_n=/\w+/g;const zn=/\w+/g;function Wn(t){return t[0].toUpperCase()}function Gn(t){return Wn(t)+Pn(t)}function Jn(t){return Wn(t)+Pn(t).toLowerCase()}function Hn(t){return Xt(t)?.name}function Qn(t){return!i(t)}const Xn=V("Map"),Yn=K(Xn),tr=/Array/,nr="Array";function rr(t){if(t){const n=Hn(t);if(tr.test(n)&&n!==nr)return!0}return!1}const er=V("BigInt"),or=K(er),ir=V("Boolean"),cr=K(ir),ur=V("ArrayBuffer"),sr=K(ur);const ar=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const fr=V("Date"),lr=K(fr);function hr(t){return!1===t}const pr=V("Float32Array"),gr=K(pr),yr=V("Float64Array"),dr=K(yr),{isInteger:mr}=Number,Ar=mr,br=V("Int16Array"),wr=K(br),vr=V("Int32Array"),Cr=K(vr),Or=V("Int8Array"),Ir=K(Or);function jr(t){return!!t&&t instanceof Promise}function Fr(t){return!!t&&(jr(t)||kt(t)||Nt(t))}const{isSafeInteger:Er}=Number,Mr=Er;const Sr=V("Uint16Array"),Rr=K(Sr),xr=V("Uint32Array"),Br=K(xr),Nr=V("Uint8Array"),Tr=K(Nr),Ur=V("Uint8ClampedArray"),Pr=K(Ur),kr=V("WeakMap"),$r=K(kr),Dr=void 0!==globalThis.Deno,Lr=void 0!==globalThis.process&&process.versions&&process.versions.node;function qr(t,n=!0){return Boolean(t)&&n}function Vr(t,n){return hr(z(t,n))}const Kr=JSON;const Zr=Kr.stringify;function _r(t,n,r){const e=globalThis.options||r;let o;return Ut(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Zr(t)}\n\t\tExpected: ${Zr(n)}`,e)}async function zr(t,n,r){const e=await t;return!(Ut(n)&&!1===await n(e,r))&&!Vr(e,n)||_r(e,n,r)}const Wr=globalThis.structuredClone;async function Gr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);i(e)&&r.push(e)}return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);i(c)&&e(c)}return o}const u=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i(c)&&(u?o.set(r,c):o[r]=c)}return o}function Jr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);i(c)&&o(c)}return e}const o=Ut(e.set);for(const[r,c]of t){const u=n(c,r,e,t);i(u)&&(o?e.set(r,u):e[r]=u)}return e}const Hr=$t(s,f,wn,bn,Jr,Gr);function Qr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Ut(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function Xr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Ut(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const Yr=$t(E,M,vn,Cn,Qr,Xr);function te(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const ne=te(u),re=te(O);function ee(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const oe=ee(a),ie=ee(I);const ce=wt(/\./);class ue{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const se=w(ue);class ae{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,ae.models.set(t,n)):Ft(this,t)}}class fe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Mt(t,(n=>{t[n]=new fe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new fe(r),!0)})}}class le{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const he=w(le);class pe{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Lt,t.Intervals=ue,t.Model=ae,t.Store=fe,t.Timers=_t,t.UniqID=le,t.VirtualStorage=pe,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Jt,t.arrayToRegex=En,t.arraysToObject=function(t,n){const r={};return u(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Fr(t)||Fr(n)?zr(t,n,r):!(Ut(n)&&!1===n(t,r))&&!Vr(t,n)||_r(t,n,r)},t.assertAsync=zr,t.assign=Ft,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=rn(t,(t=>Ut(t)?t.bind(n):t));return r?Ft(r,e):e},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Sn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Lt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(_(t))return st(t);if(d(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=st,t.clearIntervals=function(){Zt(setTimeout(Kt,0),(t=>{se.remove(t)}))},t.clearTimers=function(){Zt(setTimeout(Kt,0),(t=>{zt.remove(t)}))},t.clone=function(t){return Wr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.compact=function(t){if($(t)){const n=R(t),r=n.length,e={};for(let o=0;oqr(t)))},t.compactKeys=function(t){const n=[];return Mt(t,((t,r)=>{i(t)&&n.push(r)})),n},t.compactMap=Hr,t.compactMapArray=s,t.compactMapAsyncArray=f,t.compactMapAsyncObject=bn,t.compactMapObject=wn,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return u(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return u(t,(t=>{t[n]||r++})),r},t.curry=function(t,r=t.length){const e=[],o=(...i)=>{if(e.push(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.curryRight=function(t,r=t.length){const e=[],o=(...i)=>{if(e.unshift(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.debounce=function(t,n){function r(...t){r.id!==Vt&&zt.remove(r.id),r.id=Wt((()=>{r.callable(...t),r.id=Vt}),n)}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{r.id!==Vt&&(zt.remove(r.id),r.id=Vt)},r},t.deduct=function(t){return t-1},t.defProp=pn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,r=t.length)=>C(t,0,r-n),t.each=Dt,t.eachArray=u,t.eachAsyncArray=a,t.eachAsyncObject=Et,t.eachObject=Mt,t.eachRight=O,t.eachRightAsync=I,t.ensureArray=m,t.ensureBuffer=function(t){return _(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=jn,t.every=sn,t.everyArg=function(...t){return kt(t[0])?async function(...n){return sn(t,(async t=>sn(n,(async n=>t(n)))))}:function(...n){return sn(t,(t=>sn(n,(n=>t(n)))))}},t.everyArray=j,t.everyAsyncArray=F,t.everyAsyncObject=en,t.everyObject=on,t.falsy=Vt,t.filter=Yr,t.filterArray=E,t.filterAsyncArray=M,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=at,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(m(n))),[]);return r},t.flattenDeep=A,t.flow=ne,t.flowAsync=oe,t.flowAsyncRight=ie,t.flowRight=re,t.forEach=y,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else Ut(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=xt,t.forOfAsync=Tt,t.forOfCompactMap=Jr,t.forOfCompactMapAsync=Gr,t.forOfEvery=cn,t.forOfEveryAsync=un,t.forOfFilter=Qr,t.forOfFilterAsync=Xr,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=$t,t.get=U,t.getEntries=function(t){if(i(t))return An(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return gt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return j(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Hn,t.groupBy=function(t,n){const r={};return u(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(Qn(n)||Qn(r))return!1;if(mt(n))return mt(r)?n.includes(r,e):In(r)?r.test(n):Ut(r)?Boolean(r(n)):sn(r,(r=>Boolean(t(n,r))));if(d(n)){if(mt(r))return n.includes(r,e);if(In(r))return sn(n,(t=>t.test(r)));if(d(r))return sn(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=T(n);if(1===r.length)return P(t,n);{const n=r.pop(),e=U(r,t);return!!e&&P(e,n)}})))},t.hasDot=ce,t.hasKeys=k,t.hasLength=e,t.hasProp=gn,t.hasValue=i,t.htmlEntities=Kn,t.ifInvoke=function(t,...n){if(Ut(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!i(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(i(t)){if(Ut(n))return r?Jt(n,r,e):n(...e);if($(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eDt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return u(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return s(t,(t=>{if(j(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return se.set(t,n)},t.intervals=se,t.invert=function(t,n={}){if(t)return Mt(t,((t,r)=>{n[t]=r})),n},t.invoke=function(t,n,r){return G(t,((t,e)=>t[n](r,e)))},t.invokeAsync=function(t,n,r){return J(t,(async(t,e)=>t[n](r,e)))},t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=d,t.isArrayBuffer=sr,t.isArrayBufferCall=ur,t.isArrayLike=function(t,n){if(Qn(t)||Ut(t))return!1;if(d(t)||rr(t))return!0;const r=t.length;if(!Qn(r)||!dt(r)||r<0)return!1;if(n){const n=R(t);return!!n&&sn(n,((t,n)=>n>=0&&dt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=Pt,t.isBigInt=or,t.isBigIntCall=er,t.isBoolean=cr,t.isBooleanCall=ir,t.isBuffer=_,t.isBufferCall=Z,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return ar.test(n)}return!1},t.isConstructor=D,t.isConstructorFactory=L,t.isConstructorNameFactory=V,t.isDate=lr,t.isDateCall=fr,t.isDeno=Dr,t.isEmpty=function(t){return mt(t)||d(t)?!e(t):$(t)?!Mn(t):!i(t)},t.isEqual=z,t.isF32=gr,t.isF32Call=pr,t.isF64=dr,t.isF64Call=yr,t.isFalse=hr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=Ot,t.isFileJSON=It,t.isFloat=Ar,t.isFunction=Ut,t.isGenerator=Nt,t.isGeneratorCall=Bt,t.isI16=wr,t.isI16Call=br,t.isI32=Cr,t.isI32Call=vr,t.isI8=Ir,t.isI8Call=Or,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Fr,t.isMap=Yn,t.isMapCall=Xn,t.isMatchArray=function(t,n){return t.length===n.length&&j(t,((t,r)=>z(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=R(t),e=R(n);return r.length===e.length&&j(r,(r=>t[r]===n[r]))},t.isNegative=h,t.isNodejs=Lr,t.isNotArray=function(t){return!d(t)},t.isNotNumber=function(t){return!dt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=dt,t.isNumberCall=yt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=$,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=jr,t.isRegex=In,t.isRegexCall=On,t.isRelated=function(t,n){return!Qn(t)&&!Qn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=Mr,t.isSame=yn,t.isSameType=function(t,n){const r=Xt(t),e=Xt(n);return r===e&&r.name===e.name},t.isSet=Rt,t.isSetCall=St,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=qr,t.isTypeFactory=K,t.isTypedArray=rr,t.isU16=Rr,t.isU16Call=Sr,t.isU32=Br,t.isU32Call=xr,t.isU8=Tr,t.isU8C=Pr,t.isU8CCall=Ur,t.isU8Call=Nr,t.isUndefined=r,t.isWeakMap=$r,t.isWeakMapCall=kr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return Kr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Rn," ").trim().toLowerCase().replace(xn,"-")},t.keys=R,t.largest=function(t){return W(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Un," ").trim().toLowerCase()},t.map=rn,t.mapArray=G,t.mapAsyncArray=J,t.mapAsyncObject=Ht,t.mapObject=Qt,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{Dt(r,((r,e)=>{if(n[e]&&($(r)||d(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return i(n)?w(ae,[t,n]):U(t,ae.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Qn,t.noop=Kt,t.notEqual=Vr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=jt,t.objectEntries=An,t.objectSize=Mn,t.omit=function(t,n){if(t){if(d(n)){const r=En(n);return vn(t,((t,n)=>!r.test(n)))}if(In(n))return vn(t,((t,r)=>!n.test(r)));if(mt(n))return vn(t,((t,r)=>r!==n));if(dt(n)){const r=n.toString();return vn(t,((t,n)=>n!==r))}return Ut(n)?vn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(i(n)||(n=t(...r)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>rn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>sn(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[s(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return u(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return G(t,(t=>At(t,n)))},t.pluckObject=At,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=R(t))=>j(r,(r=>z(t[r],n[r]))),t.randomFloat=function(t,n=0){return dn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,r=1,e=[]){return h(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return et(t);if(1===n)return[t[tt(r-1,0)]];const e=[],o={};let i,c=0;for(;cht(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>bt(t,e,n,r)))},t.sortCollectionAscending=gt,t.sortCollectionAscendingFilter=pt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(H)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=bt,t.sortUnique=ct,t.stringify=Zr,t.stubArray=()=>[],t.stubFalse=()=>Vt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=H,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=qt:(r.callable(...t),r.id=Wt((()=>{r.shouldThrottle&&r.callable(...t),r.id=Vt}),n))}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{zt.remove(r.id),r.id=Vt},r},t.timer=Wt,t.timers=zt,t.times=Zt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return Mt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ut(A(t))},t.uniqID=he,t.unique=ut,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eGn(t)))},t.upperFirstLetter=Wn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(zn,(t=>Jn(t)))},t.virtualStorage=function(t){return new pe(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(_n)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=w(Map),r=[];return 2===t.length?v(t[0],t[1]):(u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return u(t,((t,e)=>{r[t]=n[e]})),r}})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function r(t){return void 0===t}function e(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!r(t)&&!o(t)}function c(t){return t}function u(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const a=n.call(e,t,c,r,u,s,o);i(a)&&r.push(a)})):u(t,((t,c,u,s)=>{const a=n(t,c,r,u,s,e,o);i(a)&&r.push(a)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const c=await n(t,e,r,o);i(c)&&r.push(c)})),r}const{sign:l}=Math;function h(t){return-1===l(t)}function p(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function y(t,n){return t.forEach(n),t}const d=Array.isArray;function m(t){return d(t)&&t||i(t)&&[t]||[]}function A(t){return t.flat(1/0)}const b=Reflect.construct;function w(t,n=[],r){const e=d(n)?n:[n];return r?b(t,e,r):b(t,e)}function v(...t){const n=w(Map),r=[];return u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function C(t,n=1,r=t.length){return t.splice(n,r)}function O(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function I(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function j(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function M(t,n,r=[],e){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const S=Object.keys;function R(t){if(t)return S(t)}const x=/\.|\[/,B=/]/g,N="";function T(t){return t.replace(B,N).split(x)}function U(t,n){if(!n)return!1;let r=n;return j(d(t)?t:T(t),(t=>(r=r[t],i(r)))),r}const k=Object.hasOwn;function P(t,...n){if(t)return j(n,(n=>{const r=T(n);if(1===r.length)return k(t,n);{const n=r.pop(),e=U(r,t);return!!e&&k(e,n)}}))}const $=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function D(t,n){return t?.constructor===n||!1}function L(t){return n=>D(n,t)}function q(t){return t?.constructor?.name}function V(t){return n=>q(n)===t||!1}function K(t){return function(n,...r){return r?t(n)&&j(r,t):t(n)}}const Z=V("Buffer"),_=K(Z),z=(t,n)=>{if(t===n)return!0;if(_(t))return t.equals(n);if(t.toString()===n.toString())if($(t)){const r=R(t);if(P(n,r))return j(r,(r=>z(t[r],n[r])))}else if(d(t)&&t.length===n.length)return j(t,((t,r)=>z(t,n[r])));return!1};const W=Math.max;function G(t,n,r=[],e,o){return i(e)?u(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):u(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function J(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function H(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function rt(t,n,r){if(i(t))return nt(t,n,r)}function et(t,n=t.length){if(t.length<=1)return rt(t);const r=rt(t);let e,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",r){return t.sort(((t,e)=>ft(t,e,n,r)))}function ht(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function pt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}const yt=V("Number"),dt=K(yt);const mt=L(String);function At(t,n){if(t)return mt(n)?t[n]:G(n,(n=>t[n]))}function bt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),Ot=wt(/\.js$/),It=wt(/\.json$/);const jt=Object.assign;function Ft(t,...n){if(i(t))return jt(t,...n)}const Et=async(t,n,r,e)=>{if(!t)return;const o=R(t);return i(r)?await a(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await a(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function Mt(t,n,r,e){if(!t)return;const o=R(t);return i(r)?u(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):u(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const St=V("Set"),Rt=K(St);function xt(t,n){if(Rt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Bt=V("GeneratorFunction"),Nt=K(Bt);async function Tt(t,n,r){if(Rt(t)){for(const r of t)await n(r,t);return t}if(Nt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const Ut=t=>!!i(t)&&t instanceof Function,kt=V("AsyncFunction"),Pt=K(kt);function $t(t,n,r,e,o,c){return(u,s,a,f,l)=>{let h;const p=Pt(s);if(i(u)&&s)return h=d(u)?p?n:t:$(u)||Ut(u)?p?e:r:o?p?c:o:Nt(u)?c:p?e:r,h(u,s,a,f,l)}}const Dt=$t(u,a,Mt,Et,xt,Tt);class Lt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Dt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,Vt=!1,Kt=()=>{};function Zt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const zt=w(_t);function Wt(t,n){return zt.set(t,n)}const Gt=Reflect.apply;function Jt(t,n,r){if(Ut(t))return Gt(t,n,r)}async function Ht(t,n,r={}){if(t)return await Et(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function Qt(t,n,r={},e,o){if(t)return i(e)?Mt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):Mt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function Xt(t){return t?.constructor}function Yt(t,n=[]){const r=Xt(t);return r===Function&&"function"===r.name?function(){}:w(r,n)}function tn(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Ut(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function nn(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const rn=$t(G,J,Qt,Ht,tn,nn);async function en(t,n){if(!t)return;return F(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function on(t,n){if(!t)return;return j(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function cn(t,n=c){if(d(t)||Rt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function un(t,n=c,r){if(Nt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(d(t)||Rt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const sn=$t(j,F,on,en,cn,un);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,pn=Object.defineProperty,gn=fn(Object.hasOwnProperty),yn=Object.is;const{random:dn}=Math;const{sign:mn}=Math;const An=Object.entries;async function bn(t,n=c,r={}){return await Et(t,(async(t,e,o,c,u)=>{const s=await n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function wn(t,n=c,r={}){return Mt(t,((t,e,o,c,u)=>{const s=n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function vn(t,n,r={}){return Mt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Cn(t,n,r={}){return await Et(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const On=V("RegExp"),In=K(On),jn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(jn,"\\$&")}function En(t,n){return n?En(G(t,Fn)):RegExp(t.join("|"))}function Mn(t){if(t)return R(t).length}const Sn=/[ _-]+/g;const Rn=/[ _-]+/g,xn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Tn=/[ _-]+/g;const Un=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Pn=/%(?![\da-f]{2})/gi,$n=/&/g,Dn=//g,qn=/"/g;function Vn(t){return decodeURIComponent(t.replace(Pn,(()=>"%25")))}function Kn(t){return t.replace($n,"&").replace(Dn,"<").replace(Ln,">").replace(qn,""")}const Zn=/\S+/g,_n=/\w+/g;const zn=/\w+/g;function Wn(t){return t[0].toUpperCase()}function Gn(t){return Wn(t)+kn(t)}function Jn(t){return Wn(t)+kn(t).toLowerCase()}function Hn(t){return Xt(t)?.name}function Qn(t){return!i(t)}const Xn=V("Map"),Yn=K(Xn),tr=/Array/,nr="Array";function rr(t){if(t){const n=Hn(t);if(tr.test(n)&&n!==nr)return!0}return!1}const er=V("BigInt"),or=K(er),ir=V("Boolean"),cr=K(ir),ur=V("ArrayBuffer"),sr=K(ur);const ar=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const fr=V("Date"),lr=K(fr);function hr(t){return!1===t}const pr=V("Float32Array"),gr=K(pr),yr=V("Float64Array"),dr=K(yr),{isInteger:mr}=Number,Ar=mr,br=V("Int16Array"),wr=K(br),vr=V("Int32Array"),Cr=K(vr),Or=V("Int8Array"),Ir=K(Or);function jr(t){return!!t&&t instanceof Promise}function Fr(t){return!!t&&(jr(t)||Pt(t)||Nt(t))}const{isSafeInteger:Er}=Number,Mr=Er;const Sr=V("Uint16Array"),Rr=K(Sr),xr=V("Uint32Array"),Br=K(xr),Nr=V("Uint8Array"),Tr=K(Nr),Ur=V("Uint8ClampedArray"),kr=K(Ur),Pr=V("WeakMap"),$r=K(Pr),Dr=void 0!==globalThis.Deno,Lr=void 0!==globalThis.process&&process.versions&&process.versions.node;function qr(t,n=!0){return Boolean(t)&&n}function Vr(t,n){return hr(z(t,n))}const Kr=JSON;const Zr=Kr.stringify;function _r(t,n,r){const e=globalThis.options||r;let o;return Ut(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Zr(t)}\n\t\tExpected: ${Zr(n)}`,e)}async function zr(t,n,r){const e=await t;return!(Ut(n)&&!1===await n(e,r))&&!Vr(e,n)||_r(e,n,r)}const Wr=globalThis.structuredClone;async function Gr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);i(e)&&r.push(e)}return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);i(c)&&e(c)}return o}const u=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i(c)&&(u?o.set(r,c):o[r]=c)}return o}function Jr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);i(c)&&o(c)}return e}const o=Ut(e.set);for(const[r,c]of t){const u=n(c,r,e,t);i(u)&&(o?e.set(r,u):e[r]=u)}return e}const Hr=$t(s,f,wn,bn,Jr,Gr);function Qr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Ut(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function Xr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Ut(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const Yr=$t(E,M,vn,Cn,Qr,Xr);function te(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const ne=te(u),re=te(O);function ee(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const oe=ee(a),ie=ee(I);const ce=wt(/\./);class ue{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const se=w(ue);class ae{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,ae.models.set(t,n)):Ft(this,t)}}class fe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Mt(t,(n=>{t[n]=new fe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new fe(r),!0)})}}class le{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const he=w(le);class pe{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Lt,t.Intervals=ue,t.Model=ae,t.Store=fe,t.Timers=_t,t.UniqID=le,t.VirtualStorage=pe,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Jt,t.arrayToRegex=En,t.arraysToObject=function(t,n){const r={};return u(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Fr(t)||Fr(n)?zr(t,n,r):!(Ut(n)&&!1===n(t,r))&&!Vr(t,n)||_r(t,n,r)},t.assertAsync=zr,t.assign=Ft,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=rn(t,(t=>Ut(t)?t.bind(n):t));return r?Ft(r,e):e},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Sn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Lt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(_(t))return st(t);if(d(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=st,t.clearIntervals=function(){Zt(setTimeout(Kt,0),(t=>{se.remove(t)}))},t.clearTimers=function(){Zt(setTimeout(Kt,0),(t=>{zt.remove(t)}))},t.clone=function(t){return Wr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.compact=function(t){if($(t)){const n=R(t),r=n.length,e={};for(let o=0;oqr(t)))},t.compactKeys=function(t){const n=[];return Mt(t,((t,r)=>{i(t)&&n.push(r)})),n},t.compactMap=Hr,t.compactMapArray=s,t.compactMapAsyncArray=f,t.compactMapAsyncObject=bn,t.compactMapObject=wn,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return u(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return u(t,(t=>{t[n]||r++})),r},t.curry=function(t,r=t.length){const e=[],o=(...i)=>{if(e.push(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.curryRight=function(t,r=t.length){const e=[],o=(...i)=>{if(e.unshift(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.debounce=function(t,n){function r(...t){r.id!==Vt&&zt.remove(r.id),r.id=Wt((()=>{r.callable(...t),r.id=Vt}),n)}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{r.id!==Vt&&(zt.remove(r.id),r.id=Vt)},r},t.deduct=function(t){return t-1},t.defProp=pn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,r=t.length)=>C(t,0,r-n),t.each=Dt,t.eachArray=u,t.eachAsyncArray=a,t.eachAsyncObject=Et,t.eachObject=Mt,t.eachRight=O,t.eachRightAsync=I,t.ensureArray=m,t.ensureBuffer=function(t){return _(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=jn,t.every=sn,t.everyArg=function(...t){return Pt(t[0])?async function(...n){return sn(t,(async t=>sn(n,(async n=>t(n)))))}:function(...n){return sn(t,(t=>sn(n,(n=>t(n)))))}},t.everyArray=j,t.everyAsyncArray=F,t.everyAsyncObject=en,t.everyObject=on,t.falsy=Vt,t.filter=Yr,t.filterArray=E,t.filterAsyncArray=M,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=at,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(m(n))),[]);return r},t.flattenDeep=A,t.flow=ne,t.flowAsync=oe,t.flowAsyncRight=ie,t.flowRight=re,t.forEach=y,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else Ut(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=xt,t.forOfAsync=Tt,t.forOfCompactMap=Jr,t.forOfCompactMapAsync=Gr,t.forOfEvery=cn,t.forOfEveryAsync=un,t.forOfFilter=Qr,t.forOfFilterAsync=Xr,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=$t,t.get=U,t.getEntries=function(t){if(i(t))return An(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return gt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return j(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Hn,t.groupBy=function(t,n){const r={};return u(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(Qn(n)||Qn(r))return!1;if(mt(n))return mt(r)?n.includes(r,e):In(r)?r.test(n):Ut(r)?Boolean(r(n)):sn(r,(r=>Boolean(t(n,r))));if(d(n)){if(mt(r))return n.includes(r,e);if(In(r))return sn(n,(t=>t.test(r)));if(d(r))return sn(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=T(n);if(1===r.length)return k(t,n);{const n=r.pop(),e=U(r,t);return!!e&&k(e,n)}})))},t.hasDot=ce,t.hasKeys=P,t.hasLength=e,t.hasProp=gn,t.hasValue=i,t.htmlEntities=Kn,t.ifInvoke=function(t,...n){if(Ut(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!i(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(i(t)){if(Ut(n))return r?Jt(n,r,e):n(...e);if($(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eDt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return u(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return s(t,(t=>{if(j(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return se.set(t,n)},t.intervals=se,t.invert=function(t,n={}){if(t)return Mt(t,((t,r)=>{n[t]=r})),n},t.invokeArray=function(t,n,r){if(!t)return;const e=t.length;if(i(r))for(let o=0;ot[n].call(e,r):(t,e)=>t[n](r))},t.invokeCollectionAsync=function(t,n,r,e){return J(t,e?t=>t[n].call(e,r):async t=>t[n](r))},t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=d,t.isArrayBuffer=sr,t.isArrayBufferCall=ur,t.isArrayLike=function(t,n){if(Qn(t)||Ut(t))return!1;if(d(t)||rr(t))return!0;const r=t.length;if(!Qn(r)||!dt(r)||r<0)return!1;if(n){const n=R(t);return!!n&&sn(n,((t,n)=>n>=0&&dt(n)))}return!0},t.isAsync=Pt,t.isAsyncCall=kt,t.isBigInt=or,t.isBigIntCall=er,t.isBoolean=cr,t.isBooleanCall=ir,t.isBuffer=_,t.isBufferCall=Z,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return ar.test(n)}return!1},t.isConstructor=D,t.isConstructorFactory=L,t.isConstructorNameFactory=V,t.isDate=lr,t.isDateCall=fr,t.isDeno=Dr,t.isEmpty=function(t){return mt(t)||d(t)?!e(t):$(t)?!Mn(t):!i(t)},t.isEqual=z,t.isF32=gr,t.isF32Call=pr,t.isF64=dr,t.isF64Call=yr,t.isFalse=hr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=Ot,t.isFileJSON=It,t.isFloat=Ar,t.isFunction=Ut,t.isGenerator=Nt,t.isGeneratorCall=Bt,t.isI16=wr,t.isI16Call=br,t.isI32=Cr,t.isI32Call=vr,t.isI8=Ir,t.isI8Call=Or,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Fr,t.isMap=Yn,t.isMapCall=Xn,t.isMatchArray=function(t,n){return t.length===n.length&&j(t,((t,r)=>z(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=R(t),e=R(n);return r.length===e.length&&j(r,(r=>t[r]===n[r]))},t.isNegative=h,t.isNodejs=Lr,t.isNotArray=function(t){return!d(t)},t.isNotNumber=function(t){return!dt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=dt,t.isNumberCall=yt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=$,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=jr,t.isRegex=In,t.isRegexCall=On,t.isRelated=function(t,n){return!Qn(t)&&!Qn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=Mr,t.isSame=yn,t.isSameType=function(t,n){const r=Xt(t),e=Xt(n);return r===e&&r.name===e.name},t.isSet=Rt,t.isSetCall=St,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=qr,t.isTypeFactory=K,t.isTypedArray=rr,t.isU16=Rr,t.isU16Call=Sr,t.isU32=Br,t.isU32Call=xr,t.isU8=Tr,t.isU8C=kr,t.isU8CCall=Ur,t.isU8Call=Nr,t.isUndefined=r,t.isWeakMap=$r,t.isWeakMapCall=Pr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return Kr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Rn," ").trim().toLowerCase().replace(xn,"-")},t.keys=R,t.largest=function(t){return W(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Un," ").trim().toLowerCase()},t.map=rn,t.mapArray=G,t.mapAsyncArray=J,t.mapAsyncObject=Ht,t.mapObject=Qt,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{Dt(r,((r,e)=>{if(n[e]&&($(r)||d(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return i(n)?w(ae,[t,n]):U(t,ae.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Qn,t.noop=Kt,t.notEqual=Vr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=jt,t.objectEntries=An,t.objectSize=Mn,t.omit=function(t,n){if(t){if(d(n)){const r=En(n);return vn(t,((t,n)=>!r.test(n)))}if(In(n))return vn(t,((t,r)=>!n.test(r)));if(mt(n))return vn(t,((t,r)=>r!==n));if(dt(n)){const r=n.toString();return vn(t,((t,n)=>n!==r))}return Ut(n)?vn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(i(n)||(n=t(...r)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>rn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>sn(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[s(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return u(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return G(t,(t=>At(t,n)))},t.pluckObject=At,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=R(t))=>j(r,(r=>z(t[r],n[r]))),t.randomFloat=function(t,n=0){return dn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,r=1,e=[]){return h(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return et(t);if(1===n)return[t[tt(r-1,0)]];const e=[],o={};let i,c=0;for(;cht(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>bt(t,e,n,r)))},t.sortCollectionAscending=gt,t.sortCollectionAscendingFilter=pt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(H)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=bt,t.sortUnique=ct,t.stringify=Zr,t.stubArray=()=>[],t.stubFalse=()=>Vt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=H,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=qt:(r.callable(...t),r.id=Wt((()=>{r.shouldThrottle&&r.callable(...t),r.id=Vt}),n))}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{zt.remove(r.id),r.id=Vt},r},t.timer=Wt,t.timers=zt,t.times=Zt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return Mt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ut(A(t))},t.uniqID=he,t.unique=ut,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eGn(t)))},t.upperFirstLetter=Wn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(zn,(t=>Jn(t)))},t.virtualStorage=function(t){return new pe(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(_n)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=w(Map),r=[];return 2===t.length?v(t[0],t[1]):(u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return u(t,((t,e)=>{r[t]=n[e]})),r}})); //# sourceMappingURL=basic.js.map diff --git a/docs/browser.bundle.es.js b/docs/browser.bundle.es.js index a85b05db..9d3549f5 100644 --- a/docs/browser.bundle.es.js +++ b/docs/browser.bundle.es.js @@ -790,6 +790,43 @@ function intersection(array, ...arrays) { }); } +/** + * Invoke each function in the given array. + * + * @function invokeArray + * @category array + * @type {Function} + * @param {Array} source - Array that will be looped through. + * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg. + * @param {*} thisCall - Iteratee called with thisCall as this. + * @param {*} additionalArg - An object to be given each time to the iteratee. + * @returns {Array} - The originally given array. + * + * @example + * import { invokeArray, assert } from '@universalweb/acid'; + * function test(arg){ + * return [this, arg]; + * } + * const results = invokeArray([test], 1, test); + * assert(results, [test, 1]); + */ +function invokeArray(source, arg, thisCall) { + if (!source) { + return; + } + const arrayLength = source.length; + if (hasValue(thisCall)) { + for (let index = 0; index < arrayLength; index++) { + source[index].call(thisCall, arg); + } + } else { + for (let index = 0; index < arrayLength; index++) { + source[index](arg); + } + } + return source; +} + /** * Get object's keys. * @@ -2307,7 +2344,7 @@ function indexBy(collection, propertyName = 'id') { /** * Invokes a function on the provided property name in each object in the collection. * - * @function invoke + * @function invokeCollection * @category collection * @type {Function} * @param {Array} collection - Collection from which method will be taken. @@ -2316,19 +2353,27 @@ function indexBy(collection, propertyName = 'id') { * @returns {Array} - Returns the results of the invoked method. * * @example - * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] + * import { invokeCollection, assert } from '@universalweb/acid'; + * const results = invokeCollection([{ + * test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); */ -function invoke(collection, property, value) { +function invokeCollection(collection, property, value, thisBind) { + if (thisBind) { + return mapArray(collection, (item, index) => { + return item[property].call(thisBind, value); + }); + } return mapArray(collection, (item, index) => { - return item[property](value, index); + return item[property](value); }); } /** * Asynchronously awaits & invokes a function on the provided property name in each object in the collection. * - * @function invokeAsync + * @function invokeCollectionAsync * @category collection * @type {Function} * @async @@ -2338,18 +2383,20 @@ function invoke(collection, property, value) { * @returns {Array} - Returns the results of the invoked method. * * @test - * (async () => { - * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]); - * }); - * - * @example - * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] - */ -function invokeAsync(collection, property, value) { - return mapAsyncArray(collection, async (item, index) => { - return item[property](value, index); + * import { invokeCollectionAsync, assert } from '@universalweb/acid'; + * const results = await invokeCollectionAsync([{ + * async test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); + */ +function invokeCollectionAsync(collection, property, value, thisBind) { + if (thisBind) { + return mapAsyncArray(collection, (item) => { + return item[property].call(thisBind, value); + }); + } + return mapAsyncArray(collection, async (item) => { + return item[property](value); }); } @@ -7765,5 +7812,5 @@ function isNodeList(source) { return (hasValue(source)) ? source.toString() === objectNodeList : false; } -export { Chain, Crate, Intervals, Model, Store, Timers, UniqID, VirtualStorage, add, after, append, apply, arrayToRegex, arraysToObject, ary, assert, assertAsync, assign, before, bindAll, cacheNativeMethod, calcProgress, camelCase, chain, chunk, chunkString, clear, clearArray, clearBuffer, clearIntervals, clearTimers, clone, cloneArray, cloneType, cnsl, cnslTheme, compact, compactKeys, compactMap, compactMapArray, compactMapAsyncArray, compactMapAsyncObject, compactMapObject, concurrent, concurrentStatus, construct, constructorName, countBy, countKey, countWithoutKey, crate, createFragment, curry, curryRight, debounce, deduct, defProp, difference, divide, drop, dropRight, each, eachArray, eachAsyncArray, eachAsyncObject, eachObject, eachRight, eachRightAsync, ensureArray, ensureBuffer, escapeRegex, escapeRegexRegex, eventAdd, eventRemove, every, everyArg, everyArray, everyAsyncArray, everyAsyncObject, everyObject, falsy, filter, filterArray, filterAsyncArray, filterAsyncObject, filterObject, findIndex, findIndexCache, findItem, first, flatten, flattenDeep, flow, flowAsync, flowAsyncRight, flowRight, forEach, forEachAsync, forMap, forOf, forOfAsync, forOfCompactMap, forOfCompactMapAsync, forOfEvery, forOfEveryAsync, forOfFilter, forOfFilterAsync, forOfMap, forOfMapAsync, generateLoop, get, getByClass, getById, getByTag, getEntries, getFileExtension, getFilename, getHighest, getLowest, getNumberInsertIndex, getPropDesc, getPropNames, getType, getTypeName, groupBy, has, hasAnyKeys, hasDot, hasKeys, hasLength, hasLocal, hasProp, hasValue, htmlEntities, ifInvoke, ifNotAssign, ifValue, importjs, inAsync, inSync, increment, indexBy, info, initial, initialString, insertInRange, intersection, interval, intervals, invert, invoke, invokeAsync, isAgent, isArguments, isArray, isArrayBuffer, isArrayBufferCall, isArrayLike, isAsync, isAsyncCall, isBigInt, isBigIntCall, isBoolean, isBooleanCall, isBuffer, isBufferCall, isChild, isCloneable, isConstructor, isConstructorFactory, isConstructorNameFactory, isDate, isDateCall, isDeno, isDocumentReady, isDom, isEmpty, isEnter, isEqual, isF32, isF32Call, isF64, isF64Call, isFalse, isFalsy, isFileCSS, isFileHTML, isFileJS, isFileJSON, isFloat, isFunction, isGenerator, isGeneratorCall, isHTMLCollection, isI16, isI16Call, isI32, isI32Call, isI8, isI8Call, isIterable, isKindAsync, isMap, isMapCall, isMatchArray, isMatchObject, isNegative, isNodeList, isNodejs, isNotArray, isNotNumber, isNotString, isNull, isNumber, isNumberCall, isNumberEqual, isNumberInRange, isNumberNotInRange, isParent, isPlainObject, isPositive, isPrimitive, isPromise, isRegex, isRegexCall, isRelated, isSafeInt, isSame, isSameType, isSet, isSetCall, isString, isTrue, isTruthy, isTypeFactory, isTypedArray, isU16, isU16Call, isU32, isU32Call, isU8, isU8C, isU8CCall, isU8Call, isUndefined, isWeakMap, isWeakMapCall, isZero, jsonParse, kebabCase, keys, largest, last, lowerCase, map, mapArray, mapAsyncArray, mapAsyncObject, mapObject, mapRightArray, mapWhile, merge, model, multiply, negate, noValue, nodeAttribute, noop, notEqual, nthArg, objectAssign, objectEntries, objectSize, omit, once, onlyUnique, over, overEvery, pair, partition, pick, pluck, pluckObject, promise, propertyMatch, querySelector, querySelectorAll, randomFloat, randomInt, range, rangeDown, rangeUp, rawURLDecode, reArg, regexTestFactory, remainder, remove, removeBy, replaceList, rest, restString, returnValue, right, rightString, sample, sanitize, saveDimensions, selector, setKey, setValue, shuffle, smallest, snakeCase, sortCollectionAlphabetically, sortCollectionAlphabeticallyReverse, sortCollectionAscending, sortCollectionAscendingFilter, sortCollectionDescending, sortCollectionDescendingFilter, sortNumberAscending, sortNumberDescening, sortObjectsAlphabetically, sortObjectsAlphabeticallyReverse, sortUnique, stringify, stubArray, stubFalse, stubObject, stubString, stubTrue, subtract, subtractAll, subtractReverse, sumAll, take, takeRight, themes, throttle, timer, timers, times, timesAsync, timesMap, timesMapAsync, toArray, toPath, toggle, tokenize, truncate, truncateRight, truth, unZip, unZipObject, union, uniqID, unique, untilFalseArray, untilTrueArray, updateDimensions, upperCase, upperFirst, upperFirstAll, upperFirstLetter, upperFirstOnly, upperFirstOnlyAll, virtualStorage, whileCompactMap, whileEachArray, whileMapArray, without, words, wrap, xor, zip, zipObject }; +export { Chain, Crate, Intervals, Model, Store, Timers, UniqID, VirtualStorage, add, after, append, apply, arrayToRegex, arraysToObject, ary, assert, assertAsync, assign, before, bindAll, cacheNativeMethod, calcProgress, camelCase, chain, chunk, chunkString, clear, clearArray, clearBuffer, clearIntervals, clearTimers, clone, cloneArray, cloneType, cnsl, cnslTheme, compact, compactKeys, compactMap, compactMapArray, compactMapAsyncArray, compactMapAsyncObject, compactMapObject, concurrent, concurrentStatus, construct, constructorName, countBy, countKey, countWithoutKey, crate, createFragment, curry, curryRight, debounce, deduct, defProp, difference, divide, drop, dropRight, each, eachArray, eachAsyncArray, eachAsyncObject, eachObject, eachRight, eachRightAsync, ensureArray, ensureBuffer, escapeRegex, escapeRegexRegex, eventAdd, eventRemove, every, everyArg, everyArray, everyAsyncArray, everyAsyncObject, everyObject, falsy, filter, filterArray, filterAsyncArray, filterAsyncObject, filterObject, findIndex, findIndexCache, findItem, first, flatten, flattenDeep, flow, flowAsync, flowAsyncRight, flowRight, forEach, forEachAsync, forMap, forOf, forOfAsync, forOfCompactMap, forOfCompactMapAsync, forOfEvery, forOfEveryAsync, forOfFilter, forOfFilterAsync, forOfMap, forOfMapAsync, generateLoop, get, getByClass, getById, getByTag, getEntries, getFileExtension, getFilename, getHighest, getLowest, getNumberInsertIndex, getPropDesc, getPropNames, getType, getTypeName, groupBy, has, hasAnyKeys, hasDot, hasKeys, hasLength, hasLocal, hasProp, hasValue, htmlEntities, ifInvoke, ifNotAssign, ifValue, importjs, inAsync, inSync, increment, indexBy, info, initial, initialString, insertInRange, intersection, interval, intervals, invert, invokeArray, invokeCollection, invokeCollectionAsync, isAgent, isArguments, isArray, isArrayBuffer, isArrayBufferCall, isArrayLike, isAsync, isAsyncCall, isBigInt, isBigIntCall, isBoolean, isBooleanCall, isBuffer, isBufferCall, isChild, isCloneable, isConstructor, isConstructorFactory, isConstructorNameFactory, isDate, isDateCall, isDeno, isDocumentReady, isDom, isEmpty, isEnter, isEqual, isF32, isF32Call, isF64, isF64Call, isFalse, isFalsy, isFileCSS, isFileHTML, isFileJS, isFileJSON, isFloat, isFunction, isGenerator, isGeneratorCall, isHTMLCollection, isI16, isI16Call, isI32, isI32Call, isI8, isI8Call, isIterable, isKindAsync, isMap, isMapCall, isMatchArray, isMatchObject, isNegative, isNodeList, isNodejs, isNotArray, isNotNumber, isNotString, isNull, isNumber, isNumberCall, isNumberEqual, isNumberInRange, isNumberNotInRange, isParent, isPlainObject, isPositive, isPrimitive, isPromise, isRegex, isRegexCall, isRelated, isSafeInt, isSame, isSameType, isSet, isSetCall, isString, isTrue, isTruthy, isTypeFactory, isTypedArray, isU16, isU16Call, isU32, isU32Call, isU8, isU8C, isU8CCall, isU8Call, isUndefined, isWeakMap, isWeakMapCall, isZero, jsonParse, kebabCase, keys, largest, last, lowerCase, map, mapArray, mapAsyncArray, mapAsyncObject, mapObject, mapRightArray, mapWhile, merge, model, multiply, negate, noValue, nodeAttribute, noop, notEqual, nthArg, objectAssign, objectEntries, objectSize, omit, once, onlyUnique, over, overEvery, pair, partition, pick, pluck, pluckObject, promise, propertyMatch, querySelector, querySelectorAll, randomFloat, randomInt, range, rangeDown, rangeUp, rawURLDecode, reArg, regexTestFactory, remainder, remove, removeBy, replaceList, rest, restString, returnValue, right, rightString, sample, sanitize, saveDimensions, selector, setKey, setValue, shuffle, smallest, snakeCase, sortCollectionAlphabetically, sortCollectionAlphabeticallyReverse, sortCollectionAscending, sortCollectionAscendingFilter, sortCollectionDescending, sortCollectionDescendingFilter, sortNumberAscending, sortNumberDescening, sortObjectsAlphabetically, sortObjectsAlphabeticallyReverse, sortUnique, stringify, stubArray, stubFalse, stubObject, stubString, stubTrue, subtract, subtractAll, subtractReverse, sumAll, take, takeRight, themes, throttle, timer, timers, times, timesAsync, timesMap, timesMapAsync, toArray, toPath, toggle, tokenize, truncate, truncateRight, truth, unZip, unZipObject, union, uniqID, unique, untilFalseArray, untilTrueArray, updateDimensions, upperCase, upperFirst, upperFirstAll, upperFirstLetter, upperFirstOnly, upperFirstOnlyAll, virtualStorage, whileCompactMap, whileEachArray, whileMapArray, without, words, wrap, xor, zip, zipObject }; //# sourceMappingURL=bundle.js.map diff --git a/docs/browser.bundle.js b/docs/browser.bundle.js index 4766099f..6768245d 100644 --- a/docs/browser.bundle.js +++ b/docs/browser.bundle.js @@ -1,11 +1,12 @@ -(function(global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? - factory(exports) : - typeof define === 'function' && define.amd ? - define(['exports'], factory) : - ((global = typeof globalThis !== 'undefined' ? globalThis : global || self), factory((global.$ = {}))); -})(this, (exports) => { +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + ? factory(exports) + : typeof define === 'function' && define.amd + ? define(['exports'], factory) + : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self), factory((global.$ = {}))); +})(this, function (exports) { 'use strict'; + /** * Chunks an array according to a user defined number. * @@ -34,6 +35,7 @@ }); return chunked; } + /** * Clears the values out of an array. * @@ -51,6 +53,7 @@ source.length = 0; return source; } + /** * Clone an array (uses .slice()) and assign the source arrays values to the new array. * @@ -67,6 +70,7 @@ function cloneArray(source) { return source.slice(); } + /** Checks if the value is undefined. * * @function isUndefined @@ -81,6 +85,7 @@ function isUndefined(source) { return source === undefined; } + /** * Checks if the value has length greater than 0. * @@ -96,6 +101,7 @@ function hasLength(source) { return Boolean(source.length); } + /** * Checks if the value is null. * @@ -111,6 +117,7 @@ function isNull(source) { return source === null; } + /** * Checks if the value is not null or undefined. * @@ -126,6 +133,7 @@ function hasValue(source) { return !isUndefined(source) && !isNull(source); } + /** * A simple function which returns the value it's given. * @@ -137,6 +145,7 @@ function returnValue(source) { return source; } + /** * Iterates through the given array. * @@ -173,6 +182,7 @@ } return source; } + /** * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array. * @@ -210,6 +220,7 @@ } return results; } + /** * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order. * @@ -247,6 +258,7 @@ } return source; } + /** * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array. * @@ -274,6 +286,7 @@ }); return results; } + /** * Checks if a number is negative & returns true or false. * @@ -291,6 +304,7 @@ function isNegative(source) { return sign$1(source) === -1; } + function rangeUp(start, end, step, sourceArray) { let position = start; while (position < end) { @@ -332,10 +346,12 @@ return rangeDown(start, end, step, sourceArray); } } + function forEach(source, callback) { source.forEach(callback); return source; } + /** * Checks if the value is an array. This references Array.isArray. * @@ -366,6 +382,7 @@ function isNotArray(source) { return !isArray(source); } + /** * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned. * @@ -382,6 +399,7 @@ function ensureArray(source) { return (isArray(source) && source) || (hasValue(source) && [source]) || []; } + /** * Flattens an array to a single level. * @@ -398,6 +416,7 @@ function flattenDeep(source) { return source.flat(Infinity); } + /** * A function which acts like the "new" operator and can pass arguments. This is a safe version of the original which will error if given undefined * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects. @@ -427,6 +446,7 @@ } return reflectConstruct(target, args); } + /** * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences. * @@ -468,6 +488,7 @@ }); return differences; } + /** * Removes all items from an array after a specified index. * @@ -487,6 +508,7 @@ function drop(array, amount = 1, upTo = array.length) { return array.splice(amount, upTo); } + /** * Removes all items from an array before a specified index. * @@ -506,6 +528,7 @@ const dropRight = (array, amount = 1, upTo = array.length) => { return drop(array, 0, upTo - amount); }; + /** * Iterates through the given array in reverse. * @@ -535,6 +558,7 @@ } return source; } + /** * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order. * @@ -564,6 +588,7 @@ } return source; } + /** * Iterates through the given array while the iteratee returns true else the loop exits & returns false. * @@ -596,6 +621,7 @@ } return true; } + /** * Iterates through the given array while the iteratee returns true else the loop exits & returns false. * @@ -628,6 +654,7 @@ } return true; } + /** * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee. * @@ -655,6 +682,7 @@ }); return results; } + /** * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee. * @@ -682,6 +710,7 @@ }); return results; } + /** * Takes the first or multiple items from an array. * @@ -699,6 +728,7 @@ function first(array, upTo) { return upTo ? array.slice(0, upTo) : array[0]; } + /** * Flattens an array up to the provided level. * @@ -725,6 +755,7 @@ } return sourceArray; } + /** * Takes all but the last item in the array. * @@ -741,6 +772,7 @@ function initial(array) { return array.slice(0, array.length - 1); } + // Add intersectionBy & intersectionWith /** * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory)) @@ -766,6 +798,44 @@ } }); } + + /** + * Invoke each function in the given array. + * + * @function invokeArray + * @category array + * @type {Function} + * @param {Array} source - Array that will be looped through. + * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg. + * @param {*} thisCall - Iteratee called with thisCall as this. + * @param {*} additionalArg - An object to be given each time to the iteratee. + * @returns {Array} - The originally given array. + * + * @example + * import { invokeArray, assert } from '@universalweb/acid'; + * function test(arg){ + * return [this, arg]; + * } + * const results = invokeArray([test], 1, test); + * assert(results, [test, 1]); + */ + function invokeArray(source, arg, thisCall) { + if (!source) { + return; + } + const arrayLength = source.length; + if (hasValue(thisCall)) { + for (let index = 0; index < arrayLength; index++) { + source[index].call(thisCall, arg); + } + } else { + for (let index = 0; index < arrayLength; index++) { + source[index](arg); + } + } + return source; + } + /** * Get object's keys. * @@ -784,6 +854,7 @@ return objectKeys(source); } } + const regexToPath = /\.|\[/; const regexCloseBracket = /]/g; const emptyString = ''; @@ -803,6 +874,7 @@ function toPath(source) { return source.replace(regexCloseBracket, emptyString).split(regexToPath); } + /** * Returns property on an object. * @@ -834,6 +906,7 @@ }); return link; } + const hasOwn = Object.hasOwn; /** * Checks to see if an object has all of the given property names. @@ -902,6 +975,7 @@ }) ); } + /** * Checks if the value is a plain object. * @@ -917,11 +991,11 @@ */ const isPlainObject = (value) => { if (hasValue(value)) { - return value.constructor.toString().trim() - .slice(9, 16) === 'Object('; + return value.constructor.toString().trim().slice(9, 16) === 'Object('; } return false; }; + /** * Checks to see if the constructor is that of a native object. * @@ -951,14 +1025,16 @@ return constructorName(target) === source || false; }; } + function isTypeFactory(method) { - return function(primarySource, ...otherSources) { + return function (primarySource, ...otherSources) { if (otherSources) { return method(primarySource) && everyArray(otherSources, method); } return method(primarySource); }; } + /** * Checks if an object or objects are a Buffer. * @@ -973,6 +1049,7 @@ */ const isBufferCall = isConstructorNameFactory('Buffer'); const isBuffer = isTypeFactory(isBufferCall); + /** * Performs a deep comparison between two objects & determines if the value is the same using strict comparison. * @@ -1011,6 +1088,7 @@ } return false; }; + /** * Performs a shallow strict comparison between two objects. * @@ -1033,6 +1111,7 @@ } return false; } + const mathNativeMax = Math.max; /** * Plucks the largest value from an array. @@ -1050,6 +1129,7 @@ function largest(array) { return mathNativeMax(...array); } + /** * Extracts item(s) from an array starting from the last item in the array. * @@ -1068,6 +1148,7 @@ const arrayLength = array.length; return indexFrom ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1]; } + /** * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array. * @@ -1099,6 +1180,7 @@ } return results; } + /** * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array. * @@ -1123,6 +1205,7 @@ }); return results; } + /** * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse. * @@ -1150,6 +1233,7 @@ } return results; } + /** * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee. * @@ -1180,6 +1264,7 @@ } return results; } + /** * Subtracts the subtrahend (second argument) from the minuend (first argument). * @@ -1197,6 +1282,7 @@ function subtract(minuend, subtrahend) { return minuend - subtrahend; } + /** * Sorts an array of numbers in ascending order. Smallest to largest. * @@ -1212,6 +1298,7 @@ function sortNumberAscending(numberList) { return numberList.sort(subtract); } + /** * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate. * @@ -1245,6 +1332,7 @@ rejected ]; } + /** * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function. * @@ -1262,6 +1350,7 @@ function subtractReverse(subtrahend, minuend) { return minuend - subtrahend; } + /** * Sorts an array of numbers in descending order. Largest to smallest. * @@ -1277,6 +1366,7 @@ function sortNumberDescening(numberList) { return numberList.sort(subtractReverse); } + /** * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation. * @@ -1330,6 +1420,7 @@ } return source; } + /** * Extracts all items in array except the first and last item. * @@ -1346,6 +1437,7 @@ function rest(array) { return array.slice(1, array.length); } + /** * Get the item at the supplied index starting at the end of the array. * @@ -1363,9 +1455,8 @@ function right(source, amount) { return source[source.length - 1 - amount]; } - const { - floor, random: random$1 - } = Math; + + const { floor, random: random$1 } = Math; /** * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption. * @@ -1383,6 +1474,7 @@ function randomInt(max, min = 0) { return floor(random$1() * (max - min)) + min; } + const arrayFrom = Array.from; /** * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check. @@ -1403,6 +1495,7 @@ return arrayFrom(arrayLike, mapFn, thisArg); } } + /** * Checks if two numbers are the same. * @@ -1420,6 +1513,7 @@ function isNumberEqual(source, target) { return source === target; } + /** * Shuffle an array and return a new array. * @@ -1450,6 +1544,7 @@ } return shuffleArray; } + /** * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned. * @@ -1494,6 +1589,7 @@ } return sampleArray; } + const mathNativeMin = Math.min; /** * Plucks the smallest value from an array. @@ -1511,6 +1607,7 @@ function smallest(array) { return mathNativeMin(...array); } + /** * What index should the number be inserted at to keep a sorted array still sorted. * @@ -1538,6 +1635,7 @@ }); return insertIndex; } + /** * Returns a shallow copy of the array up to an amount. * @@ -1555,6 +1653,7 @@ function take(source, endIndex = 1) { return source.slice(0, endIndex); } + /** * Returns a shallow copy of the array up to an amount starting from the right. * @@ -1573,6 +1672,7 @@ const arrayLength = source.length; return source.slice(arrayLength - indexRight, arrayLength); } + function onlyUnique(value, index, array) { return array.indexOf(value) === index; } @@ -1599,6 +1699,7 @@ } return source.filter(onlyUnique); } + /** * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays. * @@ -1615,6 +1716,7 @@ function union(...arrays) { return unique(flattenDeep(arrays)); } + /** * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned. * If and when the iteratee yields false the loop stops & false is returned. @@ -1644,6 +1746,7 @@ } return true; } + /** * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned. * If and when the iteratee yields true the loop stops & false is returned. @@ -1673,6 +1776,7 @@ } return true; } + /** * Iterates through the calling object and creates a new object based on the calling object's type with the results, * (excludes results which are null or undefined), of the iteratee on every element in the calling object. @@ -1704,6 +1808,7 @@ } return source; } + /** * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over. * @@ -1731,6 +1836,7 @@ } return source; } + /** * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array. * Re-checks the length each loop. @@ -1761,6 +1867,7 @@ } return source; } + /** * Returns a copy of the array with all instances of the values removed. * @@ -1784,6 +1891,7 @@ return !sourcesSet.has(item); }); } + /** * Creates an array that is the symmetric difference of the provided arrays. * @@ -1828,6 +1936,7 @@ }); return xored; } + /** * Merges together the values of each of the arrays with the values at the corresponding position. * @@ -1868,6 +1977,7 @@ }); }); } + /** * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer. * @@ -1884,6 +1994,7 @@ function ensureBuffer(source) { return (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0); } + /** * Clears the values out of a buffer. * @@ -1901,6 +2012,7 @@ source.fill(0); return source; } + /** * Creates an object composed of keys generated from the results of running each element of collection through iteratee. * @@ -1927,6 +2039,7 @@ }); return object; } + /** * Count the amount of times a key is present in a collection. * @@ -1950,6 +2063,7 @@ }); return count; } + /** * Count the amount of times a key is not present in a collection. * @@ -1973,11 +2087,13 @@ }); return count; } + function findIndexCache(element, index, array, indexMatch, propertyName) { if (element[propertyName] === indexMatch) { return true; } } + /** * Finds an object in a collection by the given id and property name and returns the array index of the object. * @@ -1999,6 +2115,7 @@ }); return result === -1 ? false : result; } + /** * Finds an object in a collection by the given id and property name. * @@ -2020,6 +2137,7 @@ }); return result === -1 ? false : result; } + /** * Sorts an array in place using a key in descending order. * @@ -2060,6 +2178,7 @@ return sortCollectionDescendingFilter(previous, next, propertyName, ifMatch); }); } + /** * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array. * @@ -2099,6 +2218,7 @@ return sortObjectsAlphabetically(previous, next, propertyName, ifMatch); }); } + /** * Sorts an array in place using a key in ascending order. * @@ -2139,6 +2259,7 @@ return sortCollectionAscendingFilter(previous, next, propertyName, ifMatch); }); } + /** * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array. * @@ -2156,6 +2277,7 @@ function getHighest(collection, propertyName = 'id') { return sortCollectionAscending(collection, propertyName)[0]; } + /** * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array. * @@ -2173,6 +2295,7 @@ function getLowest(collection, propertyName) { return sortCollectionDescending(collection, propertyName, false)[0]; } + /** * Creates an object composed of keys generated from the results of running each element of collection thru iteratee. * The order of grouped values is determined by the order they occur in collection. @@ -2200,6 +2323,7 @@ }); return sortedObject; } + /** * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique. * @@ -2223,10 +2347,11 @@ }); return sortedObject; } + /** * Invokes a function on the provided property name in each object in the collection. * - * @function invoke + * @function invokeCollection * @category collection * @type {Function} * @param {Array} collection - Collection from which method will be taken. @@ -2235,18 +2360,27 @@ * @returns {Array} - Returns the results of the invoked method. * * @example - * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] + * import { invokeCollection, assert } from '@universalweb/acid'; + * const results = invokeCollection([{ + * test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); */ - function invoke(collection, property, value) { + function invokeCollection(collection, property, value, thisBind) { + if (thisBind) { + return mapArray(collection, (item, index) => { + return item[property].call(thisBind, value); + }); + } return mapArray(collection, (item, index) => { - return item[property](value, index); + return item[property](value); }); } + /** * Asynchronously awaits & invokes a function on the provided property name in each object in the collection. * - * @function invokeAsync + * @function invokeCollectionAsync * @category collection * @type {Function} * @async @@ -2256,20 +2390,23 @@ * @returns {Array} - Returns the results of the invoked method. * * @test - * (async () => { - * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]); - * }); - * - * @example - * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] - */ - function invokeAsync(collection, property, value) { - return mapAsyncArray(collection, async (item, index) => { - return item[property](value, index); + * import { invokeCollectionAsync, assert } from '@universalweb/acid'; + * const results = await invokeCollectionAsync([{ + * async test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); + */ + function invokeCollectionAsync(collection, property, value, thisBind) { + if (thisBind) { + return mapAsyncArray(collection, (item) => { + return item[property].call(thisBind, value); + }); + } + return mapAsyncArray(collection, async (item) => { + return item[property](value); }); } + /** * Checks if the value is a number. * @@ -2299,6 +2436,7 @@ function isNotNumber(source) { return !isNumber(source); } + /** * Checks if the value is a string. * @@ -2329,6 +2467,7 @@ function isNotString(source) { return !isString(source); } + /** * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array. * @@ -2353,6 +2492,7 @@ return source[item]; }); } + /** * Returns an array of the plucked values from the collection. * @@ -2373,6 +2513,7 @@ return pluckObject(item, targets); }); } + /** * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array. * @@ -2404,6 +2545,7 @@ return sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch); }); } + /** * Return the file extension. * @@ -2421,6 +2563,7 @@ return source.substring(source.lastIndexOf('.') + 1); } } + /** * Return the file extension. * @@ -2438,11 +2581,13 @@ return source.substring(source.lastIndexOf('/') + 1); } } + function regexTestFactory(regexType) { return (item) => { return hasValue(item) ? regexType.test(item) : false; }; } + /** * Checks if the string has a .css extension. * @@ -2456,6 +2601,7 @@ * assert(isFileCSS('test.css'), true); */ const isFileCSS = regexTestFactory(/\.css$/); + /** * Checks if the string has a .html extension. * @@ -2469,6 +2615,7 @@ * assert(isFileHTML('test.html'), true); */ const isFileHTML = regexTestFactory(/\.html$/); + /** * Checks if the string has a .js extension. * @@ -2482,6 +2629,7 @@ * assert(isFileJS('test.js'), true); */ const isFileJS = regexTestFactory(/\.js$/); + /** * Checks if the string has a .json extension. * @@ -2495,6 +2643,7 @@ * assert(isFileJSON('test.json'), true); */ const isFileJSON = regexTestFactory(/\.json$/); + /** * Creates a function that executes callable, only after being called n times. * @@ -2532,6 +2681,7 @@ }; return onlyAfter; } + /** * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments. * @@ -2551,6 +2701,7 @@ return callable(...args.splice(0, amount)); }; } + /** * Creates a function that executes callable, only before n times. * @@ -2582,6 +2733,7 @@ }; return onlyBefore; } + const objectAssign = Object.assign; /** * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object. @@ -2601,6 +2753,7 @@ return objectAssign(target, ...sources); } } + /** * Asynchronously iterates through the given object. * @@ -2637,6 +2790,7 @@ } return source; }; + /** * Iterates through the given object. * @@ -2671,6 +2825,7 @@ } return source; } + async function forEachAsync(source, callback) { const values = []; const properties = []; @@ -2685,6 +2840,7 @@ } return source; } + /** * Checks if an object(s) is a Set. * @@ -2699,6 +2855,7 @@ */ const isSetCall = isConstructorNameFactory('Set'); const isSet = isTypeFactory(isSetCall); + function forOf(source, iteratee) { if (isSet(source)) { for (const value of source) { @@ -2711,6 +2868,7 @@ } return source; } + /** * Checks if an object or objects are a Int16Array. * @@ -2726,6 +2884,7 @@ */ const isGeneratorCall = isConstructorNameFactory('GeneratorFunction'); const isGenerator = isTypeFactory(isGeneratorCall); + async function forOfAsync(source, iteratee, generatorArgs) { if (isSet(source)) { for (const value of source) { @@ -2743,6 +2902,7 @@ } return source; } + /** * Checks if an object or objects are a plain object. * @@ -2759,6 +2919,7 @@ const isFunction = (source) => { return hasValue(source) ? source instanceof Function : false; }; + /** * Checks if an object is an async function. * @@ -2773,6 +2934,7 @@ */ const isAsyncCall = isConstructorNameFactory('AsyncFunction'); const isAsync = isTypeFactory(isAsyncCall); + function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) { return (source, iteratee, argument1, argument2, argument3) => { let returned; @@ -2793,6 +2955,7 @@ return returned(source, iteratee, argument1, argument2, argument3); }; } + /** * Iterates through the given object. * @@ -2814,6 +2977,7 @@ * assert(list, {a: 1, b: 2, c: 3}); */ const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync); + class Chain { constructor(methods) { this.addChainMethod(methods); @@ -2821,7 +2985,7 @@ addChainMethod(methods) { const thisChain = this; each(methods, (method, methodName) => { - thisChain[methodName] = function(...args) { + thisChain[methodName] = function (...args) { this.value = method.call(thisChain, thisChain.value, ...args); return thisChain; }; @@ -2859,6 +3023,7 @@ function chain(config) { return construct(Chain, [config]); } + /** * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient. * @@ -2889,6 +3054,7 @@ }; return curried; } + /** * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order. * @@ -2918,6 +3084,7 @@ }; return curried; } + /** * This method returns true. * @@ -2935,6 +3102,7 @@ const stubTrue = () => { return truth; }; + /** * This method returns false. * @@ -2952,6 +3120,7 @@ const stubFalse = () => { return falsy; }; + /** * This method returns undefined. * @@ -2966,6 +3135,7 @@ const noop = () => { return; }; + /** * Iterates based on the amount given invoking the iteratee with the current index as an argument. * @@ -3015,6 +3185,7 @@ } return results; } + class Timers { list = construct(Map); construct() {} @@ -3115,6 +3286,7 @@ timers.remove(index); }); } + const applyNative = Reflect.apply; /** * Calls a target function with an optional "this" and optional arguments as specified. Same as Reflect.apply but with a function check. @@ -3135,6 +3307,7 @@ return applyNative(target, thisArgument, argumentsList); } } + /** * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer. * @@ -3172,6 +3345,7 @@ }; return debounced; } + /** * Checks if the given method is a function. If it is then it invokes it with the given arguments. * @@ -3191,6 +3365,7 @@ return callable(...args); } } + /** * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object. * @@ -3221,6 +3396,7 @@ } return source; } + /** * Invoke an array of functions. * @@ -3249,6 +3425,7 @@ item(value); }); }; + /** * Creates a function that negates the result of the predicate callable. * @@ -3267,6 +3444,7 @@ return !callable(...args); }; } + /** * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned. * @@ -3285,6 +3463,7 @@ return args[index]; }; } + /** * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function. * @@ -3316,6 +3495,7 @@ }; return onlyOnce; }; + /** * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object. * @@ -3342,6 +3522,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object. * @@ -3376,6 +3557,7 @@ } return results; } + /** * Returns the constructor of an object. * @@ -3391,6 +3573,7 @@ function getType(source) { return source?.constructor; } + /** * Returns a new empty object of the same type. * @@ -3407,11 +3590,12 @@ const sourceType = getType(source); if (sourceType === Function) { if (sourceType.name === 'function') { - return function() {}; + return function () {}; } } return construct(sourceType, args); } + /** * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object. * @@ -3451,6 +3635,7 @@ } return results; } + /** * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -3497,6 +3682,7 @@ } return results; } + /** * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object. * @@ -3517,6 +3703,7 @@ * }), {a: 2, b: 4, c: 6}); */ const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync); + /** * Creates a function that invokes iteratee with the arguments it receives and returns their results. * @@ -3537,6 +3724,7 @@ }); }; } + /** * Iterates through the given object while the iteratee returns true. * @@ -3563,6 +3751,7 @@ return iteratee(source[key], key, source, propertyCount, original); }); } + /** * Iterates through the given object while the iteratee returns true. * @@ -3589,6 +3778,7 @@ return iteratee(source[key], key, source, propertyCount, original); }); } + /** * Iterates (for of) through the given object while the iteratee returns true using a for of loop. * @@ -3623,6 +3813,7 @@ } return true; } + /** * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop. * @@ -3664,6 +3855,7 @@ } return true; } + /** * Iterates through the given object while the iteratee returns true. * @@ -3681,6 +3873,7 @@ * }), false); */ const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync); + /** * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives. * @@ -3701,6 +3894,7 @@ }); }; } + /** * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on. * @@ -3726,6 +3920,7 @@ ); }; } + /** * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer. * @@ -3763,6 +3958,7 @@ }; return throttled; } + /** * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function. * @@ -3784,6 +3980,7 @@ return wrapper(value, ...arg); }; } + const functionPrototype = Function.prototype; /** * Caches a prototype method. @@ -3801,6 +3998,7 @@ function cacheNativeMethod(method) { return functionPrototype.call.bind(method); } + /** * Returns an array of all properties (enumerable or not) found directly upon a given object. * @@ -3849,6 +4047,7 @@ */ const defProp = Object.defineProperty; const hasProp = cacheNativeMethod(Object.hasOwnProperty); + /** * Determines whether two values are the same value. * @@ -3863,6 +4062,7 @@ * assert(isSame('foo', 'foo'), true); */ const isSame = Object.is; + /** * Adds two numbers. * @@ -3880,6 +4080,7 @@ function add(augend, addend) { return augend + addend; } + /** * Decrements a number. * @@ -3898,6 +4099,7 @@ function deduct(source) { return source - 1; } + /** * Divides two numbers. * @@ -3915,6 +4117,7 @@ function divide(source, value) { return source / value; } + /** * Increments a number. * @@ -3933,6 +4136,7 @@ function increment(source) { return source + 1; } + /** * Multiplies two numbers. * @@ -3950,6 +4154,7 @@ function multiply(source, value) { return source * value; } + /** * Calculate the progress from a given total and current amount. * @@ -3973,6 +4178,7 @@ } return (currentAmount / total) * 100; } + const { random } = Math; /** * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption. @@ -3992,6 +4198,7 @@ function randomFloat(max, min = 0) { return random() * (max - min) + min; } + /** * Extracts the remainder between two numbers. * @@ -4011,6 +4218,7 @@ function remainder(source, value) { return source % value; } + /** * Subtract all numbers in the array starting from left to right & return the difference. * @@ -4029,6 +4237,7 @@ return a - b; }, 0); } + /** * Sum all numbers in a given array. * @@ -4047,6 +4256,7 @@ return a + b; }, 0); } + /** * Checks if a number is within a range. * @@ -4066,6 +4276,7 @@ function isNumberInRange(source, start, end) { return source > start && source < end; } + /** * Checks if a number is within a range. * @@ -4085,6 +4296,7 @@ function isNumberNotInRange(source, start, end) { return source < start || source > end; } + /** * Checks if a number is negative & returns true or false. * @@ -4102,6 +4314,7 @@ function isPositive(source) { return sign(source) === 1; } + /** * Strictly checks if a number is zero. * @@ -4118,6 +4331,7 @@ function isZero(source) { return source === 0; } + const objectEntries = Object.entries; /** * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error. @@ -4136,6 +4350,7 @@ return objectEntries(source); } } + /** * Extracts all keys from an object whose values are not null or undefined. * @@ -4158,6 +4373,7 @@ }); return compactedKeys; } + /** * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -4184,6 +4400,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -4210,6 +4427,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee. * @@ -4235,6 +4453,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee. * @@ -4260,6 +4479,7 @@ }); return results; } + /** * Creates an inverted version of a given object by switching it's keys and values. * @@ -4283,6 +4503,7 @@ }); return target; } + /** * Performs a shallow strict comparison between two objects. * @@ -4310,6 +4531,7 @@ } return false; }; + /** * Checks if the value is a RegExp. * @@ -4324,6 +4546,7 @@ */ const isRegexCall = isConstructorNameFactory('RegExp'); const isRegex = isTypeFactory(isRegexCall); + /** * Returns a regex safe special characters escaped version of a string. * @@ -4341,6 +4564,7 @@ function escapeRegex(source) { return source.replace(escapeRegexRegex, '\\$&'); } + /** * Convert array of strings to regex. * @@ -4360,6 +4584,7 @@ } return RegExp(source.join('|')); } + /** * Returns a clone of the given object without the given properties. * @@ -4408,6 +4633,7 @@ }); } } + /** * Returns a clone of the source object with the plucked properties. * @@ -4432,6 +4658,7 @@ }); return target; }; + /** * Returns the amount of keys on the object. * @@ -4450,6 +4677,7 @@ } return keys(source).length; } + /** * Creates an object from two arrays, one of property identifiers and one of corresponding values. * @@ -4493,6 +4721,7 @@ }); return [unZippedKeys, values]; }; + const normalizeCase$4 = /[ _-]+/g; /** * Converts a string into Camel case format. @@ -4522,6 +4751,7 @@ }); return result; } + const normalizeCase$3 = /[ _-]+/g; const space$1 = /[ ]+/g; /** @@ -4545,6 +4775,7 @@ .toLowerCase() .replace(space$1, '-'); } + const normalizeCase$2 = /[ _-]+/g; const space = /[ ]+/g; /** @@ -4568,6 +4799,7 @@ .toLowerCase() .replace(space, '_'); } + const normalizeCase$1 = /[ _-]+/g; /** * Converts a string into single space sepperated words in uppercase. @@ -4590,6 +4822,7 @@ .trim() .toUpperCase(); } + const normalizeCase = /[ _-]+/g; /** * Converts a string into single space sepperated words in lowerCase. @@ -4611,6 +4844,7 @@ .trim() .toLowerCase(); } + /** * Inserts text into a string at a given position. * @@ -4698,6 +4932,7 @@ function restString(string, index = 1) { return string.substring(index); } + /** * Replaces all occurrences of strings in an array with a value. * @@ -4716,6 +4951,7 @@ function replaceList(string, words, value) { return string.replace(new RegExp(`\\b${words.join('|')}\\b`, 'gi'), value); } + const truncateDown = (string, maxLength, stringLength) => { const breakAll = string.split(''); const breakAllLength = breakAll.length; @@ -4778,6 +5014,7 @@ const stringLength = string.length; return stringLength > maxLength ? truncateUp(string, maxLength, stringLength) : string; } + const rawURLDecodeRegex = /%(?![\da-f]{2})/gi; const andRegex = /&/g; const lessThanRegex = /console.log('Lucy & diamonds.')`), `<script>console.log('Lucy & diamonds.')</script>`); */ function htmlEntities(string) { - return string.replace(andRegex, '&').replace(lessThanRegex, '<') - .replace(moreThanRegex, '>') - .replace(doubleQuoteRegex, '"'); + return string.replace(andRegex, '&').replace(lessThanRegex, '<').replace(moreThanRegex, '>').replace(doubleQuoteRegex, '"'); } /** * Executes rawURLDecode followd by htmlEntities methods on a string. @@ -4837,6 +5072,7 @@ function sanitize(string) { return htmlEntities(rawURLDecode(string)); } + const tokenizeRegEx = /\S+/g; const wordsRegEx = /\w+/g; /** @@ -4870,6 +5106,7 @@ function words(string) { return string.match(wordsRegEx) || []; } + const getWords = /\w+/g; /** * Returns the first letter capitalized. @@ -4957,6 +5194,7 @@ return upperFirstOnly(match); }); } + /** * Returns the constructor name of an object. * @@ -4972,6 +5210,7 @@ function getTypeName(source) { return getType(source)?.name; } + /** * Checks if the value is an Arguments object. * @@ -4989,6 +5228,7 @@ function isArguments(source) { return hasValue(source) ? source.toString() === objectArguments : false; } + /** * Checks if an object is null or undefined. * @@ -5007,6 +5247,7 @@ function noValue(source) { return !hasValue(source); } + /** * Checks if an object or objects are a Map. * @@ -5022,6 +5263,7 @@ */ const isMapCall = isConstructorNameFactory('Map'); const isMap = isTypeFactory(isMapCall); + /** * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer. * @@ -5046,6 +5288,7 @@ } return false; } + /** * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property. * @@ -5082,6 +5325,7 @@ } return true; } + /** * Checks if an object or objects are a BigInt. * @@ -5096,6 +5340,7 @@ */ const isBigIntCall = isConstructorNameFactory('BigInt'); const isBigInt = isTypeFactory(isBigIntCall); + /** * Checks if the value is a Boolean. * @@ -5111,6 +5356,7 @@ */ const isBooleanCall = isConstructorNameFactory('Boolean'); const isBoolean = isTypeFactory(isBooleanCall); + /** * Checks if an object or objects are a ArrayBuffer. * @@ -5125,6 +5371,7 @@ */ const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer'); const isArrayBuffer = isTypeFactory(isArrayBufferCall); + /** * Checks if an object is the child of another. Typically used for classes. * @@ -5151,6 +5398,7 @@ } return sourceChild instanceof targetParent; } + /** * Checks if an object or objects are a structured-cloneable type. * @@ -5173,6 +5421,7 @@ } return false; } + /** * Checks if the value is a Date. * @@ -5187,6 +5436,7 @@ */ const isDateCall = isConstructorNameFactory('Date'); const isDate = isTypeFactory(isDateCall); + /** * Checks if the value is empty. * @@ -5207,6 +5457,7 @@ } return !hasValue(source); } + /** * Check if a value equals false using strict comparison. * @@ -5225,6 +5476,7 @@ function isFalse(source) { return source === false; } + /** * Checks if an object or objects are a Float32Array. * @@ -5239,6 +5491,7 @@ */ const isF32Call = isConstructorNameFactory('Float32Array'); const isF32 = isTypeFactory(isF32Call); + /** * Checks if an object or objects are a Float64Array. * @@ -5254,6 +5507,7 @@ */ const isF64Call = isConstructorNameFactory('Float64Array'); const isF64 = isTypeFactory(isF64Call); + const { isInteger } = Number; /** * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger. @@ -5269,6 +5523,7 @@ * // => true */ const isFloat = isInteger; + /** * Checks if an object or objects are a Int16Array. * @@ -5284,6 +5539,7 @@ */ const isI16Call = isConstructorNameFactory('Int16Array'); const isI16 = isTypeFactory(isI16Call); + /** * Checks if an object or objects are a Int32Array. * @@ -5297,6 +5553,7 @@ */ const isI32Call = isConstructorNameFactory('Int32Array'); const isI32 = isTypeFactory(isI32Call); + /** * Checks if an object or objects are a Int8Array. * @@ -5312,6 +5569,7 @@ */ const isI8Call = isConstructorNameFactory('Int8Array'); const isI8 = isTypeFactory(isI8Call); + /** * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments. * @@ -5329,6 +5587,7 @@ function isIterable(source) { return hasValue(source) && typeof source[Symbol.iterator] === 'function'; } + /** * Checks if an object is a promise. * @@ -5348,6 +5607,7 @@ } return false; } + /** * Checks if an object is a kind of async object such as async function, promise, or generator. * @@ -5366,6 +5626,7 @@ } return false; } + /** * Checks if an object is the child of another. Typically used for classes. * @@ -5392,6 +5653,7 @@ } return sourceParent instanceof targetChild; } + /** * Checks if an object is a primitive. * @@ -5409,6 +5671,7 @@ const type = typeof value; return source === null || source === undefined || (type !== 'object' && type !== 'function'); } + /** * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways. * @@ -5442,6 +5705,7 @@ } return targetTwo.constructor === targetOne.constructor; } + const { isSafeInteger } = Number; /** * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger. @@ -5457,6 +5721,7 @@ * // => true */ const isSafeInt = isSafeInteger; + function isSameType(source, other) { const sourceType = getType(source); const otherType = getType(other); @@ -5467,6 +5732,7 @@ } return false; } + /** * Check if a value equals true using strict comparison. * @@ -5485,6 +5751,7 @@ function isTrue(source) { return source === true; } + /** * Checks if an object or objects are a Uint16Array. * @@ -5500,6 +5767,7 @@ */ const isU16Call = isConstructorNameFactory('Uint16Array'); const isU16 = isTypeFactory(isU16Call); + /** * Checks if an object or objects are a Uint32Array. * @@ -5515,6 +5783,7 @@ */ const isU32Call = isConstructorNameFactory('Uint32Array'); const isU32 = isTypeFactory(isU32Call); + /** * Checks if an object or objects are a Uint8Array. * @@ -5530,6 +5799,7 @@ */ const isU8Call = isConstructorNameFactory('Uint8Array'); const isU8 = isTypeFactory(isU8Call); + /** * Checks if an object or objects are a Uint8ClampedArray. * @@ -5545,6 +5815,7 @@ */ const isU8CCall = isConstructorNameFactory('Uint8ClampedArray'); const isU8C = isTypeFactory(isU8CCall); + /** * Checks if an object or objects are a WeakMap. * @@ -5559,8 +5830,11 @@ */ const isWeakMapCall = isConstructorNameFactory('WeakMap'); const isWeakMap = isTypeFactory(isWeakMapCall); + const isDeno = typeof globalThis.Deno !== 'undefined'; + const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node; + /** * Check if a value is isTruthy which is anything but false, null, 0, "", undefined, and NaN. * @@ -5579,6 +5853,7 @@ function isTruthy(source, returnIfTrue = true) { return Boolean(source) && returnIfTrue; } + /** * Check if a value is isFalsy which are false, null, 0, "", undefined, and NaN. * @@ -5597,6 +5872,7 @@ function isFalsy(source, returnIfTrue = true) { return Boolean(source) === false && returnIfTrue; } + /** * If source has a value then assign it to an object or call a function. * @@ -5625,6 +5901,7 @@ } } } + /** * Performs a deep comparison between two objects & determines if they're different using strict comparison. * @@ -5642,6 +5919,7 @@ function notEqual(source, target) { return isFalse(isEqual(source, target)); } + const jsonNative = JSON; /** * Parses JSON string with safety check for undefined. @@ -5676,6 +5954,7 @@ * assert(stringify({a:1}), '{a:1}'); */ const stringify = jsonNative.stringify; + function createAssertError(source, expected, localOptions) { const options = globalThis.options || localOptions; let errorTitle; @@ -5726,6 +6005,7 @@ } return true; } + /** * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to. * @@ -5748,6 +6028,7 @@ }); return targetAssign ? assign(targetAssign, results) : results; } + /** * Clears the values out of an array, buffer, and objects like Map that have a clear method. * @@ -5775,6 +6056,7 @@ } return source; } + /** * Creates a structured clone of an object which is a "structured-cloneable type". * @@ -5792,6 +6074,7 @@ function clone(source) { return structuredCloneSafe(source); } + /** * Creates an array with all isFalsy values removed. The values false, null, 0, "", undefined, and NaN are isFalsy. * @@ -5824,6 +6107,7 @@ return isTruthy(item); }); } + /** * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -5879,6 +6163,7 @@ } return results; } + /** * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -5924,6 +6209,7 @@ } return results; } + /** * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -5949,9 +6235,10 @@ forOfCompactMap, forOfCompactMapAsync ); + function everyArg(...methods) { if (isAsync(methods[0])) { - return async function(...args) { + return async function (...args) { return every(methods, async (method) => { return every(args, async (item) => { return method(item); @@ -5959,7 +6246,7 @@ }); }; } - return function(...args) { + return function (...args) { return every(methods, (method) => { return every(args, (item) => { return method(item); @@ -5967,6 +6254,7 @@ }); }; } + /** * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee. * @@ -6012,6 +6300,7 @@ } return results; } + /** * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee. * @@ -6066,6 +6355,7 @@ } return results; } + /** * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee. * @@ -6084,6 +6374,7 @@ * }), {b: true, c: true}); */ const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync); + function returnFlow$1(callable) { return (...methods) => { return (arg) => { @@ -6123,6 +6414,7 @@ * // => 1 */ const flowRight = returnFlow$1(eachRight); + function returnFlow(callable) { return (...methods) => { return async (arg) => { @@ -6164,6 +6456,7 @@ * // => 2 */ const flowAsyncRight = returnFlow(eachRightAsync); + function forMap(source, callback) { const cloned = cloneType(source); const method = cloned.push || cloned.add; @@ -6186,6 +6479,7 @@ } return cloned; } + /** * Takes all but the last item in the array. * @@ -6207,6 +6501,7 @@ }); return sortedObject; } + /** * Checks if an object contains something. * @@ -6257,6 +6552,7 @@ } return false; } + /** * Checks if the string has a '.'. * @@ -6270,6 +6566,7 @@ * assert(hasDot('test.js'), true); */ const hasDot = regexTestFactory(/\./); + /** * Checks if a property on an object has a value. If not, it will assign a value. * @@ -6291,6 +6588,7 @@ } return rootObject; }; + class Intervals { list = construct(Map); construct() {} @@ -6384,6 +6682,7 @@ intervals.remove(index); }); } + function merge(target, ...sources) { each(sources, (currentSource) => { each(currentSource, (sourceItem, sourceKey) => { @@ -6397,6 +6696,7 @@ }); return target; } + /** * Set & Get a model. * @@ -6435,6 +6735,7 @@ } return get(modelName, Model.models); } + /** * Takes the first two arguments given and returns them inside a new array. * @@ -6451,6 +6752,7 @@ function pair(argument1, argument2) { return [argument1, argument2]; } + /** * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee. * @@ -6478,6 +6780,7 @@ } return Promise.all(queue); } + /** * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee. * @@ -6505,6 +6808,7 @@ } return Promise.allSettled(queue); } + /** * A wrapper around the promise constructor. * @@ -6527,6 +6831,7 @@ function promise(callback) { return new Promise(callback); } + /** * Using a deep comparison it checks if properties of two objects using an array are equal. * @@ -6553,6 +6858,7 @@ return isEqual(source[property], compared[property]); }); }; + function setKey(source, key, value) { if (key && isPlainObject(source)) { source[key] = value; @@ -6569,6 +6875,7 @@ } return source; } + function setValue(source, value, key) { if (isNumber(key) && isArray(source)) { source[key] = value; @@ -6581,6 +6888,7 @@ } return source; } + class Store { source; constructor(source = {}) { @@ -6604,6 +6912,7 @@ }); } } + /** * This method returns a new empty array. * @@ -6619,6 +6928,7 @@ const stubArray = () => { return []; }; + /** * This method returns a new empty object. * @@ -6635,6 +6945,7 @@ const stubObject = () => { return {}; }; + /** * This method returns a new empty string. * @@ -6651,6 +6962,7 @@ const stubString = () => { return ''; }; + /** * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument. * @@ -6702,6 +7014,7 @@ } return results; } + /** * Performs a toggle between 2 values using a deep or strict comparison. * @@ -6722,6 +7035,7 @@ function toggle(value, on = true, off = false) { return isEqual(on, value) ? off : on; } + /** * Unique ID Generator Module. * @@ -6817,6 +7131,7 @@ * assert(uniqID.get(), 0); */ const uniqID = construct(UniqID); + /** * Class representing a virtual storage. A drop in replacement for localStorage. * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it. @@ -6918,6 +7233,7 @@ function virtualStorage(initialObject) { return new VirtualStorage(initialObject); } + /** * Checks to see of the browser agent has a string. * @@ -6952,6 +7268,7 @@ isAgent[item] = true; }); } + /** * Attaches an event listener to a node. * @@ -6992,6 +7309,7 @@ node.removeEventListener(eventName, callback, useCapture); return node; } + /** * Checks if the keycode of the event is strictly equal to 13. * @@ -7008,6 +7326,7 @@ function isEnter(eventObject) { return eventObject.keyCode === 13; } + /** * Create a document fragment. * @@ -7018,6 +7337,7 @@ * @returns {Fragment} - Returns a new document fragment. */ const createFragment = document.createDocumentFragment.bind(document); + /** * Append a DOM node. * @@ -7034,6 +7354,7 @@ parentNode.appendChild(child); return child; } + /** * Assign attributes to a DOM node. * @@ -7063,6 +7384,7 @@ }); return node; } + const dotString = '.'; const poundString = '#'; const classTest = /^.[\w_-]+$/; @@ -7130,23 +7452,24 @@ function selector(select) { const firstLetter = select[0]; switch (firstLetter) { - case poundString: - if (!regexSpace.test(select)) { - return getById(restString(select)); - } - break; - case dotString: - if (classTest.test(select)) { - return getByClass(restString(select)); - } - break; - default: - if (tagTest.test(select)) { - return getByTag(select); - } + case poundString: + if (!regexSpace.test(select)) { + return getById(restString(select)); + } + break; + case dotString: + if (classTest.test(select)) { + return getByClass(restString(select)); + } + break; + default: + if (tagTest.test(select)) { + return getByTag(select); + } } return querySelectorAll(select); } + const createElementCache = document.createElement.bind(document); const nodeAttachLoadingEvents = (node) => { return promise((accept) => { @@ -7178,6 +7501,7 @@ }); return nodeAttachLoadingEvents(node); } + /** * Runs a function if the document has finished loading. If not, add an eventlistener. * @@ -7208,6 +7532,7 @@ const scriptName = (scriptTag && scriptTag.getAttribute('data-index')) || '/index'; importjs(scriptName); }); + const protocol = location.protocol; const protocolSocket = protocol === 'http:' ? 'ws' : 'wss'; const hostname = location.hostname; @@ -7230,6 +7555,7 @@ protocolSocket } }; + function saveDimensions() { assign(info, { bodyHeight: document.body.offsetHeight, @@ -7256,6 +7582,7 @@ isDocumentReady(updateDimensions); eventAdd(window, 'load', updateDimensions, true); eventAdd(window, 'resize', updateDimensions, true); + /** * LocalStorage Module.. * @@ -7405,6 +7732,7 @@ function crate(virtualFlag) { return new Crate(virtualFlag); } + const generateTheme = (color, bg) => { return `color:${color};background:${bg};`; }; @@ -7454,6 +7782,7 @@ const cnslTheme = (themeName, color, background) => { themes[themeName] = generateTheme(color, background); }; + /** * Checks if value is a plain DOM Node. * @@ -7506,6 +7835,7 @@ function isNodeList(source) { return hasValue(source) ? source.toString() === objectNodeList : false; } + exports.Chain = Chain; exports.Crate = Crate; exports.Intervals = Intervals; @@ -7655,8 +7985,9 @@ exports.interval = interval; exports.intervals = intervals; exports.invert = invert; - exports.invoke = invoke; - exports.invokeAsync = invokeAsync; + exports.invokeArray = invokeArray; + exports.invokeCollection = invokeCollection; + exports.invokeCollectionAsync = invokeCollectionAsync; exports.isAgent = isAgent; exports.isArguments = isArguments; exports.isArray = isArray; @@ -7881,4 +8212,4 @@ exports.zip = zip; exports.zipObject = zipObject; }); -// # sourceMappingURL=browser.bundle.js.map +//# sourceMappingURL=browser.bundle.js.map diff --git a/docs/browser.js b/docs/browser.js index 4931347e..93bdd434 100644 --- a/docs/browser.js +++ b/docs/browser.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function e(t){return void 0===t}function r(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!e(t)&&!o(t)}function c(t){return t}function s(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const a=n.call(r,t,c,e,s,u,o);i(a)&&e.push(a)})):s(t,((t,c,s,u)=>{const a=n(t,c,e,s,u,r,o);i(a)&&e.push(a)})),e}async function a(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const c=await n(t,r,e,o);i(c)&&e.push(c)})),e}const{sign:l}=Math;function h(t){return-1===l(t)}function g(t,n,e,r){let o=t;for(;on;)r.push(o),o-=e;return r}function d(t,n){return t.forEach(n),t}const y=Array.isArray;function m(t){return y(t)&&t||i(t)&&[t]||[]}function b(t){return t.flat(1/0)}const A=Reflect.construct;function w(t,n=[],e){const r=y(n)?n:[n];return e?A(t,r,e):A(t,r)}function v(...t){const n=w(Map),e=[];return s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&0===t.parentIndex&&e.push(t.child)})),e}function C(t,n=1,e=t.length){return t.splice(n,e)}function I(t,n,e){if(!t)return;const r=t.length;for(let o=r-1;o>=0;o--)n(t[o],o,t,r,e);return t}async function O(t,n){if(!t)return;const e=t.length;for(let r=e-1;r>=0;r--)await n(t[r],r,t,e);return t}function E(t,n,e){if(!t)return;const r=t.length;for(let o=0;o{!0===n(t,o,e,i,c,r)&&e.push(t)})),e}async function j(t,n,e=[],r){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,e,i,c,r)&&e.push(t)})),e}const x=Object.keys;function M(t){if(t)return x(t)}const T=/\.|\[/,R=/]/g,B="";function N(t){return t.replace(R,B).split(T)}function L(t,n){if(!n)return!1;let e=n;return E(y(t)?t:N(t),(t=>(e=e[t],i(e)))),e}const $=Object.hasOwn;function k(t,...n){if(t)return E(n,(n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}}))}const D=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function U(t,n){return t?.constructor===n||!1}function P(t){return n=>U(n,t)}function q(t){return t?.constructor?.name}function z(t){return n=>q(n)===t||!1}function W(t){return function(n,...e){return e?t(n)&&E(e,t):t(n)}}const _=z("Buffer"),H=W(_),V=(t,n)=>{if(t===n)return!0;if(H(t))return t.equals(n);if(t.toString()===n.toString())if(D(t)){const e=M(t);if(k(n,e))return E(e,(e=>V(t[e],n[e])))}else if(y(t)&&t.length===n.length)return E(t,((t,e)=>V(t,n[e])));return!1};const Z=Math.max;function K(t,n,e=[],r,o){return i(r)?s(t,((t,i,c,s)=>{e[i]=n.call(r,t,i,e,c,s,o)})):s(t,((t,r,i,c)=>{e[r]=n(t,r,e,i,c,o)})),e}async function G(t,n){const e=[];return await a(t,(async(t,r,o)=>{e[r]=await n(t,r,o)})),e}function J(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function et(t,n,e){if(i(t))return nt(t,n,e)}function rt(t,n=t.length){if(t.length<=1)return et(t);const e=et(t);let r,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",e){return t.sort(((t,r)=>ft(t,r,n,e)))}function ht(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):o.localeCompare(i)}function gt(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i?o?oi?1:0:-1:1}function pt(t,n="id",e){return t.sort(((t,r)=>gt(t,r,n,e)))}const dt=z("Number"),yt=W(dt);const mt=P(String);function bt(t,n){if(t)return mt(n)?t[n]:K(n,(n=>t[n]))}function At(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),It=wt(/\.js$/),Ot=wt(/\.json$/);const Et=Object.assign;function Ft(t,...n){if(i(t))return Et(t,...n)}const St=async(t,n,e,r)=>{if(!t)return;const o=M(t);return i(e)?await a(o,((i,c,s,u)=>n.call(e,t[i],i,t,u,o,r))):await a(o,((e,i,c,s)=>n(t[e],e,t,s,o,r))),t};function jt(t,n,e,r){if(!t)return;const o=M(t);return i(e)?s(o,((o,i,c,s)=>{n.call(e,t[o],o,t,s,c,r)})):s(o,((e,o,i,c)=>{n(t[e],e,t,c,i,r)})),t}const xt=z("Set"),Mt=W(xt);function Tt(t,n){if(Mt(t)){for(const e of t)n(e,t);return t}for(const[e,r]of t)n(r,e,t);return t}const Rt=z("GeneratorFunction"),Bt=W(Rt);async function Nt(t,n,e){if(Mt(t)){for(const e of t)await n(e,t);return t}if(Bt(t))for await(const r of t(...e))await n(r,t);for(const[e,r]of t)await n(r,e,t);return t}const Lt=t=>!!i(t)&&t instanceof Function,$t=z("AsyncFunction"),kt=W($t);function Dt(t,n,e,r,o,c){return(s,u,a,f,l)=>{let h;const g=kt(u);if(i(s)&&u)return h=y(s)?g?n:t:D(s)||Lt(s)?g?r:e:o?g?c:o:Bt(s)?c:g?r:e,h(s,u,a,f,l)}}const Ut=Dt(s,a,jt,St,Tt,Nt);class Pt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Ut(t,((t,e)=>{n[e]=function(...e){return this.value=t.call(n,n.value,...e),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,zt=!1,Wt=()=>{};function _t(t,n){for(let e=0;e{t(),e.remove(r)}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Vt=w(Ht);function Zt(t,n){return Vt.set(t,n)}const Kt=Reflect.apply;function Gt(t,n,e){if(Lt(t))return Kt(t,n,e)}async function Jt(t,n,e={}){if(t)return await St(t,(async(t,r,o,i,c)=>{e[r]=await n(t,r,e,o,i,c)})),e}function Qt(t,n,e={},r,o){if(t)return i(r)?jt(t,((t,i,c,s,u)=>{e[i]=n.call(r,t,i,e,c,s,u,o)})):jt(t,((t,r,i,c,s)=>{e[r]=n(t,r,e,i,c,s,o)})),e}function Xt(t){return t?.constructor}function Yt(t,n=[]){const e=Xt(t);return e===Function&&"function"===e.name?function(){}:w(e,n)}function tn(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){o(n(e,r,t))}return r}const o=Lt(r.set);for(const[e,i]of t){const c=n(i,e,r,t);o?r.set(e,c):r[e]=c}return r}async function nn(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))e.push(await n(o,e,t));return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){r(await n(e,o,t))}return o}const i=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i?o.set(e,c):o[e]=c}return o}const en=Dt(K,G,Qt,Jt,tn,nn);async function rn(t,n){if(!t)return;return F(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function on(t,n){if(!t)return;return E(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function cn(t,n=c){if(y(t)||Mt(t))for(const e of t){if(!1===n(e,t))return!1}else for(const[e,r]of t){if(!1===n(r,e,t))return!1}return!0}async function sn(t,n=c,e){if(Bt(t))for await(const r of t(...e)){if(!1===await n(r,t))return!1}else if(y(t)||Mt(t))for(const e of t){if(!1===await n(e,t))return!1}else for(const[e,r]of t){if(!1===await n(r,e,t))return!1}return!0}const un=Dt(E,F,on,rn,cn,sn);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,gn=Object.defineProperty,pn=fn(Object.hasOwnProperty),dn=Object.is;const{random:yn}=Math;const{sign:mn}=Math;const bn=Object.entries;async function An(t,n=c,e={}){return await St(t,(async(t,r,o,c,s)=>{const u=await n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function wn(t,n=c,e={}){return jt(t,((t,r,o,c,s)=>{const u=n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function vn(t,n,e={}){return jt(t,((t,r,o,i,c)=>{!0===n(t,r,e,o,i,c)&&(e[r]=t)})),e}async function Cn(t,n,e={}){return await St(t,(async(t,r,o,i,c)=>{!0===await n(t,r,e,o,i,c)&&(e[r]=t)})),e}const In=z("RegExp"),On=W(In),En=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(En,"\\$&")}function Sn(t,n){return n?Sn(K(t,Fn)):RegExp(t.join("|"))}function jn(t){if(t)return M(t).length}const xn=(t,n)=>{const e={};return s(t,((t,r)=>{e[t]=n[r]})),e},Mn=/[ _-]+/g;const Tn=/[ _-]+/g,Rn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Ln=/[ _-]+/g;const $n=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Dn=/%(?![\da-f]{2})/gi,Un=/&/g,Pn=//g,zn=/"/g;function Wn(t){return decodeURIComponent(t.replace(Dn,(()=>"%25")))}function _n(t){return t.replace(Un,"&").replace(Pn,"<").replace(qn,">").replace(zn,""")}const Hn=/\S+/g,Vn=/\w+/g;const Zn=/\w+/g;function Kn(t){return t[0].toUpperCase()}function Gn(t){return Kn(t)+kn(t)}function Jn(t){return Kn(t)+kn(t).toLowerCase()}function Qn(t){return Xt(t)?.name}function Xn(t){return!i(t)}const Yn=z("Map"),te=W(Yn),ne=/Array/,ee="Array";function re(t){if(t){const n=Qn(t);if(ne.test(n)&&n!==ee)return!0}return!1}const oe=z("BigInt"),ie=W(oe),ce=z("Boolean"),se=W(ce),ue=z("ArrayBuffer"),ae=W(ue);const fe=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const le=z("Date"),he=W(le);function ge(t){return!1===t}const pe=z("Float32Array"),de=W(pe),ye=z("Float64Array"),me=W(ye),{isInteger:be}=Number,Ae=be,we=z("Int16Array"),ve=W(we),Ce=z("Int32Array"),Ie=W(Ce),Oe=z("Int8Array"),Ee=W(Oe);function Fe(t){return!!t&&t instanceof Promise}function Se(t){return!!t&&(Fe(t)||kt(t)||Bt(t))}const{isSafeInteger:je}=Number,xe=je;const Me=z("Uint16Array"),Te=W(Me),Re=z("Uint32Array"),Be=W(Re),Ne=z("Uint8Array"),Le=W(Ne),$e=z("Uint8ClampedArray"),ke=W($e),De=z("WeakMap"),Ue=W(De),Pe=void 0!==globalThis.Deno,qe=void 0!==globalThis.process&&process.versions&&process.versions.node;function ze(t,n=!0){return Boolean(t)&&n}function We(t,n){return ge(V(t,n))}const _e=JSON;const He=_e.stringify;function Ve(t,n,e){const r=globalThis.options||e;let o;return Lt(r)?o=`${r.name} : ${r.constructor.name}`:r&&(o=`${r.title||r.method.name} -> ${r.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${He(t)}\n\t\tExpected: ${He(n)}`,r)}async function Ze(t,n,e){const r=await t;return!(Lt(n)&&!1===await n(r,e))&&!We(r,n)||Ve(r,n,e)}const Ke=globalThis.structuredClone;async function Ge(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r)){const r=await n(o,e,t);i(r)&&e.push(r)}return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){const c=await n(e,o,t);i(c)&&r(c)}return o}const s=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i(c)&&(s?o.set(e,c):o[e]=c)}return o}function Je(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){const c=n(e,r,t);i(c)&&o(c)}return r}const o=Lt(r.set);for(const[e,c]of t){const s=n(c,e,r,t);i(s)&&(o?r.set(e,s):r[e]=s)}return r}const Qe=Dt(u,f,wn,An,Je,Ge);function Xe(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){!0===n(e,r,t)&&o(e)}}else{const e=Lt(r.set);for(const[o,i]of t){!0===n(i,o,r,t)&&(e?r.set(o,i):r[o]=i)}}return r}async function Ye(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))!0===await n(o,e,t)&&e.push(o);return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){!0===await n(e,o,t)&&r(e)}}else{const e=Lt(o.set);for await(const[r,i]of t){!0===await n(i,r,o,t)&&(e?o.set(r,i):o[r]=i)}}return o}const tr=Dt(S,j,vn,Cn,Xe,Ye);function nr(t){return(...n)=>e=>{let r=e;return t(n,(t=>{r=t(r)})),r}}const er=nr(s),rr=nr(I);function or(t){return(...n)=>async e=>{let r=e;return await t(n,(async t=>{r=await t(r)})),r}}const ir=or(a),cr=or(O);const sr=wt(/\./);class ur{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const e=setInterval((()=>{t()}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const ar=w(ur);class fr{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,fr.models.set(t,n)):Ft(this,t)}}function lr(t){return new Promise(t)}class hr{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;jt(t,(n=>{t[n]=new hr(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,e)=>(console.log(t,n,t[n]),t[n]=new hr(e),!0)})}}class gr{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,e=this.totalActive===this.totalFree;n&&e&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const pr=w(gr);class dr{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function yr(t){return new dr(t)}function mr(t){return t?mr[t]:M(mr)}const br=globalThis.navigator?.userAgentData;if(br)jt(br,((t,n)=>{se(t)&&t&&(mr[n]=t)})),s(br.brands,(t=>{mr[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{mr[t]=!0}))}function Ar(t,n,e,r){return t.addEventListener(n,e,r),t}const wr=document.createDocumentFragment.bind(document);function vr(t,n){return t.appendChild(n),n}function Cr(t,n){return y(n)?xn(n,K(n,(n=>t.getAttribute(n)))):(jt(n,((n,e)=>{t.setAttribute(e,n)})),t)}const Ir=/^.[\w_-]+$/,Or=/^[A-Za-z]+$/,Er=/\s/,Fr=document.getElementsByClassName.bind(document),Sr=document.getElementsByTagName.bind(document),jr=document.getElementById.bind(document),xr=document.querySelector.bind(document),Mr=document.querySelectorAll.bind(document);const Tr=document.createElement.bind(document);function Rr(t){const n=sr(t)&&t||`${t}.js`;return(t=>lr((n=>{Ar(t,"load",n,!0),Ar(t,"error",n,!0),vr(xr("head"),t)})))(Cr(Tr("script"),{async:"",src:n}))}function Br(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&Ar(document,"DOMContentLoaded",t),!1)}Br((()=>{const t=jr("AcidLib");Rr(t&&t.getAttribute("data-index")||"/index")}));const Nr=location.protocol,Lr="http:"===Nr?"ws":"wss",$r=location.hostname,kr={hardware:{cores:navigator.hardwareConcurrency},host:{name:$r,protocol:Nr,protocolSocket:Lr}};function Dr(){Ft(kr,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function Ur(){Dr()}Br(Ur),Ar(window,"load",Ur,!0),Ar(window,"resize",Ur,!0),t.hasLocal=void 0,function(n){try{n().removeItem("TESTING"),t.hasLocal=!0}catch(n){t.hasLocal=!1}}((()=>localStorage));class Pr{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=yr(t)}hasLocal=t.hasLocal;setItem(t,n){return this.hasLocal&&this.local.setItem(t,mt(n)?n:He(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return i(n)?n:!i(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}const qr=(t,n)=>`color:${t};background:${n};`,zr={alert:qr("#fff","#f44336"),important:qr("#fff","#E91E63"),notify:qr("#fff","#651FFF"),warning:qr("#000","#FFEA00")};t.Chain=Pt,t.Crate=Pr,t.Intervals=ur,t.Model=fr,t.Store=hr,t.Timers=Ht,t.UniqID=gr,t.VirtualStorage=dr,t.add=function(t,n){return t+n},t.after=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r<=0&&(e=n(...t),r=null),e)},t.append=vr,t.apply=Gt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const e={};return s(t,((t,r)=>{e[n[r]]=t})),e},t.ary=function(t,n){return(...e)=>t(...e.splice(0,n))},t.assert=function(t,n,e){return Se(t)||Se(n)?Ze(t,n,e):!(Lt(n)&&!1===n(t,e))&&!We(t,n)||Ve(t,n,e)},t.assertAsync=Ze,t.assign=Ft,t.before=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r>=1?e=n(...t):r=null,e)},t.bindAll=function(t,n,e){const r=en(t,(t=>Lt(t)?t.bind(n):t));return e?Ft(e,r):r},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Mn," ").trim().split(" ").forEach(((t,e)=>{n+=0===e?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Pt,[t])},t.chunk=function(t,n=1){const e=[];let r=0;return t.forEach(((t,o)=>{o%n||(e.push([]),o&&r++),e[r].push(t)})),e},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(H(t))return ut(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=ut,t.clearIntervals=function(){_t(setTimeout(Wt,0),(t=>{ar.remove(t)}))},t.clearTimers=function(){_t(setTimeout(Wt,0),(t=>{Vt.remove(t)}))},t.clone=function(t){return Ke(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.cnsl=(t,n)=>{const e=mt(t)?t:He(t);if("alert"===n||"warning"===n)return console.trace(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},t.cnslTheme=(t,n,e)=>{zr[t]=qr(n,e)},t.compact=function(t){if(D(t)){const n=M(t),e=n.length,r={};for(let o=0;oze(t)))},t.compactKeys=function(t){const n=[];return jt(t,((t,e)=>{i(t)&&n.push(e)})),n},t.compactMap=Qe,t.compactMapArray=u,t.compactMapAsyncArray=f,t.compactMapAsyncObject=An,t.compactMapObject=wn,t.concurrent=function(t,n,e){const r=t.length,o=[];for(let i=0;i{r=n(t),e[r]||(e[r]=0),e[r]++})),e},t.countKey=function(t,n){let e=0;return s(t,(t=>{t[n]&&e++})),e},t.countWithoutKey=function(t,n){let e=0;return s(t,(t=>{t[n]||e++})),e},t.crate=function(t){return new Pr(t)},t.createFragment=wr,t.curry=function(t,e=t.length){const r=[],o=(...i)=>{if(r.push(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.curryRight=function(t,e=t.length){const r=[],o=(...i)=>{if(r.unshift(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.debounce=function(t,n){function e(...t){e.id!==zt&&Vt.remove(e.id),e.id=Zt((()=>{e.callable(...t),e.id=zt}),n)}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{e.id!==zt&&(Vt.remove(e.id),e.id=zt)},e},t.deduct=function(t){return t-1},t.defProp=gn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,e=t.length)=>C(t,0,e-n),t.each=Ut,t.eachArray=s,t.eachAsyncArray=a,t.eachAsyncObject=St,t.eachObject=jt,t.eachRight=I,t.eachRightAsync=O,t.ensureArray=m,t.ensureBuffer=function(t){return H(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=En,t.eventAdd=Ar,t.eventRemove=function(t,n,e,r){return t.removeEventListener(n,e,r),t},t.every=un,t.everyArg=function(...t){return kt(t[0])?async function(...n){return un(t,(async t=>un(n,(async n=>t(n)))))}:function(...n){return un(t,(t=>un(n,(n=>t(n)))))}},t.everyArray=E,t.everyAsyncArray=F,t.everyAsyncObject=rn,t.everyObject=on,t.falsy=zt,t.filter=tr,t.filterArray=S,t.filterAsyncArray=j,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,e="id"){const r=t.findIndex(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.findIndexCache=at,t.findItem=function(t,n,e="id"){const r=t.find(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let e=t;for(let t=0;tt.concat(m(n))),[]);return e},t.flattenDeep=b,t.flow=er,t.flowAsync=ir,t.flowAsyncRight=cr,t.flowRight=rr,t.forEach=d,t.forEachAsync=async function(t,n){const e=[],r=[];let o=0;t.forEach(((t,n)=>{e[o]=t,r[o]=t,o++}));for(let t=0;t{const r=n(t,e);o(r)}))}else Lt(e.set)?t.forEach(((t,r)=>{const o=n(t,r,e);e.set(r,o)})):t.forEach(((t,r)=>{const o=n(t,r,e);e[r]=o}));return e},t.forOf=Tt,t.forOfAsync=Nt,t.forOfCompactMap=Je,t.forOfCompactMapAsync=Ge,t.forOfEvery=cn,t.forOfEveryAsync=sn,t.forOfFilter=Xe,t.forOfFilterAsync=Ye,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=Dt,t.get=L,t.getByClass=Fr,t.getById=jr,t.getByTag=Sr,t.getEntries=function(t){if(i(t))return bn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return pt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let e=0;return E(t,((t,r)=>(e=r,n>=t&&(e=r+1,!0)))),e},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Qn,t.groupBy=function(t,n){const e={};return s(t,(t=>{const r=n(t);e[r]||(e[r]=[]),e[r].push(t)})),e},t.has=function t(n,e,r){if(Xn(n)||Xn(e))return!1;if(mt(n))return mt(e)?n.includes(e,r):On(e)?e.test(n):Lt(e)?Boolean(e(n)):un(e,(e=>Boolean(t(n,e))));if(y(n)){if(mt(e))return n.includes(e,r);if(On(e))return un(n,(t=>t.test(e)));if(y(e))return un(e,(e=>Boolean(t(n,e))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}})))},t.hasDot=sr,t.hasKeys=k,t.hasLength=r,t.hasProp=pn,t.hasValue=i,t.htmlEntities=_n,t.ifInvoke=function(t,...n){if(Lt(t))return t(...n)},t.ifNotAssign=(t,n,e)=>(n&&!i(t[n])&&(t[n]=e),t),t.ifValue=function(t,n,e,r){if(i(t)){if(Lt(n))return e?Gt(n,e,r):n(...r);if(D(n))return n[e]=t,n}},t.importjs=Rr,t.inAsync=async function(t,n){const e=t.length;for(let r=0;rUt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const e={};return s(t,(t=>{e[t[n]]=t})),e},t.info=kr,t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,e){return t.slice(0,n)+e+t.slice(n,t.length)},t.intersection=function(t,...n){return u(t,(t=>{if(E(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return ar.set(t,n)},t.intervals=ar,t.invert=function(t,n={}){if(t)return jt(t,((t,e)=>{n[t]=e})),n},t.invoke=function(t,n,e){return K(t,((t,r)=>t[n](e,r)))},t.invokeAsync=function(t,n,e){return G(t,(async(t,r)=>t[n](e,r)))},t.isAgent=mr,t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=y,t.isArrayBuffer=ae,t.isArrayBufferCall=ue,t.isArrayLike=function(t,n){if(Xn(t)||Lt(t))return!1;if(y(t)||re(t))return!0;const e=t.length;if(!Xn(e)||!yt(e)||e<0)return!1;if(n){const n=M(t);return!!n&&un(n,((t,n)=>n>=0&&yt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=$t,t.isBigInt=ie,t.isBigIntCall=oe,t.isBoolean=se,t.isBooleanCall=ce,t.isBuffer=H,t.isBufferCall=_,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return fe.test(n)}return!1},t.isConstructor=U,t.isConstructorFactory=P,t.isConstructorNameFactory=z,t.isDate=he,t.isDateCall=le,t.isDeno=Pe,t.isDocumentReady=Br,t.isDom=function(t){return t&&9!==t.nodeType},t.isEmpty=function(t){return mt(t)||y(t)?!r(t):D(t)?!jn(t):!i(t)},t.isEnter=function(t){return 13===t.keyCode},t.isEqual=V,t.isF32=de,t.isF32Call=pe,t.isF64=me,t.isF64Call=ye,t.isFalse=ge,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=It,t.isFileJSON=Ot,t.isFloat=Ae,t.isFunction=Lt,t.isGenerator=Bt,t.isGeneratorCall=Rt,t.isHTMLCollection=function(t){return!!i(t)&&"[object HTMLCollection]"===t.toString()},t.isI16=ve,t.isI16Call=we,t.isI32=Ie,t.isI32Call=Ce,t.isI8=Ee,t.isI8Call=Oe,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Se,t.isMap=te,t.isMapCall=Yn,t.isMatchArray=function(t,n){return t.length===n.length&&E(t,((t,e)=>V(n[e],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const e=M(t),r=M(n);return e.length===r.length&&E(e,(e=>t[e]===n[e]))},t.isNegative=h,t.isNodeList=function(t){return!!i(t)&&"[object NodeList]"===t.toString()},t.isNodejs=qe,t.isNotArray=function(t){return!y(t)},t.isNotNumber=function(t){return!yt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=yt,t.isNumberCall=dt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,e){return t>n&&te},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=D,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Fe,t.isRegex=On,t.isRegexCall=In,t.isRelated=function(t,n){return!Xn(t)&&!Xn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xe,t.isSame=dn,t.isSameType=function(t,n){const e=Xt(t),r=Xt(n);return e===r&&e.name===r.name},t.isSet=Mt,t.isSetCall=xt,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=ze,t.isTypeFactory=W,t.isTypedArray=re,t.isU16=Te,t.isU16Call=Me,t.isU32=Be,t.isU32Call=Re,t.isU8=Le,t.isU8C=ke,t.isU8CCall=$e,t.isU8Call=Ne,t.isUndefined=e,t.isWeakMap=Ue,t.isWeakMapCall=De,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return _e.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Tn," ").trim().toLowerCase().replace(Rn,"-")},t.keys=M,t.largest=function(t){return Z(...t)},t.last=function(t,n){const e=t.length;return n?t.slice(e-n,e):t[e-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=en,t.mapArray=K,t.mapAsyncArray=G,t.mapAsyncObject=Jt,t.mapObject=Qt,t.mapRightArray=function(t,n,e=[],r){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)e[o]=n(t[c],c,t,i,r),o++;return e},t.mapWhile=function(t,n,e=[],r){const o=t.length;for(let i=0;i{Ut(e,((e,r)=>{if(n[r]&&(D(e)||y(e)||e.forEach))return t(n[r],e);n[r]=e}))})),n},t.model=function(t,n){return i(n)?w(fr,[t,n]):L(t,fr.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Xn,t.nodeAttribute=Cr,t.noop=Wt,t.notEqual=We,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Et,t.objectEntries=bn,t.objectSize=jn,t.omit=function(t,n){if(t){if(y(n)){const e=Sn(n);return vn(t,((t,n)=>!e.test(n)))}if(On(n))return vn(t,((t,e)=>!n.test(e)));if(mt(n))return vn(t,((t,e)=>e!==n));if(yt(n)){const e=n.toString();return vn(t,((t,n)=>n!==e))}return Lt(n)?vn(t,((t,e)=>!n(t,e))):void 0}},t.once=t=>{let n;return(...e)=>(i(n)||(n=t(...e)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>en(t,(t=>t(...n)))},t.overEvery=function(t){return n=>un(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const e=[];return[u(t,((t,r)=>{if(n(t,r))return t;e.push(t)})),e]},t.pick=(t,n,e={})=>{if(t)return s(n,(n=>{e[n]=t[n]})),e},t.pluck=function(t,n){return K(t,(t=>bt(t,n)))},t.pluckObject=bt,t.promise=lr,t.propertyMatch=(t,n,e=M(t))=>E(e,(e=>V(t[e],n[e]))),t.querySelector=xr,t.querySelectorAll=Mr,t.randomFloat=function(t,n=0){return yn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,e=1,r=[]){return h(e)?r:tt(...n.map((t=>e[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let e=t.length;for(let r=0;re)return rt(t);if(1===n)return[t[tt(e-1,0)]];const r=[],o={};let i,c=0;for(;cht(t,r,n,e)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",e){return t.sort(((t,r)=>At(t,r,n,e)))},t.sortCollectionAscending=pt,t.sortCollectionAscendingFilter=gt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(J)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=At,t.sortUnique=ct,t.stringify=He,t.stubArray=()=>[],t.stubFalse=()=>zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=J,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const e=t.length;return t.slice(e-n,e)},t.themes=zr,t.throttle=function(t,n){function e(...t){e.id?e.shouldThrottle=qt:(e.callable(...t),e.id=Zt((()=>{e.shouldThrottle&&e.callable(...t),e.id=zt}),n))}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{Vt.remove(e.id),e.id=zt},e},t.timer=Zt,t.timers=Vt,t.times=_t,t.timesAsync=async function(t,n){for(let e=0;en?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=e-n;for(;c=0&&(i=r[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,e):t},t.truncateRight=function(t,n){const e=t.length;return e>n?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=n;for(;c0&&(i=r[c]," "!==i);c++);return t.substring(c,e).trim()})(t,n,e):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.unZipObject=t=>{const n=[],e=[];return jt(t,((t,r)=>{n.push(r),e.push(t)})),[n,e]},t.union=function(...t){return st(b(t))},t.uniqID=pr,t.unique=st,t.untilFalseArray=function(t,n){const e=t.length;for(let r=0;rGn(t)))},t.upperFirstLetter=Kn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(Zn,(t=>Jn(t)))},t.virtualStorage=yr,t.whileCompactMap=function(t,n,e=[],r){let o=0;for(;o!e.has(t)))},t.words=function(t){return t.match(Vn)||[]},t.wrap=function(t,n){return(...e)=>n(t,...e)},t.xor=function(...t){const n=w(Map),e=[];return 2===t.length?v(t[0],t[1]):(s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&e.push(t.child)})),e)},t.zip=function(...t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.zipObject=xn})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function e(t){return void 0===t}function r(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!e(t)&&!o(t)}function c(t){return t}function s(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const a=n.call(r,t,c,e,s,u,o);i(a)&&e.push(a)})):s(t,((t,c,s,u)=>{const a=n(t,c,e,s,u,r,o);i(a)&&e.push(a)})),e}async function a(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const c=await n(t,r,e,o);i(c)&&e.push(c)})),e}const{sign:l}=Math;function h(t){return-1===l(t)}function g(t,n,e,r){let o=t;for(;on;)r.push(o),o-=e;return r}function d(t,n){return t.forEach(n),t}const y=Array.isArray;function m(t){return y(t)&&t||i(t)&&[t]||[]}function b(t){return t.flat(1/0)}const A=Reflect.construct;function w(t,n=[],e){const r=y(n)?n:[n];return e?A(t,r,e):A(t,r)}function v(...t){const n=w(Map),e=[];return s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&0===t.parentIndex&&e.push(t.child)})),e}function C(t,n=1,e=t.length){return t.splice(n,e)}function I(t,n,e){if(!t)return;const r=t.length;for(let o=r-1;o>=0;o--)n(t[o],o,t,r,e);return t}async function O(t,n){if(!t)return;const e=t.length;for(let r=e-1;r>=0;r--)await n(t[r],r,t,e);return t}function E(t,n,e){if(!t)return;const r=t.length;for(let o=0;o{!0===n(t,o,e,i,c,r)&&e.push(t)})),e}async function j(t,n,e=[],r){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,e,i,c,r)&&e.push(t)})),e}const x=Object.keys;function M(t){if(t)return x(t)}const T=/\.|\[/,R=/]/g,B="";function N(t){return t.replace(R,B).split(T)}function L(t,n){if(!n)return!1;let e=n;return E(y(t)?t:N(t),(t=>(e=e[t],i(e)))),e}const $=Object.hasOwn;function k(t,...n){if(t)return E(n,(n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}}))}const D=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function U(t,n){return t?.constructor===n||!1}function P(t){return n=>U(n,t)}function q(t){return t?.constructor?.name}function z(t){return n=>q(n)===t||!1}function W(t){return function(n,...e){return e?t(n)&&E(e,t):t(n)}}const _=z("Buffer"),H=W(_),V=(t,n)=>{if(t===n)return!0;if(H(t))return t.equals(n);if(t.toString()===n.toString())if(D(t)){const e=M(t);if(k(n,e))return E(e,(e=>V(t[e],n[e])))}else if(y(t)&&t.length===n.length)return E(t,((t,e)=>V(t,n[e])));return!1};const Z=Math.max;function K(t,n,e=[],r,o){return i(r)?s(t,((t,i,c,s)=>{e[i]=n.call(r,t,i,e,c,s,o)})):s(t,((t,r,i,c)=>{e[r]=n(t,r,e,i,c,o)})),e}async function G(t,n){const e=[];return await a(t,(async(t,r,o)=>{e[r]=await n(t,r,o)})),e}function J(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function et(t,n,e){if(i(t))return nt(t,n,e)}function rt(t,n=t.length){if(t.length<=1)return et(t);const e=et(t);let r,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",e){return t.sort(((t,r)=>ft(t,r,n,e)))}function ht(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):o.localeCompare(i)}function gt(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i?o?oi?1:0:-1:1}function pt(t,n="id",e){return t.sort(((t,r)=>gt(t,r,n,e)))}const dt=z("Number"),yt=W(dt);const mt=P(String);function bt(t,n){if(t)return mt(n)?t[n]:K(n,(n=>t[n]))}function At(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),It=wt(/\.js$/),Ot=wt(/\.json$/);const Et=Object.assign;function Ft(t,...n){if(i(t))return Et(t,...n)}const St=async(t,n,e,r)=>{if(!t)return;const o=M(t);return i(e)?await a(o,((i,c,s,u)=>n.call(e,t[i],i,t,u,o,r))):await a(o,((e,i,c,s)=>n(t[e],e,t,s,o,r))),t};function jt(t,n,e,r){if(!t)return;const o=M(t);return i(e)?s(o,((o,i,c,s)=>{n.call(e,t[o],o,t,s,c,r)})):s(o,((e,o,i,c)=>{n(t[e],e,t,c,i,r)})),t}const xt=z("Set"),Mt=W(xt);function Tt(t,n){if(Mt(t)){for(const e of t)n(e,t);return t}for(const[e,r]of t)n(r,e,t);return t}const Rt=z("GeneratorFunction"),Bt=W(Rt);async function Nt(t,n,e){if(Mt(t)){for(const e of t)await n(e,t);return t}if(Bt(t))for await(const r of t(...e))await n(r,t);for(const[e,r]of t)await n(r,e,t);return t}const Lt=t=>!!i(t)&&t instanceof Function,$t=z("AsyncFunction"),kt=W($t);function Dt(t,n,e,r,o,c){return(s,u,a,f,l)=>{let h;const g=kt(u);if(i(s)&&u)return h=y(s)?g?n:t:D(s)||Lt(s)?g?r:e:o?g?c:o:Bt(s)?c:g?r:e,h(s,u,a,f,l)}}const Ut=Dt(s,a,jt,St,Tt,Nt);class Pt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Ut(t,((t,e)=>{n[e]=function(...e){return this.value=t.call(n,n.value,...e),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,zt=!1,Wt=()=>{};function _t(t,n){for(let e=0;e{t(),e.remove(r)}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Vt=w(Ht);function Zt(t,n){return Vt.set(t,n)}const Kt=Reflect.apply;function Gt(t,n,e){if(Lt(t))return Kt(t,n,e)}async function Jt(t,n,e={}){if(t)return await St(t,(async(t,r,o,i,c)=>{e[r]=await n(t,r,e,o,i,c)})),e}function Qt(t,n,e={},r,o){if(t)return i(r)?jt(t,((t,i,c,s,u)=>{e[i]=n.call(r,t,i,e,c,s,u,o)})):jt(t,((t,r,i,c,s)=>{e[r]=n(t,r,e,i,c,s,o)})),e}function Xt(t){return t?.constructor}function Yt(t,n=[]){const e=Xt(t);return e===Function&&"function"===e.name?function(){}:w(e,n)}function tn(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){o(n(e,r,t))}return r}const o=Lt(r.set);for(const[e,i]of t){const c=n(i,e,r,t);o?r.set(e,c):r[e]=c}return r}async function nn(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))e.push(await n(o,e,t));return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){r(await n(e,o,t))}return o}const i=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i?o.set(e,c):o[e]=c}return o}const en=Dt(K,G,Qt,Jt,tn,nn);async function rn(t,n){if(!t)return;return F(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function on(t,n){if(!t)return;return E(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function cn(t,n=c){if(y(t)||Mt(t))for(const e of t){if(!1===n(e,t))return!1}else for(const[e,r]of t){if(!1===n(r,e,t))return!1}return!0}async function sn(t,n=c,e){if(Bt(t))for await(const r of t(...e)){if(!1===await n(r,t))return!1}else if(y(t)||Mt(t))for(const e of t){if(!1===await n(e,t))return!1}else for(const[e,r]of t){if(!1===await n(r,e,t))return!1}return!0}const un=Dt(E,F,on,rn,cn,sn);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,gn=Object.defineProperty,pn=fn(Object.hasOwnProperty),dn=Object.is;const{random:yn}=Math;const{sign:mn}=Math;const bn=Object.entries;async function An(t,n=c,e={}){return await St(t,(async(t,r,o,c,s)=>{const u=await n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function wn(t,n=c,e={}){return jt(t,((t,r,o,c,s)=>{const u=n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function vn(t,n,e={}){return jt(t,((t,r,o,i,c)=>{!0===n(t,r,e,o,i,c)&&(e[r]=t)})),e}async function Cn(t,n,e={}){return await St(t,(async(t,r,o,i,c)=>{!0===await n(t,r,e,o,i,c)&&(e[r]=t)})),e}const In=z("RegExp"),On=W(In),En=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(En,"\\$&")}function Sn(t,n){return n?Sn(K(t,Fn)):RegExp(t.join("|"))}function jn(t){if(t)return M(t).length}const xn=(t,n)=>{const e={};return s(t,((t,r)=>{e[t]=n[r]})),e},Mn=/[ _-]+/g;const Tn=/[ _-]+/g,Rn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Ln=/[ _-]+/g;const $n=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Dn=/%(?![\da-f]{2})/gi,Un=/&/g,Pn=//g,zn=/"/g;function Wn(t){return decodeURIComponent(t.replace(Dn,(()=>"%25")))}function _n(t){return t.replace(Un,"&").replace(Pn,"<").replace(qn,">").replace(zn,""")}const Hn=/\S+/g,Vn=/\w+/g;const Zn=/\w+/g;function Kn(t){return t[0].toUpperCase()}function Gn(t){return Kn(t)+kn(t)}function Jn(t){return Kn(t)+kn(t).toLowerCase()}function Qn(t){return Xt(t)?.name}function Xn(t){return!i(t)}const Yn=z("Map"),te=W(Yn),ne=/Array/,ee="Array";function re(t){if(t){const n=Qn(t);if(ne.test(n)&&n!==ee)return!0}return!1}const oe=z("BigInt"),ie=W(oe),ce=z("Boolean"),se=W(ce),ue=z("ArrayBuffer"),ae=W(ue);const fe=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const le=z("Date"),he=W(le);function ge(t){return!1===t}const pe=z("Float32Array"),de=W(pe),ye=z("Float64Array"),me=W(ye),{isInteger:be}=Number,Ae=be,we=z("Int16Array"),ve=W(we),Ce=z("Int32Array"),Ie=W(Ce),Oe=z("Int8Array"),Ee=W(Oe);function Fe(t){return!!t&&t instanceof Promise}function Se(t){return!!t&&(Fe(t)||kt(t)||Bt(t))}const{isSafeInteger:je}=Number,xe=je;const Me=z("Uint16Array"),Te=W(Me),Re=z("Uint32Array"),Be=W(Re),Ne=z("Uint8Array"),Le=W(Ne),$e=z("Uint8ClampedArray"),ke=W($e),De=z("WeakMap"),Ue=W(De),Pe=void 0!==globalThis.Deno,qe=void 0!==globalThis.process&&process.versions&&process.versions.node;function ze(t,n=!0){return Boolean(t)&&n}function We(t,n){return ge(V(t,n))}const _e=JSON;const He=_e.stringify;function Ve(t,n,e){const r=globalThis.options||e;let o;return Lt(r)?o=`${r.name} : ${r.constructor.name}`:r&&(o=`${r.title||r.method.name} -> ${r.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${He(t)}\n\t\tExpected: ${He(n)}`,r)}async function Ze(t,n,e){const r=await t;return!(Lt(n)&&!1===await n(r,e))&&!We(r,n)||Ve(r,n,e)}const Ke=globalThis.structuredClone;async function Ge(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r)){const r=await n(o,e,t);i(r)&&e.push(r)}return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){const c=await n(e,o,t);i(c)&&r(c)}return o}const s=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i(c)&&(s?o.set(e,c):o[e]=c)}return o}function Je(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){const c=n(e,r,t);i(c)&&o(c)}return r}const o=Lt(r.set);for(const[e,c]of t){const s=n(c,e,r,t);i(s)&&(o?r.set(e,s):r[e]=s)}return r}const Qe=Dt(u,f,wn,An,Je,Ge);function Xe(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){!0===n(e,r,t)&&o(e)}}else{const e=Lt(r.set);for(const[o,i]of t){!0===n(i,o,r,t)&&(e?r.set(o,i):r[o]=i)}}return r}async function Ye(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))!0===await n(o,e,t)&&e.push(o);return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){!0===await n(e,o,t)&&r(e)}}else{const e=Lt(o.set);for await(const[r,i]of t){!0===await n(i,r,o,t)&&(e?o.set(r,i):o[r]=i)}}return o}const tr=Dt(S,j,vn,Cn,Xe,Ye);function nr(t){return(...n)=>e=>{let r=e;return t(n,(t=>{r=t(r)})),r}}const er=nr(s),rr=nr(I);function or(t){return(...n)=>async e=>{let r=e;return await t(n,(async t=>{r=await t(r)})),r}}const ir=or(a),cr=or(O);const sr=wt(/\./);class ur{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const e=setInterval((()=>{t()}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const ar=w(ur);class fr{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,fr.models.set(t,n)):Ft(this,t)}}function lr(t){return new Promise(t)}class hr{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;jt(t,(n=>{t[n]=new hr(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,e)=>(console.log(t,n,t[n]),t[n]=new hr(e),!0)})}}class gr{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,e=this.totalActive===this.totalFree;n&&e&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const pr=w(gr);class dr{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function yr(t){return new dr(t)}function mr(t){return t?mr[t]:M(mr)}const br=globalThis.navigator?.userAgentData;if(br)jt(br,((t,n)=>{se(t)&&t&&(mr[n]=t)})),s(br.brands,(t=>{mr[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{mr[t]=!0}))}function Ar(t,n,e,r){return t.addEventListener(n,e,r),t}const wr=document.createDocumentFragment.bind(document);function vr(t,n){return t.appendChild(n),n}function Cr(t,n){return y(n)?xn(n,K(n,(n=>t.getAttribute(n)))):(jt(n,((n,e)=>{t.setAttribute(e,n)})),t)}const Ir=/^.[\w_-]+$/,Or=/^[A-Za-z]+$/,Er=/\s/,Fr=document.getElementsByClassName.bind(document),Sr=document.getElementsByTagName.bind(document),jr=document.getElementById.bind(document),xr=document.querySelector.bind(document),Mr=document.querySelectorAll.bind(document);const Tr=document.createElement.bind(document);function Rr(t){const n=sr(t)&&t||`${t}.js`;return(t=>lr((n=>{Ar(t,"load",n,!0),Ar(t,"error",n,!0),vr(xr("head"),t)})))(Cr(Tr("script"),{async:"",src:n}))}function Br(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&Ar(document,"DOMContentLoaded",t),!1)}Br((()=>{const t=jr("AcidLib");Rr(t&&t.getAttribute("data-index")||"/index")}));const Nr=location.protocol,Lr="http:"===Nr?"ws":"wss",$r=location.hostname,kr={hardware:{cores:navigator.hardwareConcurrency},host:{name:$r,protocol:Nr,protocolSocket:Lr}};function Dr(){Ft(kr,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function Ur(){Dr()}Br(Ur),Ar(window,"load",Ur,!0),Ar(window,"resize",Ur,!0),t.hasLocal=void 0,function(n){try{n().removeItem("TESTING"),t.hasLocal=!0}catch(n){t.hasLocal=!1}}((()=>localStorage));class Pr{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=yr(t)}hasLocal=t.hasLocal;setItem(t,n){return this.hasLocal&&this.local.setItem(t,mt(n)?n:He(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return i(n)?n:!i(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}const qr=(t,n)=>`color:${t};background:${n};`,zr={alert:qr("#fff","#f44336"),important:qr("#fff","#E91E63"),notify:qr("#fff","#651FFF"),warning:qr("#000","#FFEA00")};t.Chain=Pt,t.Crate=Pr,t.Intervals=ur,t.Model=fr,t.Store=hr,t.Timers=Ht,t.UniqID=gr,t.VirtualStorage=dr,t.add=function(t,n){return t+n},t.after=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r<=0&&(e=n(...t),r=null),e)},t.append=vr,t.apply=Gt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const e={};return s(t,((t,r)=>{e[n[r]]=t})),e},t.ary=function(t,n){return(...e)=>t(...e.splice(0,n))},t.assert=function(t,n,e){return Se(t)||Se(n)?Ze(t,n,e):!(Lt(n)&&!1===n(t,e))&&!We(t,n)||Ve(t,n,e)},t.assertAsync=Ze,t.assign=Ft,t.before=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r>=1?e=n(...t):r=null,e)},t.bindAll=function(t,n,e){const r=en(t,(t=>Lt(t)?t.bind(n):t));return e?Ft(e,r):r},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Mn," ").trim().split(" ").forEach(((t,e)=>{n+=0===e?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Pt,[t])},t.chunk=function(t,n=1){const e=[];let r=0;return t.forEach(((t,o)=>{o%n||(e.push([]),o&&r++),e[r].push(t)})),e},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(H(t))return ut(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=ut,t.clearIntervals=function(){_t(setTimeout(Wt,0),(t=>{ar.remove(t)}))},t.clearTimers=function(){_t(setTimeout(Wt,0),(t=>{Vt.remove(t)}))},t.clone=function(t){return Ke(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.cnsl=(t,n)=>{const e=mt(t)?t:He(t);if("alert"===n||"warning"===n)return console.trace(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},t.cnslTheme=(t,n,e)=>{zr[t]=qr(n,e)},t.compact=function(t){if(D(t)){const n=M(t),e=n.length,r={};for(let o=0;oze(t)))},t.compactKeys=function(t){const n=[];return jt(t,((t,e)=>{i(t)&&n.push(e)})),n},t.compactMap=Qe,t.compactMapArray=u,t.compactMapAsyncArray=f,t.compactMapAsyncObject=An,t.compactMapObject=wn,t.concurrent=function(t,n,e){const r=t.length,o=[];for(let i=0;i{r=n(t),e[r]||(e[r]=0),e[r]++})),e},t.countKey=function(t,n){let e=0;return s(t,(t=>{t[n]&&e++})),e},t.countWithoutKey=function(t,n){let e=0;return s(t,(t=>{t[n]||e++})),e},t.crate=function(t){return new Pr(t)},t.createFragment=wr,t.curry=function(t,e=t.length){const r=[],o=(...i)=>{if(r.push(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.curryRight=function(t,e=t.length){const r=[],o=(...i)=>{if(r.unshift(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.debounce=function(t,n){function e(...t){e.id!==zt&&Vt.remove(e.id),e.id=Zt((()=>{e.callable(...t),e.id=zt}),n)}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{e.id!==zt&&(Vt.remove(e.id),e.id=zt)},e},t.deduct=function(t){return t-1},t.defProp=gn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,e=t.length)=>C(t,0,e-n),t.each=Ut,t.eachArray=s,t.eachAsyncArray=a,t.eachAsyncObject=St,t.eachObject=jt,t.eachRight=I,t.eachRightAsync=O,t.ensureArray=m,t.ensureBuffer=function(t){return H(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=En,t.eventAdd=Ar,t.eventRemove=function(t,n,e,r){return t.removeEventListener(n,e,r),t},t.every=un,t.everyArg=function(...t){return kt(t[0])?async function(...n){return un(t,(async t=>un(n,(async n=>t(n)))))}:function(...n){return un(t,(t=>un(n,(n=>t(n)))))}},t.everyArray=E,t.everyAsyncArray=F,t.everyAsyncObject=rn,t.everyObject=on,t.falsy=zt,t.filter=tr,t.filterArray=S,t.filterAsyncArray=j,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,e="id"){const r=t.findIndex(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.findIndexCache=at,t.findItem=function(t,n,e="id"){const r=t.find(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let e=t;for(let t=0;tt.concat(m(n))),[]);return e},t.flattenDeep=b,t.flow=er,t.flowAsync=ir,t.flowAsyncRight=cr,t.flowRight=rr,t.forEach=d,t.forEachAsync=async function(t,n){const e=[],r=[];let o=0;t.forEach(((t,n)=>{e[o]=t,r[o]=t,o++}));for(let t=0;t{const r=n(t,e);o(r)}))}else Lt(e.set)?t.forEach(((t,r)=>{const o=n(t,r,e);e.set(r,o)})):t.forEach(((t,r)=>{const o=n(t,r,e);e[r]=o}));return e},t.forOf=Tt,t.forOfAsync=Nt,t.forOfCompactMap=Je,t.forOfCompactMapAsync=Ge,t.forOfEvery=cn,t.forOfEveryAsync=sn,t.forOfFilter=Xe,t.forOfFilterAsync=Ye,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=Dt,t.get=L,t.getByClass=Fr,t.getById=jr,t.getByTag=Sr,t.getEntries=function(t){if(i(t))return bn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return pt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let e=0;return E(t,((t,r)=>(e=r,n>=t&&(e=r+1,!0)))),e},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Qn,t.groupBy=function(t,n){const e={};return s(t,(t=>{const r=n(t);e[r]||(e[r]=[]),e[r].push(t)})),e},t.has=function t(n,e,r){if(Xn(n)||Xn(e))return!1;if(mt(n))return mt(e)?n.includes(e,r):On(e)?e.test(n):Lt(e)?Boolean(e(n)):un(e,(e=>Boolean(t(n,e))));if(y(n)){if(mt(e))return n.includes(e,r);if(On(e))return un(n,(t=>t.test(e)));if(y(e))return un(e,(e=>Boolean(t(n,e))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}})))},t.hasDot=sr,t.hasKeys=k,t.hasLength=r,t.hasProp=pn,t.hasValue=i,t.htmlEntities=_n,t.ifInvoke=function(t,...n){if(Lt(t))return t(...n)},t.ifNotAssign=(t,n,e)=>(n&&!i(t[n])&&(t[n]=e),t),t.ifValue=function(t,n,e,r){if(i(t)){if(Lt(n))return e?Gt(n,e,r):n(...r);if(D(n))return n[e]=t,n}},t.importjs=Rr,t.inAsync=async function(t,n){const e=t.length;for(let r=0;rUt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const e={};return s(t,(t=>{e[t[n]]=t})),e},t.info=kr,t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,e){return t.slice(0,n)+e+t.slice(n,t.length)},t.intersection=function(t,...n){return u(t,(t=>{if(E(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return ar.set(t,n)},t.intervals=ar,t.invert=function(t,n={}){if(t)return jt(t,((t,e)=>{n[t]=e})),n},t.invokeArray=function(t,n,e){if(!t)return;const r=t.length;if(i(e))for(let o=0;ot[n].call(r,e):(t,r)=>t[n](e))},t.invokeCollectionAsync=function(t,n,e,r){return G(t,r?t=>t[n].call(r,e):async t=>t[n](e))},t.isAgent=mr,t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=y,t.isArrayBuffer=ae,t.isArrayBufferCall=ue,t.isArrayLike=function(t,n){if(Xn(t)||Lt(t))return!1;if(y(t)||re(t))return!0;const e=t.length;if(!Xn(e)||!yt(e)||e<0)return!1;if(n){const n=M(t);return!!n&&un(n,((t,n)=>n>=0&&yt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=$t,t.isBigInt=ie,t.isBigIntCall=oe,t.isBoolean=se,t.isBooleanCall=ce,t.isBuffer=H,t.isBufferCall=_,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return fe.test(n)}return!1},t.isConstructor=U,t.isConstructorFactory=P,t.isConstructorNameFactory=z,t.isDate=he,t.isDateCall=le,t.isDeno=Pe,t.isDocumentReady=Br,t.isDom=function(t){return t&&9!==t.nodeType},t.isEmpty=function(t){return mt(t)||y(t)?!r(t):D(t)?!jn(t):!i(t)},t.isEnter=function(t){return 13===t.keyCode},t.isEqual=V,t.isF32=de,t.isF32Call=pe,t.isF64=me,t.isF64Call=ye,t.isFalse=ge,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=It,t.isFileJSON=Ot,t.isFloat=Ae,t.isFunction=Lt,t.isGenerator=Bt,t.isGeneratorCall=Rt,t.isHTMLCollection=function(t){return!!i(t)&&"[object HTMLCollection]"===t.toString()},t.isI16=ve,t.isI16Call=we,t.isI32=Ie,t.isI32Call=Ce,t.isI8=Ee,t.isI8Call=Oe,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Se,t.isMap=te,t.isMapCall=Yn,t.isMatchArray=function(t,n){return t.length===n.length&&E(t,((t,e)=>V(n[e],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const e=M(t),r=M(n);return e.length===r.length&&E(e,(e=>t[e]===n[e]))},t.isNegative=h,t.isNodeList=function(t){return!!i(t)&&"[object NodeList]"===t.toString()},t.isNodejs=qe,t.isNotArray=function(t){return!y(t)},t.isNotNumber=function(t){return!yt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=yt,t.isNumberCall=dt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,e){return t>n&&te},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=D,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Fe,t.isRegex=On,t.isRegexCall=In,t.isRelated=function(t,n){return!Xn(t)&&!Xn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xe,t.isSame=dn,t.isSameType=function(t,n){const e=Xt(t),r=Xt(n);return e===r&&e.name===r.name},t.isSet=Mt,t.isSetCall=xt,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=ze,t.isTypeFactory=W,t.isTypedArray=re,t.isU16=Te,t.isU16Call=Me,t.isU32=Be,t.isU32Call=Re,t.isU8=Le,t.isU8C=ke,t.isU8CCall=$e,t.isU8Call=Ne,t.isUndefined=e,t.isWeakMap=Ue,t.isWeakMapCall=De,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return _e.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Tn," ").trim().toLowerCase().replace(Rn,"-")},t.keys=M,t.largest=function(t){return Z(...t)},t.last=function(t,n){const e=t.length;return n?t.slice(e-n,e):t[e-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=en,t.mapArray=K,t.mapAsyncArray=G,t.mapAsyncObject=Jt,t.mapObject=Qt,t.mapRightArray=function(t,n,e=[],r){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)e[o]=n(t[c],c,t,i,r),o++;return e},t.mapWhile=function(t,n,e=[],r){const o=t.length;for(let i=0;i{Ut(e,((e,r)=>{if(n[r]&&(D(e)||y(e)||e.forEach))return t(n[r],e);n[r]=e}))})),n},t.model=function(t,n){return i(n)?w(fr,[t,n]):L(t,fr.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Xn,t.nodeAttribute=Cr,t.noop=Wt,t.notEqual=We,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Et,t.objectEntries=bn,t.objectSize=jn,t.omit=function(t,n){if(t){if(y(n)){const e=Sn(n);return vn(t,((t,n)=>!e.test(n)))}if(On(n))return vn(t,((t,e)=>!n.test(e)));if(mt(n))return vn(t,((t,e)=>e!==n));if(yt(n)){const e=n.toString();return vn(t,((t,n)=>n!==e))}return Lt(n)?vn(t,((t,e)=>!n(t,e))):void 0}},t.once=t=>{let n;return(...e)=>(i(n)||(n=t(...e)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>en(t,(t=>t(...n)))},t.overEvery=function(t){return n=>un(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const e=[];return[u(t,((t,r)=>{if(n(t,r))return t;e.push(t)})),e]},t.pick=(t,n,e={})=>{if(t)return s(n,(n=>{e[n]=t[n]})),e},t.pluck=function(t,n){return K(t,(t=>bt(t,n)))},t.pluckObject=bt,t.promise=lr,t.propertyMatch=(t,n,e=M(t))=>E(e,(e=>V(t[e],n[e]))),t.querySelector=xr,t.querySelectorAll=Mr,t.randomFloat=function(t,n=0){return yn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,e=1,r=[]){return h(e)?r:tt(...n.map((t=>e[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let e=t.length;for(let r=0;re)return rt(t);if(1===n)return[t[tt(e-1,0)]];const r=[],o={};let i,c=0;for(;cht(t,r,n,e)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",e){return t.sort(((t,r)=>At(t,r,n,e)))},t.sortCollectionAscending=pt,t.sortCollectionAscendingFilter=gt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(J)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=At,t.sortUnique=ct,t.stringify=He,t.stubArray=()=>[],t.stubFalse=()=>zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=J,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const e=t.length;return t.slice(e-n,e)},t.themes=zr,t.throttle=function(t,n){function e(...t){e.id?e.shouldThrottle=qt:(e.callable(...t),e.id=Zt((()=>{e.shouldThrottle&&e.callable(...t),e.id=zt}),n))}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{Vt.remove(e.id),e.id=zt},e},t.timer=Zt,t.timers=Vt,t.times=_t,t.timesAsync=async function(t,n){for(let e=0;en?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=e-n;for(;c=0&&(i=r[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,e):t},t.truncateRight=function(t,n){const e=t.length;return e>n?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=n;for(;c0&&(i=r[c]," "!==i);c++);return t.substring(c,e).trim()})(t,n,e):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.unZipObject=t=>{const n=[],e=[];return jt(t,((t,r)=>{n.push(r),e.push(t)})),[n,e]},t.union=function(...t){return st(b(t))},t.uniqID=pr,t.unique=st,t.untilFalseArray=function(t,n){const e=t.length;for(let r=0;rGn(t)))},t.upperFirstLetter=Kn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(Zn,(t=>Jn(t)))},t.virtualStorage=yr,t.whileCompactMap=function(t,n,e=[],r){let o=0;for(;o!e.has(t)))},t.words=function(t){return t.match(Vn)||[]},t.wrap=function(t,n){return(...e)=>n(t,...e)},t.xor=function(...t){const n=w(Map),e=[];return 2===t.length?v(t[0],t[1]):(s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&e.push(t.child)})),e)},t.zip=function(...t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.zipObject=xn})); //# sourceMappingURL=browser.js.map diff --git a/docs/index.bundle.es.js b/docs/index.bundle.es.js index 4852b309..244b9422 100644 --- a/docs/index.bundle.es.js +++ b/docs/index.bundle.es.js @@ -794,6 +794,43 @@ function intersection(array, ...arrays) { }); } +/** + * Invoke each function in the given array. + * + * @function invokeArray + * @category array + * @type {Function} + * @param {Array} source - Array that will be looped through. + * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg. + * @param {*} thisCall - Iteratee called with thisCall as this. + * @param {*} additionalArg - An object to be given each time to the iteratee. + * @returns {Array} - The originally given array. + * + * @example + * import { invokeArray, assert } from '@universalweb/acid'; + * function test(arg){ + * return [this, arg]; + * } + * const results = invokeArray([test], 1, test); + * assert(results, [test, 1]); + */ +function invokeArray(source, arg, thisCall) { + if (!source) { + return; + } + const arrayLength = source.length; + if (hasValue(thisCall)) { + for (let index = 0; index < arrayLength; index++) { + source[index].call(thisCall, arg); + } + } else { + for (let index = 0; index < arrayLength; index++) { + source[index](arg); + } + } + return source; +} + /** * Get object's keys. * @@ -2311,7 +2348,7 @@ function indexBy(collection, propertyName = 'id') { /** * Invokes a function on the provided property name in each object in the collection. * - * @function invoke + * @function invokeCollection * @category collection * @type {Function} * @param {Array} collection - Collection from which method will be taken. @@ -2320,19 +2357,27 @@ function indexBy(collection, propertyName = 'id') { * @returns {Array} - Returns the results of the invoked method. * * @example - * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] + * import { invokeCollection, assert } from '@universalweb/acid'; + * const results = invokeCollection([{ + * test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); */ -function invoke(collection, property, value) { +function invokeCollection(collection, property, value, thisBind) { + if (thisBind) { + return mapArray(collection, (item, index) => { + return item[property].call(thisBind, value); + }); + } return mapArray(collection, (item, index) => { - return item[property](value, index); + return item[property](value); }); } /** * Asynchronously awaits & invokes a function on the provided property name in each object in the collection. * - * @function invokeAsync + * @function invokeCollectionAsync * @category collection * @type {Function} * @async @@ -2342,18 +2387,20 @@ function invoke(collection, property, value) { * @returns {Array} - Returns the results of the invoked method. * * @test - * (async () => { - * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]); - * }); - * - * @example - * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] - */ -function invokeAsync(collection, property, value) { - return mapAsyncArray(collection, async (item, index) => { - return item[property](value, index); + * import { invokeCollectionAsync, assert } from '@universalweb/acid'; + * const results = await invokeCollectionAsync([{ + * async test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); + */ +function invokeCollectionAsync(collection, property, value, thisBind) { + if (thisBind) { + return mapAsyncArray(collection, (item) => { + return item[property].call(thisBind, value); + }); + } + return mapAsyncArray(collection, async (item) => { + return item[property](value); }); } @@ -7206,5 +7253,5 @@ function currentPath(importMeta) { return path.dirname(fileURLToPath(importMeta.url)); } -export { Chain, Intervals, Model, Store, Timers, UniqID, VirtualStorage, add, after, apply, arrayToRegex, arraysToObject, ary, assert, assertAsync, assign, before, bindAll, cacheNativeMethod, calcProgress, camelCase, chain, chunk, chunkString, clear, clearArray, clearBuffer, clearIntervals, clearTimers, clone, cloneArray, cloneType, compact, compactKeys, compactMap, compactMapArray, compactMapAsyncArray, compactMapAsyncObject, compactMapObject, concurrent, concurrentStatus, construct, constructorName, copyFolder, countBy, countKey, countWithoutKey, currentFile, currentPath, curry, curryRight, debounce, deduct, defProp, difference, divide, drop, dropRight, each, eachArray, eachAsyncArray, eachAsyncObject, eachObject, eachRight, eachRightAsync, ensureArray, ensureBuffer, escapeRegex, escapeRegexRegex, every, everyArg, everyArray, everyAsyncArray, everyAsyncObject, everyObject, falsy, filter, filterArray, filterAsyncArray, filterAsyncObject, filterObject, findIndex, findIndexCache, findItem, first, flatten, flattenDeep, flow, flowAsync, flowAsyncRight, flowRight, forEach, forEachAsync, forMap, forOf, forOfAsync, forOfCompactMap, forOfCompactMapAsync, forOfEvery, forOfEveryAsync, forOfFilter, forOfFilterAsync, forOfMap, forOfMapAsync, generateLoop, get, getEntries, getFileExtension, getFilename, getHighest, getLowest, getNumberInsertIndex, getPropDesc, getPropNames, getType, getTypeName, groupBy, has, hasAnyKeys, hasDot, hasKeys, hasLength, hasProp, hasValue, htmlEntities, ifInvoke, ifNotAssign, ifValue, inAsync, inSync, increment, indexBy, initial, initialString, insertInRange, intersection, interval, intervals, invert, invoke, invokeAsync, isArguments, isArray, isArrayBuffer, isArrayBufferCall, isArrayLike, isAsync, isAsyncCall, isBigInt, isBigIntCall, isBoolean, isBooleanCall, isBuffer, isBufferCall, isChild, isCloneable, isConstructor, isConstructorFactory, isConstructorNameFactory, isDate, isDateCall, isDeno, isEmpty, isEqual, isF32, isF32Call, isF64, isF64Call, isFalse, isFalsy, isFileCSS, isFileHTML, isFileJS, isFileJSON, isFloat, isFunction, isGenerator, isGeneratorCall, isI16, isI16Call, isI32, isI32Call, isI8, isI8Call, isIterable, isKindAsync, isMap, isMapCall, isMatchArray, isMatchObject, isNegative, isNodejs, isNotArray, isNotNumber, isNotString, isNull, isNumber, isNumberCall, isNumberEqual, isNumberInRange, isNumberNotInRange, isParent, isPlainObject, isPositive, isPrimitive, isPromise, isRegex, isRegexCall, isRelated, isSafeInt, isSame, isSameType, isSet, isSetCall, isString, isTrue, isTruthy, isTypeFactory, isTypedArray, isU16, isU16Call, isU32, isU32Call, isU8, isU8C, isU8CCall, isU8Call, isUndefined, isWeakMap, isWeakMapCall, isZero, jsonParse, kebabCase, keys, largest, last, lowerCase, map, mapArray, mapAsyncArray, mapAsyncObject, mapObject, mapRightArray, mapWhile, merge, model, multiply, negate, noValue, noop, notEqual, nthArg, objectAssign, objectEntries, objectSize, omit, once, onlyUnique, over, overEvery, pair, partition, pick, pluck, pluckObject, promise, propertyMatch, randomFloat, randomInt, range, rangeDown, rangeUp, rawURLDecode, reArg, regexTestFactory, remainder, remove, removeBy, replaceList, rest, restString, returnValue, right, rightString, sample, sanitize, setKey, setValue, shuffle, smallest, snakeCase, sortCollectionAlphabetically, sortCollectionAlphabeticallyReverse, sortCollectionAscending, sortCollectionAscendingFilter, sortCollectionDescending, sortCollectionDescendingFilter, sortNumberAscending, sortNumberDescening, sortObjectsAlphabetically, sortObjectsAlphabeticallyReverse, sortUnique, stringify, stubArray, stubFalse, stubObject, stubString, stubTrue, subtract, subtractAll, subtractReverse, sumAll, take, takeRight, throttle, timer, timers, times, timesAsync, timesMap, timesMapAsync, toArray, toPath, toggle, tokenize, truncate, truncateRight, truth, unZip, unZipObject, union, uniqID, unique, untilFalseArray, untilTrueArray, upperCase, upperFirst, upperFirstAll, upperFirstLetter, upperFirstOnly, upperFirstOnlyAll, virtualStorage, whileCompactMap, whileEachArray, whileMapArray, without, words, wrap, xor, zip, zipObject }; +export { Chain, Intervals, Model, Store, Timers, UniqID, VirtualStorage, add, after, apply, arrayToRegex, arraysToObject, ary, assert, assertAsync, assign, before, bindAll, cacheNativeMethod, calcProgress, camelCase, chain, chunk, chunkString, clear, clearArray, clearBuffer, clearIntervals, clearTimers, clone, cloneArray, cloneType, compact, compactKeys, compactMap, compactMapArray, compactMapAsyncArray, compactMapAsyncObject, compactMapObject, concurrent, concurrentStatus, construct, constructorName, copyFolder, countBy, countKey, countWithoutKey, currentFile, currentPath, curry, curryRight, debounce, deduct, defProp, difference, divide, drop, dropRight, each, eachArray, eachAsyncArray, eachAsyncObject, eachObject, eachRight, eachRightAsync, ensureArray, ensureBuffer, escapeRegex, escapeRegexRegex, every, everyArg, everyArray, everyAsyncArray, everyAsyncObject, everyObject, falsy, filter, filterArray, filterAsyncArray, filterAsyncObject, filterObject, findIndex, findIndexCache, findItem, first, flatten, flattenDeep, flow, flowAsync, flowAsyncRight, flowRight, forEach, forEachAsync, forMap, forOf, forOfAsync, forOfCompactMap, forOfCompactMapAsync, forOfEvery, forOfEveryAsync, forOfFilter, forOfFilterAsync, forOfMap, forOfMapAsync, generateLoop, get, getEntries, getFileExtension, getFilename, getHighest, getLowest, getNumberInsertIndex, getPropDesc, getPropNames, getType, getTypeName, groupBy, has, hasAnyKeys, hasDot, hasKeys, hasLength, hasProp, hasValue, htmlEntities, ifInvoke, ifNotAssign, ifValue, inAsync, inSync, increment, indexBy, initial, initialString, insertInRange, intersection, interval, intervals, invert, invokeArray, invokeCollection, invokeCollectionAsync, isArguments, isArray, isArrayBuffer, isArrayBufferCall, isArrayLike, isAsync, isAsyncCall, isBigInt, isBigIntCall, isBoolean, isBooleanCall, isBuffer, isBufferCall, isChild, isCloneable, isConstructor, isConstructorFactory, isConstructorNameFactory, isDate, isDateCall, isDeno, isEmpty, isEqual, isF32, isF32Call, isF64, isF64Call, isFalse, isFalsy, isFileCSS, isFileHTML, isFileJS, isFileJSON, isFloat, isFunction, isGenerator, isGeneratorCall, isI16, isI16Call, isI32, isI32Call, isI8, isI8Call, isIterable, isKindAsync, isMap, isMapCall, isMatchArray, isMatchObject, isNegative, isNodejs, isNotArray, isNotNumber, isNotString, isNull, isNumber, isNumberCall, isNumberEqual, isNumberInRange, isNumberNotInRange, isParent, isPlainObject, isPositive, isPrimitive, isPromise, isRegex, isRegexCall, isRelated, isSafeInt, isSame, isSameType, isSet, isSetCall, isString, isTrue, isTruthy, isTypeFactory, isTypedArray, isU16, isU16Call, isU32, isU32Call, isU8, isU8C, isU8CCall, isU8Call, isUndefined, isWeakMap, isWeakMapCall, isZero, jsonParse, kebabCase, keys, largest, last, lowerCase, map, mapArray, mapAsyncArray, mapAsyncObject, mapObject, mapRightArray, mapWhile, merge, model, multiply, negate, noValue, noop, notEqual, nthArg, objectAssign, objectEntries, objectSize, omit, once, onlyUnique, over, overEvery, pair, partition, pick, pluck, pluckObject, promise, propertyMatch, randomFloat, randomInt, range, rangeDown, rangeUp, rawURLDecode, reArg, regexTestFactory, remainder, remove, removeBy, replaceList, rest, restString, returnValue, right, rightString, sample, sanitize, setKey, setValue, shuffle, smallest, snakeCase, sortCollectionAlphabetically, sortCollectionAlphabeticallyReverse, sortCollectionAscending, sortCollectionAscendingFilter, sortCollectionDescending, sortCollectionDescendingFilter, sortNumberAscending, sortNumberDescening, sortObjectsAlphabetically, sortObjectsAlphabeticallyReverse, sortUnique, stringify, stubArray, stubFalse, stubObject, stubString, stubTrue, subtract, subtractAll, subtractReverse, sumAll, take, takeRight, throttle, timer, timers, times, timesAsync, timesMap, timesMapAsync, toArray, toPath, toggle, tokenize, truncate, truncateRight, truth, unZip, unZipObject, union, uniqID, unique, untilFalseArray, untilTrueArray, upperCase, upperFirst, upperFirstAll, upperFirstLetter, upperFirstOnly, upperFirstOnlyAll, virtualStorage, whileCompactMap, whileEachArray, whileMapArray, without, words, wrap, xor, zip, zipObject }; //# sourceMappingURL=bundle.js.map diff --git a/docs/index.bundle.js b/docs/index.bundle.js index 7fdb1393..b54bef2b 100644 --- a/docs/index.bundle.js +++ b/docs/index.bundle.js @@ -1,12 +1,13 @@ -(function(global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? - factory(exports, require('fs/promises'), require('path'), require('url')) : - typeof define === 'function' && define.amd ? - define(['exports', 'fs/promises', 'path', 'url'], factory) : - ((global = typeof globalThis !== 'undefined' ? globalThis : global || self), +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + ? factory(exports, require('fs/promises'), require('path'), require('url')) + : typeof define === 'function' && define.amd + ? define(['exports', 'fs/promises', 'path', 'url'], factory) + : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self), factory((global.$ = {}), global.promises, global.path, global.url)); -})(this, (exports, promises, path, url) => { +})(this, function (exports, promises, path, url) { 'use strict'; + /** * Chunks an array according to a user defined number. * @@ -35,6 +36,7 @@ }); return chunked; } + /** * Clears the values out of an array. * @@ -52,6 +54,7 @@ source.length = 0; return source; } + /** * Clone an array (uses .slice()) and assign the source arrays values to the new array. * @@ -68,6 +71,7 @@ function cloneArray(source) { return source.slice(); } + /** Checks if the value is undefined. * * @function isUndefined @@ -82,6 +86,7 @@ function isUndefined(source) { return source === undefined; } + /** * Checks if the value has length greater than 0. * @@ -97,6 +102,7 @@ function hasLength(source) { return Boolean(source.length); } + /** * Checks if the value is null. * @@ -112,6 +118,7 @@ function isNull(source) { return source === null; } + /** * Checks if the value is not null or undefined. * @@ -127,6 +134,7 @@ function hasValue(source) { return !isUndefined(source) && !isNull(source); } + /** * A simple function which returns the value it's given. * @@ -138,6 +146,7 @@ function returnValue(source) { return source; } + /** * Iterates through the given array. * @@ -174,6 +183,7 @@ } return source; } + /** * Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array. * @@ -211,6 +221,7 @@ } return results; } + /** * Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order. * @@ -248,6 +259,7 @@ } return source; } + /** * Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array. * @@ -275,6 +287,7 @@ }); return results; } + /** * Checks if a number is negative & returns true or false. * @@ -292,6 +305,7 @@ function isNegative(source) { return sign$1(source) === -1; } + function rangeUp(start, end, step, sourceArray) { let position = start; while (position < end) { @@ -333,10 +347,12 @@ return rangeDown(start, end, step, sourceArray); } } + function forEach(source, callback) { source.forEach(callback); return source; } + /** * Checks if the value is an array. This references Array.isArray. * @@ -367,6 +383,7 @@ function isNotArray(source) { return !isArray(source); } + /** * Ensures the source is an array if not the source is wrapped in a array or an empty array is returned. * @@ -383,6 +400,7 @@ function ensureArray(source) { return (isArray(source) && source) || (hasValue(source) && [source]) || []; } + /** * Flattens an array to a single level. * @@ -399,6 +417,7 @@ function flattenDeep(source) { return source.flat(Infinity); } + /** * A function which acts like the "new" operator and can pass arguments. This is a safe version of the original which will error if given undefined * This is useful when working with classes and prefering to avoid the new operator and it's potential side effects. @@ -428,6 +447,7 @@ } return reflectConstruct(target, args); } + /** * Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences. * @@ -469,6 +489,7 @@ }); return differences; } + /** * Removes all items from an array after a specified index. * @@ -488,6 +509,7 @@ function drop(array, amount = 1, upTo = array.length) { return array.splice(amount, upTo); } + /** * Removes all items from an array before a specified index. * @@ -507,6 +529,7 @@ const dropRight = (array, amount = 1, upTo = array.length) => { return drop(array, 0, upTo - amount); }; + /** * Iterates through the given array in reverse. * @@ -536,6 +559,7 @@ } return source; } + /** * Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order. * @@ -565,6 +589,7 @@ } return source; } + /** * Iterates through the given array while the iteratee returns true else the loop exits & returns false. * @@ -597,6 +622,7 @@ } return true; } + /** * Iterates through the given array while the iteratee returns true else the loop exits & returns false. * @@ -629,6 +655,7 @@ } return true; } + /** * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee. * @@ -656,6 +683,7 @@ }); return results; } + /** * Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee. * @@ -683,6 +711,7 @@ }); return results; } + /** * Takes the first or multiple items from an array. * @@ -700,6 +729,7 @@ function first(array, upTo) { return upTo ? array.slice(0, upTo) : array[0]; } + /** * Flattens an array up to the provided level. * @@ -726,6 +756,7 @@ } return sourceArray; } + /** * Takes all but the last item in the array. * @@ -742,6 +773,7 @@ function initial(array) { return array.slice(0, array.length - 1); } + // Add intersectionBy & intersectionWith /** * Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory)) @@ -767,6 +799,44 @@ } }); } + + /** + * Invoke each function in the given array. + * + * @function invokeArray + * @category array + * @type {Function} + * @param {Array} source - Array that will be looped through. + * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg. + * @param {*} thisCall - Iteratee called with thisCall as this. + * @param {*} additionalArg - An object to be given each time to the iteratee. + * @returns {Array} - The originally given array. + * + * @example + * import { invokeArray, assert } from '@universalweb/acid'; + * function test(arg){ + * return [this, arg]; + * } + * const results = invokeArray([test], 1, test); + * assert(results, [test, 1]); + */ + function invokeArray(source, arg, thisCall) { + if (!source) { + return; + } + const arrayLength = source.length; + if (hasValue(thisCall)) { + for (let index = 0; index < arrayLength; index++) { + source[index].call(thisCall, arg); + } + } else { + for (let index = 0; index < arrayLength; index++) { + source[index](arg); + } + } + return source; + } + /** * Get object's keys. * @@ -785,6 +855,7 @@ return objectKeys(source); } } + const regexToPath = /\.|\[/; const regexCloseBracket = /]/g; const emptyString = ''; @@ -804,6 +875,7 @@ function toPath(source) { return source.replace(regexCloseBracket, emptyString).split(regexToPath); } + /** * Returns property on an object. * @@ -835,6 +907,7 @@ }); return link; } + const hasOwn = Object.hasOwn; /** * Checks to see if an object has all of the given property names. @@ -903,6 +976,7 @@ }) ); } + /** * Checks if the value is a plain object. * @@ -918,11 +992,11 @@ */ const isPlainObject = (value) => { if (hasValue(value)) { - return value.constructor.toString().trim() - .slice(9, 16) === 'Object('; + return value.constructor.toString().trim().slice(9, 16) === 'Object('; } return false; }; + /** * Checks to see if the constructor is that of a native object. * @@ -952,14 +1026,16 @@ return constructorName(target) === source || false; }; } + function isTypeFactory(method) { - return function(primarySource, ...otherSources) { + return function (primarySource, ...otherSources) { if (otherSources) { return method(primarySource) && everyArray(otherSources, method); } return method(primarySource); }; } + /** * Checks if an object or objects are a Buffer. * @@ -974,6 +1050,7 @@ */ const isBufferCall = isConstructorNameFactory('Buffer'); const isBuffer = isTypeFactory(isBufferCall); + /** * Performs a deep comparison between two objects & determines if the value is the same using strict comparison. * @@ -1012,6 +1089,7 @@ } return false; }; + /** * Performs a shallow strict comparison between two objects. * @@ -1034,6 +1112,7 @@ } return false; } + const mathNativeMax = Math.max; /** * Plucks the largest value from an array. @@ -1051,6 +1130,7 @@ function largest(array) { return mathNativeMax(...array); } + /** * Extracts item(s) from an array starting from the last item in the array. * @@ -1069,6 +1149,7 @@ const arrayLength = array.length; return indexFrom ? array.slice(arrayLength - indexFrom, arrayLength) : array[arrayLength - 1]; } + /** * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array. * @@ -1100,6 +1181,7 @@ } return results; } + /** * Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array. * @@ -1124,6 +1206,7 @@ }); return results; } + /** * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse. * @@ -1151,6 +1234,7 @@ } return results; } + /** * Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee. * @@ -1181,6 +1265,7 @@ } return results; } + /** * Subtracts the subtrahend (second argument) from the minuend (first argument). * @@ -1198,6 +1283,7 @@ function subtract(minuend, subtrahend) { return minuend - subtrahend; } + /** * Sorts an array of numbers in ascending order. Smallest to largest. * @@ -1213,6 +1299,7 @@ function sortNumberAscending(numberList) { return numberList.sort(subtract); } + /** * Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate. * @@ -1246,6 +1333,7 @@ rejected ]; } + /** * Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function. * @@ -1263,6 +1351,7 @@ function subtractReverse(subtrahend, minuend) { return minuend - subtrahend; } + /** * Sorts an array of numbers in descending order. Largest to smallest. * @@ -1278,6 +1367,7 @@ function sortNumberDescening(numberList) { return numberList.sort(subtractReverse); } + /** * Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation. * @@ -1331,6 +1421,7 @@ } return source; } + /** * Extracts all items in array except the first and last item. * @@ -1347,6 +1438,7 @@ function rest(array) { return array.slice(1, array.length); } + /** * Get the item at the supplied index starting at the end of the array. * @@ -1364,9 +1456,8 @@ function right(source, amount) { return source[source.length - 1 - amount]; } - const { - floor, random: random$1 - } = Math; + + const { floor, random: random$1 } = Math; /** * Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption. * @@ -1384,6 +1475,7 @@ function randomInt(max, min = 0) { return floor(random$1() * (max - min)) + min; } + const arrayFrom = Array.from; /** * The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check. @@ -1404,6 +1496,7 @@ return arrayFrom(arrayLike, mapFn, thisArg); } } + /** * Checks if two numbers are the same. * @@ -1421,6 +1514,7 @@ function isNumberEqual(source, target) { return source === target; } + /** * Shuffle an array and return a new array. * @@ -1451,6 +1545,7 @@ } return shuffleArray; } + /** * Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned. * @@ -1495,6 +1590,7 @@ } return sampleArray; } + const mathNativeMin = Math.min; /** * Plucks the smallest value from an array. @@ -1512,6 +1608,7 @@ function smallest(array) { return mathNativeMin(...array); } + /** * What index should the number be inserted at to keep a sorted array still sorted. * @@ -1539,6 +1636,7 @@ }); return insertIndex; } + /** * Returns a shallow copy of the array up to an amount. * @@ -1556,6 +1654,7 @@ function take(source, endIndex = 1) { return source.slice(0, endIndex); } + /** * Returns a shallow copy of the array up to an amount starting from the right. * @@ -1574,6 +1673,7 @@ const arrayLength = source.length; return source.slice(arrayLength - indexRight, arrayLength); } + function onlyUnique(value, index, array) { return array.indexOf(value) === index; } @@ -1600,6 +1700,7 @@ } return source.filter(onlyUnique); } + /** * Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays. * @@ -1616,6 +1717,7 @@ function union(...arrays) { return unique(flattenDeep(arrays)); } + /** * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned. * If and when the iteratee yields false the loop stops & false is returned. @@ -1645,6 +1747,7 @@ } return true; } + /** * Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned. * If and when the iteratee yields true the loop stops & false is returned. @@ -1674,6 +1777,7 @@ } return true; } + /** * Iterates through the calling object and creates a new object based on the calling object's type with the results, * (excludes results which are null or undefined), of the iteratee on every element in the calling object. @@ -1705,6 +1809,7 @@ } return source; } + /** * Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over. * @@ -1732,6 +1837,7 @@ } return source; } + /** * Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array. * Re-checks the length each loop. @@ -1762,6 +1868,7 @@ } return source; } + /** * Returns a copy of the array with all instances of the values removed. * @@ -1785,6 +1892,7 @@ return !sourcesSet.has(item); }); } + /** * Creates an array that is the symmetric difference of the provided arrays. * @@ -1829,6 +1937,7 @@ }); return xored; } + /** * Merges together the values of each of the arrays with the values at the corresponding position. * @@ -1869,6 +1978,7 @@ }); }); } + /** * Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer. * @@ -1885,6 +1995,7 @@ function ensureBuffer(source) { return (isBuffer(source) && source) || (hasValue(source) && Buffer.from(source)) || Buffer.alloc(0); } + /** * Clears the values out of a buffer. * @@ -1902,6 +2013,7 @@ source.fill(0); return source; } + /** * Creates an object composed of keys generated from the results of running each element of collection through iteratee. * @@ -1928,6 +2040,7 @@ }); return object; } + /** * Count the amount of times a key is present in a collection. * @@ -1951,6 +2064,7 @@ }); return count; } + /** * Count the amount of times a key is not present in a collection. * @@ -1974,11 +2088,13 @@ }); return count; } + function findIndexCache(element, index, array, indexMatch, propertyName) { if (element[propertyName] === indexMatch) { return true; } } + /** * Finds an object in a collection by the given id and property name and returns the array index of the object. * @@ -2000,6 +2116,7 @@ }); return result === -1 ? false : result; } + /** * Finds an object in a collection by the given id and property name. * @@ -2021,6 +2138,7 @@ }); return result === -1 ? false : result; } + /** * Sorts an array in place using a key in descending order. * @@ -2061,6 +2179,7 @@ return sortCollectionDescendingFilter(previous, next, propertyName, ifMatch); }); } + /** * Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array. * @@ -2100,6 +2219,7 @@ return sortObjectsAlphabetically(previous, next, propertyName, ifMatch); }); } + /** * Sorts an array in place using a key in ascending order. * @@ -2140,6 +2260,7 @@ return sortCollectionAscendingFilter(previous, next, propertyName, ifMatch); }); } + /** * Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array. * @@ -2157,6 +2278,7 @@ function getHighest(collection, propertyName = 'id') { return sortCollectionAscending(collection, propertyName)[0]; } + /** * Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array. * @@ -2174,6 +2296,7 @@ function getLowest(collection, propertyName) { return sortCollectionDescending(collection, propertyName, false)[0]; } + /** * Creates an object composed of keys generated from the results of running each element of collection thru iteratee. * The order of grouped values is determined by the order they occur in collection. @@ -2201,6 +2324,7 @@ }); return sortedObject; } + /** * Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique. * @@ -2224,10 +2348,11 @@ }); return sortedObject; } + /** * Invokes a function on the provided property name in each object in the collection. * - * @function invoke + * @function invokeCollection * @category collection * @type {Function} * @param {Array} collection - Collection from which method will be taken. @@ -2236,18 +2361,27 @@ * @returns {Array} - Returns the results of the invoked method. * * @example - * invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] + * import { invokeCollection, assert } from '@universalweb/acid'; + * const results = invokeCollection([{ + * test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); */ - function invoke(collection, property, value) { + function invokeCollection(collection, property, value, thisBind) { + if (thisBind) { + return mapArray(collection, (item, index) => { + return item[property].call(thisBind, value); + }); + } return mapArray(collection, (item, index) => { - return item[property](value, index); + return item[property](value); }); } + /** * Asynchronously awaits & invokes a function on the provided property name in each object in the collection. * - * @function invokeAsync + * @function invokeCollectionAsync * @category collection * @type {Function} * @async @@ -2257,20 +2391,23 @@ * @returns {Array} - Returns the results of the invoked method. * * @test - * (async () => { - * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]); - * }); - * - * @example - * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] - */ - function invokeAsync(collection, property, value) { - return mapAsyncArray(collection, async (item, index) => { - return item[property](value, index); + * import { invokeCollectionAsync, assert } from '@universalweb/acid'; + * const results = await invokeCollectionAsync([{ + * async test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); + */ + function invokeCollectionAsync(collection, property, value, thisBind) { + if (thisBind) { + return mapAsyncArray(collection, (item) => { + return item[property].call(thisBind, value); + }); + } + return mapAsyncArray(collection, async (item) => { + return item[property](value); }); } + /** * Checks if the value is a number. * @@ -2300,6 +2437,7 @@ function isNotNumber(source) { return !isNumber(source); } + /** * Checks if the value is a string. * @@ -2330,6 +2468,7 @@ function isNotString(source) { return !isString(source); } + /** * Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array. * @@ -2354,6 +2493,7 @@ return source[item]; }); } + /** * Returns an array of the plucked values from the collection. * @@ -2374,6 +2514,7 @@ return pluckObject(item, targets); }); } + /** * Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array. * @@ -2405,6 +2546,7 @@ return sortObjectsAlphabeticallyReverse(previous, next, propertyName, ifMatch); }); } + /** * Return the file extension. * @@ -2422,6 +2564,7 @@ return source.substring(source.lastIndexOf('.') + 1); } } + /** * Return the file extension. * @@ -2439,11 +2582,13 @@ return source.substring(source.lastIndexOf('/') + 1); } } + function regexTestFactory(regexType) { return (item) => { return hasValue(item) ? regexType.test(item) : false; }; } + /** * Checks if the string has a .css extension. * @@ -2457,6 +2602,7 @@ * assert(isFileCSS('test.css'), true); */ const isFileCSS = regexTestFactory(/\.css$/); + /** * Checks if the string has a .html extension. * @@ -2470,6 +2616,7 @@ * assert(isFileHTML('test.html'), true); */ const isFileHTML = regexTestFactory(/\.html$/); + /** * Checks if the string has a .js extension. * @@ -2483,6 +2630,7 @@ * assert(isFileJS('test.js'), true); */ const isFileJS = regexTestFactory(/\.js$/); + /** * Checks if the string has a .json extension. * @@ -2496,6 +2644,7 @@ * assert(isFileJSON('test.json'), true); */ const isFileJSON = regexTestFactory(/\.json$/); + /** * Creates a function that executes callable, only after being called n times. * @@ -2533,6 +2682,7 @@ }; return onlyAfter; } + /** * Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments. * @@ -2552,6 +2702,7 @@ return callable(...args.splice(0, amount)); }; } + /** * Creates a function that executes callable, only before n times. * @@ -2583,6 +2734,7 @@ }; return onlyBefore; } + const objectAssign = Object.assign; /** * Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object. @@ -2602,6 +2754,7 @@ return objectAssign(target, ...sources); } } + /** * Asynchronously iterates through the given object. * @@ -2638,6 +2791,7 @@ } return source; }; + /** * Iterates through the given object. * @@ -2672,6 +2826,7 @@ } return source; } + async function forEachAsync(source, callback) { const values = []; const properties = []; @@ -2686,6 +2841,7 @@ } return source; } + /** * Checks if an object(s) is a Set. * @@ -2700,6 +2856,7 @@ */ const isSetCall = isConstructorNameFactory('Set'); const isSet = isTypeFactory(isSetCall); + function forOf(source, iteratee) { if (isSet(source)) { for (const value of source) { @@ -2712,6 +2869,7 @@ } return source; } + /** * Checks if an object or objects are a Int16Array. * @@ -2727,6 +2885,7 @@ */ const isGeneratorCall = isConstructorNameFactory('GeneratorFunction'); const isGenerator = isTypeFactory(isGeneratorCall); + async function forOfAsync(source, iteratee, generatorArgs) { if (isSet(source)) { for (const value of source) { @@ -2744,6 +2903,7 @@ } return source; } + /** * Checks if an object or objects are a plain object. * @@ -2760,6 +2920,7 @@ const isFunction = (source) => { return hasValue(source) ? source instanceof Function : false; }; + /** * Checks if an object is an async function. * @@ -2774,6 +2935,7 @@ */ const isAsyncCall = isConstructorNameFactory('AsyncFunction'); const isAsync = isTypeFactory(isAsyncCall); + function generateLoop(arrayLoop, arrayLoopAsync, objectLoop, objectLoopAsync, forOfLoop, forOfLoopAsync) { return (source, iteratee, argument1, argument2, argument3) => { let returned; @@ -2794,6 +2956,7 @@ return returned(source, iteratee, argument1, argument2, argument3); }; } + /** * Iterates through the given object. * @@ -2815,6 +2978,7 @@ * assert(list, {a: 1, b: 2, c: 3}); */ const each = generateLoop(eachArray, eachAsyncArray, eachObject, eachAsyncObject, forOf, forOfAsync); + class Chain { constructor(methods) { this.addChainMethod(methods); @@ -2822,7 +2986,7 @@ addChainMethod(methods) { const thisChain = this; each(methods, (method, methodName) => { - thisChain[methodName] = function(...args) { + thisChain[methodName] = function (...args) { this.value = method.call(thisChain, thisChain.value, ...args); return thisChain; }; @@ -2860,6 +3024,7 @@ function chain(config) { return construct(Chain, [config]); } + /** * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient. * @@ -2890,6 +3055,7 @@ }; return curried; } + /** * Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order. * @@ -2919,6 +3085,7 @@ }; return curried; } + /** * This method returns true. * @@ -2936,6 +3103,7 @@ const stubTrue = () => { return truth; }; + /** * This method returns false. * @@ -2953,6 +3121,7 @@ const stubFalse = () => { return falsy; }; + /** * This method returns undefined. * @@ -2967,6 +3136,7 @@ const noop = () => { return; }; + /** * Iterates based on the amount given invoking the iteratee with the current index as an argument. * @@ -3016,6 +3186,7 @@ } return results; } + class Timers { list = construct(Map); construct() {} @@ -3116,6 +3287,7 @@ timers.remove(index); }); } + const applyNative = Reflect.apply; /** * Calls a target function with an optional "this" and optional arguments as specified. Same as Reflect.apply but with a function check. @@ -3136,6 +3308,7 @@ return applyNative(target, thisArgument, argumentsList); } } + /** * Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer. * @@ -3173,6 +3346,7 @@ }; return debounced; } + /** * Checks if the given method is a function. If it is then it invokes it with the given arguments. * @@ -3192,6 +3366,7 @@ return callable(...args); } } + /** * Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object. * @@ -3222,6 +3397,7 @@ } return source; } + /** * Invoke an array of functions. * @@ -3250,6 +3426,7 @@ item(value); }); }; + /** * Creates a function that negates the result of the predicate callable. * @@ -3268,6 +3445,7 @@ return !callable(...args); }; } + /** * Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned. * @@ -3286,6 +3464,7 @@ return args[index]; }; } + /** * Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function. * @@ -3317,6 +3496,7 @@ }; return onlyOnce; }; + /** * Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object. * @@ -3343,6 +3523,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object. * @@ -3377,6 +3558,7 @@ } return results; } + /** * Returns the constructor of an object. * @@ -3392,6 +3574,7 @@ function getType(source) { return source?.constructor; } + /** * Returns a new empty object of the same type. * @@ -3408,11 +3591,12 @@ const sourceType = getType(source); if (sourceType === Function) { if (sourceType.name === 'function') { - return function() {}; + return function () {}; } } return construct(sourceType, args); } + /** * Iterates through (using for of) the calling object and creates an object with the results of the iteratee on every element in the calling object. * @@ -3452,6 +3636,7 @@ } return results; } + /** * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -3498,6 +3683,7 @@ } return results; } + /** * Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object. * @@ -3518,6 +3704,7 @@ * }), {a: 2, b: 4, c: 6}); */ const map = generateLoop(mapArray, mapAsyncArray, mapObject, mapAsyncObject, forOfMap, forOfMapAsync); + /** * Creates a function that invokes iteratee with the arguments it receives and returns their results. * @@ -3538,6 +3725,7 @@ }); }; } + /** * Iterates through the given object while the iteratee returns true. * @@ -3564,6 +3752,7 @@ return iteratee(source[key], key, source, propertyCount, original); }); } + /** * Iterates through the given object while the iteratee returns true. * @@ -3590,6 +3779,7 @@ return iteratee(source[key], key, source, propertyCount, original); }); } + /** * Iterates (for of) through the given object while the iteratee returns true using a for of loop. * @@ -3624,6 +3814,7 @@ } return true; } + /** * Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop. * @@ -3665,6 +3856,7 @@ } return true; } + /** * Iterates through the given object while the iteratee returns true. * @@ -3682,6 +3874,7 @@ * }), false); */ const every = generateLoop(everyArray, everyAsyncArray, everyObject, everyAsyncObject, forOfEvery, forOfEveryAsync); + /** * Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives. * @@ -3702,6 +3895,7 @@ }); }; } + /** * Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on. * @@ -3727,6 +3921,7 @@ ); }; } + /** * Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer. * @@ -3764,6 +3959,7 @@ }; return throttled; } + /** * Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function. * @@ -3785,6 +3981,7 @@ return wrapper(value, ...arg); }; } + const functionPrototype = Function.prototype; /** * Caches a prototype method. @@ -3802,6 +3999,7 @@ function cacheNativeMethod(method) { return functionPrototype.call.bind(method); } + /** * Returns an array of all properties (enumerable or not) found directly upon a given object. * @@ -3850,6 +4048,7 @@ */ const defProp = Object.defineProperty; const hasProp = cacheNativeMethod(Object.hasOwnProperty); + /** * Determines whether two values are the same value. * @@ -3864,6 +4063,7 @@ * assert(isSame('foo', 'foo'), true); */ const isSame = Object.is; + /** * Adds two numbers. * @@ -3881,6 +4081,7 @@ function add(augend, addend) { return augend + addend; } + /** * Decrements a number. * @@ -3899,6 +4100,7 @@ function deduct(source) { return source - 1; } + /** * Divides two numbers. * @@ -3916,6 +4118,7 @@ function divide(source, value) { return source / value; } + /** * Increments a number. * @@ -3934,6 +4137,7 @@ function increment(source) { return source + 1; } + /** * Multiplies two numbers. * @@ -3951,6 +4155,7 @@ function multiply(source, value) { return source * value; } + /** * Calculate the progress from a given total and current amount. * @@ -3974,6 +4179,7 @@ } return (currentAmount / total) * 100; } + const { random } = Math; /** * Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption. @@ -3993,6 +4199,7 @@ function randomFloat(max, min = 0) { return random() * (max - min) + min; } + /** * Extracts the remainder between two numbers. * @@ -4012,6 +4219,7 @@ function remainder(source, value) { return source % value; } + /** * Subtract all numbers in the array starting from left to right & return the difference. * @@ -4030,6 +4238,7 @@ return a - b; }, 0); } + /** * Sum all numbers in a given array. * @@ -4048,6 +4257,7 @@ return a + b; }, 0); } + /** * Checks if a number is within a range. * @@ -4067,6 +4277,7 @@ function isNumberInRange(source, start, end) { return source > start && source < end; } + /** * Checks if a number is within a range. * @@ -4086,6 +4297,7 @@ function isNumberNotInRange(source, start, end) { return source < start || source > end; } + /** * Checks if a number is negative & returns true or false. * @@ -4103,6 +4315,7 @@ function isPositive(source) { return sign(source) === 1; } + /** * Strictly checks if a number is zero. * @@ -4119,6 +4332,7 @@ function isZero(source) { return source === 0; } + const objectEntries = Object.entries; /** * Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error. @@ -4137,6 +4351,7 @@ return objectEntries(source); } } + /** * Extracts all keys from an object whose values are not null or undefined. * @@ -4159,6 +4374,7 @@ }); return compactedKeys; } + /** * Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -4185,6 +4401,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -4211,6 +4428,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee. * @@ -4236,6 +4454,7 @@ }); return results; } + /** * Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee. * @@ -4261,6 +4480,7 @@ }); return results; } + /** * Creates an inverted version of a given object by switching it's keys and values. * @@ -4284,6 +4504,7 @@ }); return target; } + /** * Performs a shallow strict comparison between two objects. * @@ -4311,6 +4532,7 @@ } return false; }; + /** * Checks if the value is a RegExp. * @@ -4325,6 +4547,7 @@ */ const isRegexCall = isConstructorNameFactory('RegExp'); const isRegex = isTypeFactory(isRegexCall); + /** * Returns a regex safe special characters escaped version of a string. * @@ -4342,6 +4565,7 @@ function escapeRegex(source) { return source.replace(escapeRegexRegex, '\\$&'); } + /** * Convert array of strings to regex. * @@ -4361,6 +4585,7 @@ } return RegExp(source.join('|')); } + /** * Returns a clone of the given object without the given properties. * @@ -4409,6 +4634,7 @@ }); } } + /** * Returns a clone of the source object with the plucked properties. * @@ -4433,6 +4659,7 @@ }); return target; }; + /** * Returns the amount of keys on the object. * @@ -4451,6 +4678,7 @@ } return keys(source).length; } + /** * Creates an object from two arrays, one of property identifiers and one of corresponding values. * @@ -4494,6 +4722,7 @@ }); return [unZippedKeys, values]; }; + const normalizeCase$4 = /[ _-]+/g; /** * Converts a string into Camel case format. @@ -4523,6 +4752,7 @@ }); return result; } + const normalizeCase$3 = /[ _-]+/g; const space$1 = /[ ]+/g; /** @@ -4546,6 +4776,7 @@ .toLowerCase() .replace(space$1, '-'); } + const normalizeCase$2 = /[ _-]+/g; const space = /[ ]+/g; /** @@ -4569,6 +4800,7 @@ .toLowerCase() .replace(space, '_'); } + const normalizeCase$1 = /[ _-]+/g; /** * Converts a string into single space sepperated words in uppercase. @@ -4591,6 +4823,7 @@ .trim() .toUpperCase(); } + const normalizeCase = /[ _-]+/g; /** * Converts a string into single space sepperated words in lowerCase. @@ -4612,6 +4845,7 @@ .trim() .toLowerCase(); } + /** * Inserts text into a string at a given position. * @@ -4699,6 +4933,7 @@ function restString(string, index = 1) { return string.substring(index); } + /** * Replaces all occurrences of strings in an array with a value. * @@ -4717,6 +4952,7 @@ function replaceList(string, words, value) { return string.replace(new RegExp(`\\b${words.join('|')}\\b`, 'gi'), value); } + const truncateDown = (string, maxLength, stringLength) => { const breakAll = string.split(''); const breakAllLength = breakAll.length; @@ -4779,6 +5015,7 @@ const stringLength = string.length; return stringLength > maxLength ? truncateUp(string, maxLength, stringLength) : string; } + const rawURLDecodeRegex = /%(?![\da-f]{2})/gi; const andRegex = /&/g; const lessThanRegex = /console.log('Lucy & diamonds.')`), `<script>console.log('Lucy & diamonds.')</script>`); */ function htmlEntities(string) { - return string.replace(andRegex, '&').replace(lessThanRegex, '<') - .replace(moreThanRegex, '>') - .replace(doubleQuoteRegex, '"'); + return string.replace(andRegex, '&').replace(lessThanRegex, '<').replace(moreThanRegex, '>').replace(doubleQuoteRegex, '"'); } /** * Executes rawURLDecode followd by htmlEntities methods on a string. @@ -4838,6 +5073,7 @@ function sanitize(string) { return htmlEntities(rawURLDecode(string)); } + const tokenizeRegEx = /\S+/g; const wordsRegEx = /\w+/g; /** @@ -4871,6 +5107,7 @@ function words(string) { return string.match(wordsRegEx) || []; } + const getWords = /\w+/g; /** * Returns the first letter capitalized. @@ -4958,6 +5195,7 @@ return upperFirstOnly(match); }); } + /** * Returns the constructor name of an object. * @@ -4973,6 +5211,7 @@ function getTypeName(source) { return getType(source)?.name; } + /** * Checks if the value is an Arguments object. * @@ -4990,6 +5229,7 @@ function isArguments(source) { return hasValue(source) ? source.toString() === objectArguments : false; } + /** * Checks if an object is null or undefined. * @@ -5008,6 +5248,7 @@ function noValue(source) { return !hasValue(source); } + /** * Checks if an object or objects are a Map. * @@ -5023,6 +5264,7 @@ */ const isMapCall = isConstructorNameFactory('Map'); const isMap = isTypeFactory(isMapCall); + /** * Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer. * @@ -5047,6 +5289,7 @@ } return false; } + /** * Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property. * @@ -5083,6 +5326,7 @@ } return true; } + /** * Checks if an object or objects are a BigInt. * @@ -5097,6 +5341,7 @@ */ const isBigIntCall = isConstructorNameFactory('BigInt'); const isBigInt = isTypeFactory(isBigIntCall); + /** * Checks if the value is a Boolean. * @@ -5112,6 +5357,7 @@ */ const isBooleanCall = isConstructorNameFactory('Boolean'); const isBoolean = isTypeFactory(isBooleanCall); + /** * Checks if an object or objects are a ArrayBuffer. * @@ -5126,6 +5372,7 @@ */ const isArrayBufferCall = isConstructorNameFactory('ArrayBuffer'); const isArrayBuffer = isTypeFactory(isArrayBufferCall); + /** * Checks if an object is the child of another. Typically used for classes. * @@ -5152,6 +5399,7 @@ } return sourceChild instanceof targetParent; } + /** * Checks if an object or objects are a structured-cloneable type. * @@ -5174,6 +5422,7 @@ } return false; } + /** * Checks if the value is a Date. * @@ -5188,6 +5437,7 @@ */ const isDateCall = isConstructorNameFactory('Date'); const isDate = isTypeFactory(isDateCall); + /** * Checks if the value is empty. * @@ -5208,6 +5458,7 @@ } return !hasValue(source); } + /** * Check if a value equals false using strict comparison. * @@ -5226,6 +5477,7 @@ function isFalse(source) { return source === false; } + /** * Checks if an object or objects are a Float32Array. * @@ -5240,6 +5492,7 @@ */ const isF32Call = isConstructorNameFactory('Float32Array'); const isF32 = isTypeFactory(isF32Call); + /** * Checks if an object or objects are a Float64Array. * @@ -5255,6 +5508,7 @@ */ const isF64Call = isConstructorNameFactory('Float64Array'); const isF64 = isTypeFactory(isF64Call); + const { isInteger } = Number; /** * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger. @@ -5270,6 +5524,7 @@ * // => true */ const isFloat = isInteger; + /** * Checks if an object or objects are a Int16Array. * @@ -5285,6 +5540,7 @@ */ const isI16Call = isConstructorNameFactory('Int16Array'); const isI16 = isTypeFactory(isI16Call); + /** * Checks if an object or objects are a Int32Array. * @@ -5298,6 +5554,7 @@ */ const isI32Call = isConstructorNameFactory('Int32Array'); const isI32 = isTypeFactory(isI32Call); + /** * Checks if an object or objects are a Int8Array. * @@ -5313,6 +5570,7 @@ */ const isI8Call = isConstructorNameFactory('Int8Array'); const isI8 = isTypeFactory(isI8Call); + /** * Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments. * @@ -5330,6 +5588,7 @@ function isIterable(source) { return hasValue(source) && typeof source[Symbol.iterator] === 'function'; } + /** * Checks if an object is a promise. * @@ -5349,6 +5608,7 @@ } return false; } + /** * Checks if an object is a kind of async object such as async function, promise, or generator. * @@ -5367,6 +5627,7 @@ } return false; } + /** * Checks if an object is the child of another. Typically used for classes. * @@ -5393,6 +5654,7 @@ } return sourceParent instanceof targetChild; } + /** * Checks if an object is a primitive. * @@ -5410,6 +5672,7 @@ const type = typeof value; return source === null || source === undefined || (type !== 'object' && type !== 'function'); } + /** * Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways. * @@ -5443,6 +5706,7 @@ } return targetTwo.constructor === targetOne.constructor; } + const { isSafeInteger } = Number; /** * Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger. @@ -5458,6 +5722,7 @@ * // => true */ const isSafeInt = isSafeInteger; + function isSameType(source, other) { const sourceType = getType(source); const otherType = getType(other); @@ -5468,6 +5733,7 @@ } return false; } + /** * Check if a value equals true using strict comparison. * @@ -5486,6 +5752,7 @@ function isTrue(source) { return source === true; } + /** * Checks if an object or objects are a Uint16Array. * @@ -5501,6 +5768,7 @@ */ const isU16Call = isConstructorNameFactory('Uint16Array'); const isU16 = isTypeFactory(isU16Call); + /** * Checks if an object or objects are a Uint32Array. * @@ -5516,6 +5784,7 @@ */ const isU32Call = isConstructorNameFactory('Uint32Array'); const isU32 = isTypeFactory(isU32Call); + /** * Checks if an object or objects are a Uint8Array. * @@ -5531,6 +5800,7 @@ */ const isU8Call = isConstructorNameFactory('Uint8Array'); const isU8 = isTypeFactory(isU8Call); + /** * Checks if an object or objects are a Uint8ClampedArray. * @@ -5546,6 +5816,7 @@ */ const isU8CCall = isConstructorNameFactory('Uint8ClampedArray'); const isU8C = isTypeFactory(isU8CCall); + /** * Checks if an object or objects are a WeakMap. * @@ -5560,8 +5831,11 @@ */ const isWeakMapCall = isConstructorNameFactory('WeakMap'); const isWeakMap = isTypeFactory(isWeakMapCall); + const isDeno = typeof globalThis.Deno !== 'undefined'; + const isNodejs = typeof globalThis.process !== 'undefined' && process.versions && process.versions.node; + /** * Check if a value is isTruthy which is anything but false, null, 0, "", undefined, and NaN. * @@ -5580,6 +5854,7 @@ function isTruthy(source, returnIfTrue = true) { return Boolean(source) && returnIfTrue; } + /** * Check if a value is isFalsy which are false, null, 0, "", undefined, and NaN. * @@ -5598,6 +5873,7 @@ function isFalsy(source, returnIfTrue = true) { return Boolean(source) === false && returnIfTrue; } + /** * If source has a value then assign it to an object or call a function. * @@ -5626,6 +5902,7 @@ } } } + /** * Performs a deep comparison between two objects & determines if they're different using strict comparison. * @@ -5643,6 +5920,7 @@ function notEqual(source, target) { return isFalse(isEqual(source, target)); } + const jsonNative = JSON; /** * Parses JSON string with safety check for undefined. @@ -5677,6 +5955,7 @@ * assert(stringify({a:1}), '{a:1}'); */ const stringify = jsonNative.stringify; + function createAssertError(source, expected, localOptions) { const options = globalThis.options || localOptions; let errorTitle; @@ -5727,6 +6006,7 @@ } return true; } + /** * Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to. * @@ -5749,6 +6029,7 @@ }); return targetAssign ? assign(targetAssign, results) : results; } + /** * Clears the values out of an array, buffer, and objects like Map that have a clear method. * @@ -5776,6 +6057,7 @@ } return source; } + /** * Creates a structured clone of an object which is a "structured-cloneable type". * @@ -5793,6 +6075,7 @@ function clone(source) { return structuredCloneSafe(source); } + /** * Creates an array with all isFalsy values removed. The values false, null, 0, "", undefined, and NaN are isFalsy. * @@ -5825,6 +6108,7 @@ return isTruthy(item); }); } + /** * Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -5880,6 +6164,7 @@ } return results; } + /** * Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -5925,6 +6210,7 @@ } return results; } + /** * Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. * @@ -5950,9 +6236,10 @@ forOfCompactMap, forOfCompactMapAsync ); + function everyArg(...methods) { if (isAsync(methods[0])) { - return async function(...args) { + return async function (...args) { return every(methods, async (method) => { return every(args, async (item) => { return method(item); @@ -5960,7 +6247,7 @@ }); }; } - return function(...args) { + return function (...args) { return every(methods, (method) => { return every(args, (item) => { return method(item); @@ -5968,6 +6255,7 @@ }); }; } + /** * Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee. * @@ -6013,6 +6301,7 @@ } return results; } + /** * Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee. * @@ -6067,6 +6356,7 @@ } return results; } + /** * Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee. * @@ -6085,6 +6375,7 @@ * }), {b: true, c: true}); */ const filter = generateLoop(filterArray, filterAsyncArray, filterObject, filterAsyncObject, forOfFilter, forOfFilterAsync); + function returnFlow$1(callable) { return (...methods) => { return (arg) => { @@ -6124,6 +6415,7 @@ * // => 1 */ const flowRight = returnFlow$1(eachRight); + function returnFlow(callable) { return (...methods) => { return async (arg) => { @@ -6165,6 +6457,7 @@ * // => 2 */ const flowAsyncRight = returnFlow(eachRightAsync); + function forMap(source, callback) { const cloned = cloneType(source); const method = cloned.push || cloned.add; @@ -6187,6 +6480,7 @@ } return cloned; } + /** * Takes all but the last item in the array. * @@ -6208,6 +6502,7 @@ }); return sortedObject; } + /** * Checks if an object contains something. * @@ -6258,6 +6553,7 @@ } return false; } + /** * Checks if the string has a '.'. * @@ -6271,6 +6567,7 @@ * assert(hasDot('test.js'), true); */ const hasDot = regexTestFactory(/\./); + /** * Checks if a property on an object has a value. If not, it will assign a value. * @@ -6292,6 +6589,7 @@ } return rootObject; }; + class Intervals { list = construct(Map); construct() {} @@ -6385,6 +6683,7 @@ intervals.remove(index); }); } + function merge(target, ...sources) { each(sources, (currentSource) => { each(currentSource, (sourceItem, sourceKey) => { @@ -6398,6 +6697,7 @@ }); return target; } + /** * Set & Get a model. * @@ -6436,6 +6736,7 @@ } return get(modelName, Model.models); } + /** * Takes the first two arguments given and returns them inside a new array. * @@ -6452,6 +6753,7 @@ function pair(argument1, argument2) { return [argument1, argument2]; } + /** * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee. * @@ -6479,6 +6781,7 @@ } return Promise.all(queue); } + /** * Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee. * @@ -6506,6 +6809,7 @@ } return Promise.allSettled(queue); } + /** * A wrapper around the promise constructor. * @@ -6528,6 +6832,7 @@ function promise(callback) { return new Promise(callback); } + /** * Using a deep comparison it checks if properties of two objects using an array are equal. * @@ -6554,6 +6859,7 @@ return isEqual(source[property], compared[property]); }); }; + function setKey(source, key, value) { if (key && isPlainObject(source)) { source[key] = value; @@ -6570,6 +6876,7 @@ } return source; } + function setValue(source, value, key) { if (isNumber(key) && isArray(source)) { source[key] = value; @@ -6582,6 +6889,7 @@ } return source; } + class Store { source; constructor(source = {}) { @@ -6605,6 +6913,7 @@ }); } } + /** * This method returns a new empty array. * @@ -6620,6 +6929,7 @@ const stubArray = () => { return []; }; + /** * This method returns a new empty object. * @@ -6636,6 +6946,7 @@ const stubObject = () => { return {}; }; + /** * This method returns a new empty string. * @@ -6652,6 +6963,7 @@ const stubString = () => { return ''; }; + /** * Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument. * @@ -6703,6 +7015,7 @@ } return results; } + /** * Performs a toggle between 2 values using a deep or strict comparison. * @@ -6723,6 +7036,7 @@ function toggle(value, on = true, off = false) { return isEqual(on, value) ? off : on; } + /** * Unique ID Generator Module. * @@ -6818,6 +7132,7 @@ * assert(uniqID.get(), 0); */ const uniqID = construct(UniqID); + /** * Class representing a virtual storage. A drop in replacement for localStorage. * The virtualStorage function is a factory which wraps the VirtualStorage constructor & returns it. @@ -6919,6 +7234,7 @@ function virtualStorage(initialObject) { return new VirtualStorage(initialObject); } + async function copyToPath(sourceFolder, destinationFolder, file) { const sourcePath = path.join(sourceFolder, file); const destinationPath = path.join(destinationFolder, file); @@ -6941,6 +7257,7 @@ }); return true; } + function currentFile(importMeta) { if (globalThis.__filename) { return __filename; @@ -6953,6 +7270,7 @@ } return path.dirname(url.fileURLToPath(importMeta.url)); } + exports.Chain = Chain; exports.Intervals = Intervals; exports.Model = Model; @@ -7092,8 +7410,9 @@ exports.interval = interval; exports.intervals = intervals; exports.invert = invert; - exports.invoke = invoke; - exports.invokeAsync = invokeAsync; + exports.invokeArray = invokeArray; + exports.invokeCollection = invokeCollection; + exports.invokeCollectionAsync = invokeCollectionAsync; exports.isArguments = isArguments; exports.isArray = isArray; exports.isArrayBuffer = isArrayBuffer; @@ -7305,4 +7624,4 @@ exports.zip = zip; exports.zipObject = zipObject; }); -// # sourceMappingURL=index.bundle.js.map +//# sourceMappingURL=index.bundle.js.map diff --git a/docs/index.js b/docs/index.js index 05f8b035..10ae692b 100644 --- a/docs/index.js +++ b/docs/index.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("fs/promises"),require("path"),require("url")):"function"==typeof define&&define.amd?define(["exports","fs/promises","path","url"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={},t.promises,t.path,t.url)}(this,(function(t,n,r,e){"use strict";function o(t){return t.length=0,t}function i(t){return void 0===t}function c(t){return Boolean(t.length)}function u(t){return null===t}function s(t){return!i(t)&&!u(t)}function a(t){return t}function f(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const a=n.call(e,t,i,r,c,u,o);s(a)&&r.push(a)})):f(t,((t,i,c,u)=>{const a=n(t,i,r,c,u,e,o);s(a)&&r.push(a)})),r}async function h(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const i=await n(t,e,r,o);s(i)&&r.push(i)})),r}const{sign:g}=Math;function y(t){return-1===g(t)}function d(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function A(t,n){return t.forEach(n),t}const b=Array.isArray;function w(t){return b(t)&&t||s(t)&&[t]||[]}function v(t){return t.flat(1/0)}const C=Reflect.construct;function O(t,n=[],r){const e=b(n)?n:[n];return r?C(t,e,r):C(t,e)}function j(...t){const n=O(Map),r=[];return f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function F(t,n=1,r=t.length){return t.splice(n,r)}function I(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function E(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function M(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function x(t,n,r=[],e){return await h(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const T=Object.keys;function B(t){if(t)return T(t)}const N=/\.|\[/,U=/]/g,P="";function k(t){return t.replace(U,P).split(N)}function $(t,n){if(!n)return!1;let r=n;return M(b(t)?t:k(t),(t=>(r=r[t],s(r)))),r}const D=Object.hasOwn;function L(t,...n){if(t)return M(n,(n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}}))}const _=t=>!!s(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function q(t,n){return t?.constructor===n||!1}function V(t){return n=>q(n,t)}function K(t){return t?.constructor?.name}function Z(t){return n=>K(n)===t||!1}function z(t){return function(n,...r){return r?t(n)&&M(r,t):t(n)}}const W=Z("Buffer"),G=z(W),J=(t,n)=>{if(t===n)return!0;if(G(t))return t.equals(n);if(t.toString()===n.toString())if(_(t)){const r=B(t);if(L(n,r))return M(r,(r=>J(t[r],n[r])))}else if(b(t)&&t.length===n.length)return M(t,((t,r)=>J(t,n[r])));return!1};const H=Math.max;function Q(t,n,r=[],e,o){return s(e)?f(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):f(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function X(t,n){const r=[];return await h(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function Y(t,n){return t-n}function tt(t,n){return n-t}const{floor:nt,random:rt}=Math;function et(t,n=0){return nt(rt()*(t-n))+n}const ot=Array.from;function it(t,n,r){if(s(t))return ot(t,n,r)}function ct(t,n=t.length){if(t.length<=1)return it(t);const r=it(t);let e,o,i=0;for(;ii?-1:0:1:-1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}function yt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function dt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function mt(t,n="id",r){return t.sort(((t,e)=>dt(t,e,n,r)))}const At=Z("Number"),bt=z(At);const wt=V(String);function vt(t,n){if(t)return wt(n)?t[n]:Q(n,(n=>t[n]))}function Ct(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function Ot(t){return n=>!!s(n)&&t.test(n)}const jt=Ot(/\.css$/),Ft=Ot(/\.html$/),It=Ot(/\.js$/),Et=Ot(/\.json$/);const Mt=Object.assign;function Rt(t,...n){if(s(t))return Mt(t,...n)}const St=async(t,n,r,e)=>{if(!t)return;const o=B(t);return s(r)?await h(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await h(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function xt(t,n,r,e){if(!t)return;const o=B(t);return s(r)?f(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):f(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const Tt=Z("Set"),Bt=z(Tt);function Nt(t,n){if(Bt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Ut=Z("GeneratorFunction"),Pt=z(Ut);async function kt(t,n,r){if(Bt(t)){for(const r of t)await n(r,t);return t}if(Pt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const $t=t=>!!s(t)&&t instanceof Function,Dt=Z("AsyncFunction"),Lt=z(Dt);function _t(t,n,r,e,o,i){return(c,u,a,f,l)=>{let h;const p=Lt(u);if(s(c)&&u)return h=b(c)?p?n:t:_(c)||$t(c)?p?e:r:o?p?i:o:Pt(c)?i:p?e:r,h(c,u,a,f,l)}}const qt=_t(f,h,xt,St,Nt,kt);class Vt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;qt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const Kt=!0,Zt=!1,zt=()=>{};function Wt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Kt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Jt=O(Gt);function Ht(t,n){return Jt.set(t,n)}const Qt=Reflect.apply;function Xt(t,n,r){if($t(t))return Qt(t,n,r)}async function Yt(t,n,r={}){if(t)return await St(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function tn(t,n,r={},e,o){if(t)return s(e)?xt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):xt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function nn(t){return t?.constructor}function rn(t,n=[]){const r=nn(t);return r===Function&&"function"===r.name?function(){}:O(r,n)}function en(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function on(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const cn=_t(Q,X,tn,Yt,en,on);async function un(t,n){if(!t)return;return R(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function sn(t,n){if(!t)return;return M(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function an(t,n=a){if(b(t)||Bt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function fn(t,n=a,r){if(Pt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(b(t)||Bt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const ln=_t(M,R,sn,un,an,fn);const hn=Function.prototype;function pn(t){return hn.call.bind(t)}const gn=Object.getOwnPropertyNames,yn=Object.getOwnPropertyDescriptor,dn=Object.defineProperty,mn=pn(Object.hasOwnProperty),An=Object.is;const{random:bn}=Math;const{sign:wn}=Math;const vn=Object.entries;async function Cn(t,n=a,r={}){return await St(t,(async(t,e,o,i,c)=>{const u=await n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function On(t,n=a,r={}){return xt(t,((t,e,o,i,c)=>{const u=n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function jn(t,n,r={}){return xt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Fn(t,n,r={}){return await St(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const In=Z("RegExp"),En=z(In),Mn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Rn(t){return t.replace(Mn,"\\$&")}function Sn(t,n){return n?Sn(Q(t,Rn)):RegExp(t.join("|"))}function xn(t){if(t)return B(t).length}const Tn=/[ _-]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Un=/[ _-]+/g,Pn=/[ ]+/g;const kn=/[ _-]+/g;const $n=/[ _-]+/g;function Dn(t,n=1){return t.substring(n)}const Ln=/%(?![\da-f]{2})/gi,_n=/&/g,qn=//g,Kn=/"/g;function Zn(t){return decodeURIComponent(t.replace(Ln,(()=>"%25")))}function zn(t){return t.replace(_n,"&").replace(qn,"<").replace(Vn,">").replace(Kn,""")}const Wn=/\S+/g,Gn=/\w+/g;const Jn=/\w+/g;function Hn(t){return t[0].toUpperCase()}function Qn(t){return Hn(t)+Dn(t)}function Xn(t){return Hn(t)+Dn(t).toLowerCase()}function Yn(t){return nn(t)?.name}function tr(t){return!s(t)}const nr=Z("Map"),rr=z(nr),er=/Array/,or="Array";function ir(t){if(t){const n=Yn(t);if(er.test(n)&&n!==or)return!0}return!1}const cr=Z("BigInt"),ur=z(cr),sr=Z("Boolean"),ar=z(sr),fr=Z("ArrayBuffer"),lr=z(fr);const hr=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const pr=Z("Date"),gr=z(pr);function yr(t){return!1===t}const dr=Z("Float32Array"),mr=z(dr),Ar=Z("Float64Array"),br=z(Ar),{isInteger:wr}=Number,vr=wr,Cr=Z("Int16Array"),Or=z(Cr),jr=Z("Int32Array"),Fr=z(jr),Ir=Z("Int8Array"),Er=z(Ir);function Mr(t){return!!t&&t instanceof Promise}function Rr(t){return!!t&&(Mr(t)||Lt(t)||Pt(t))}const{isSafeInteger:Sr}=Number,xr=Sr;const Tr=Z("Uint16Array"),Br=z(Tr),Nr=Z("Uint32Array"),Ur=z(Nr),Pr=Z("Uint8Array"),kr=z(Pr),$r=Z("Uint8ClampedArray"),Dr=z($r),Lr=Z("WeakMap"),_r=z(Lr),qr=void 0!==globalThis.Deno,Vr=void 0!==globalThis.process&&process.versions&&process.versions.node;function Kr(t,n=!0){return Boolean(t)&&n}function Zr(t,n){return yr(J(t,n))}const zr=JSON;const Wr=zr.stringify;function Gr(t,n,r){const e=globalThis.options||r;let o;return $t(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Wr(t)}\n\t\tExpected: ${Wr(n)}`,e)}async function Jr(t,n,r){const e=await t;return!($t(n)&&!1===await n(e,r))&&!Zr(e,n)||Gr(e,n,r)}const Hr=globalThis.structuredClone;async function Qr(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);s(e)&&r.push(e)}return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const i=await n(r,o,t);s(i)&&e(i)}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);s(c)&&(i?o.set(r,c):o[r]=c)}return o}function Xr(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const i=n(r,e,t);s(i)&&o(i)}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);s(c)&&(o?e.set(r,c):e[r]=c)}return e}const Yr=_t(l,p,On,Cn,Xr,Qr);function te(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=$t(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function ne(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=$t(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const re=_t(S,x,jn,Fn,te,ne);function ee(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const oe=ee(f),ie=ee(I);function ce(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const ue=ce(h),se=ce(E);const ae=Ot(/\./);class fe{list=O(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Kt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const le=O(fe);class he{static models={};constructor(t,n){s(n)?(Rt(this,n),this.modelName=t,he.models.set(t,n)):Rt(this,t)}}class pe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;xt(t,(n=>{t[n]=new pe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new pe(r),!0)})}}class ge{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return s(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ye=O(ge);class de{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Vt,t.Intervals=fe,t.Model=he,t.Store=pe,t.Timers=Gt,t.UniqID=ge,t.VirtualStorage=de,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Xt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const r={};return f(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Rr(t)||Rr(n)?Jr(t,n,r):!($t(n)&&!1===n(t,r))&&!Zr(t,n)||Gr(t,n,r)},t.assertAsync=Jr,t.assign=Rt,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=cn(t,(t=>$t(t)?t.bind(n):t));return r?Rt(r,e):e},t.cacheNativeMethod=pn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Tn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return O(Vt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(G(t))return lt(t);if(b(t))return o(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=o,t.clearBuffer=lt,t.clearIntervals=function(){Wt(setTimeout(zt,0),(t=>{le.remove(t)}))},t.clearTimers=function(){Wt(setTimeout(zt,0),(t=>{Jt.remove(t)}))},t.clone=function(t){return Hr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=rn,t.compact=function(t){if(_(t)){const n=B(t),r=n.length,e={};for(let o=0;oKr(t)))},t.compactKeys=function(t){const n=[];return xt(t,((t,r)=>{s(t)&&n.push(r)})),n},t.compactMap=Yr,t.compactMapArray=l,t.compactMapAsyncArray=p,t.compactMapAsyncObject=Cn,t.compactMapObject=On,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{const c=r.join(e,i);if((await n.stat(c)).isDirectory()){const u=r.join(o,i.replace(e,""));await n.mkdir(u,{recursive:!0}),await t(c,u)}else await async function(t,e,o){const i=r.join(t,o),c=r.join(e,o);await n.copyFile(i,c)}(e,o,i)})),!0},t.countBy=function(t,n){const r={};let e;return f(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return f(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return f(t,(t=>{t[n]||r++})),r},t.currentFile=function(t){return globalThis.__filename?__filename:e.fileURLToPath(t.url)},t.currentPath=function(t){return globalThis.__dirname?__dirname:r.dirname(e.fileURLToPath(t.url))},t.curry=function(t,n=t.length){const r=[],e=(...i)=>{if(r.push(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.curryRight=function(t,n=t.length){const r=[],e=(...i)=>{if(r.unshift(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.debounce=function(t,n){function r(...t){r.id!==Zt&&Jt.remove(r.id),r.id=Ht((()=>{r.callable(...t),r.id=Zt}),n)}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{r.id!==Zt&&(Jt.remove(r.id),r.id=Zt)},r},t.deduct=function(t){return t-1},t.defProp=dn,t.difference=j,t.divide=function(t,n){return t/n},t.drop=F,t.dropRight=(t,n=1,r=t.length)=>F(t,0,r-n),t.each=qt,t.eachArray=f,t.eachAsyncArray=h,t.eachAsyncObject=St,t.eachObject=xt,t.eachRight=I,t.eachRightAsync=E,t.ensureArray=w,t.ensureBuffer=function(t){return G(t)&&t||s(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Rn,t.escapeRegexRegex=Mn,t.every=ln,t.everyArg=function(...t){return Lt(t[0])?async function(...n){return ln(t,(async t=>ln(n,(async n=>t(n)))))}:function(...n){return ln(t,(t=>ln(n,(n=>t(n)))))}},t.everyArray=M,t.everyAsyncArray=R,t.everyAsyncObject=un,t.everyObject=sn,t.falsy=Zt,t.filter=re,t.filterArray=S,t.filterAsyncArray=x,t.filterAsyncObject=Fn,t.filterObject=jn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=ht,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(w(n))),[]);return r},t.flattenDeep=v,t.flow=oe,t.flowAsync=ue,t.flowAsyncRight=se,t.flowRight=ie,t.forEach=A,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else $t(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=Nt,t.forOfAsync=kt,t.forOfCompactMap=Xr,t.forOfCompactMapAsync=Qr,t.forOfEvery=an,t.forOfEveryAsync=fn,t.forOfFilter=te,t.forOfFilterAsync=ne,t.forOfMap=en,t.forOfMapAsync=on,t.generateLoop=_t,t.get=$,t.getEntries=function(t){if(s(t))return vn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return mt(t,n)[0]},t.getLowest=function(t,n){return gt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return M(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=yn,t.getPropNames=gn,t.getType=nn,t.getTypeName=Yn,t.groupBy=function(t,n){const r={};return f(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(tr(n)||tr(r))return!1;if(wt(n))return wt(r)?n.includes(r,e):En(r)?r.test(n):$t(r)?Boolean(r(n)):ln(r,(r=>Boolean(t(n,r))));if(b(n)){if(wt(r))return n.includes(r,e);if(En(r))return ln(n,(t=>t.test(r)));if(b(r))return ln(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}})))},t.hasDot=ae,t.hasKeys=L,t.hasLength=c,t.hasProp=mn,t.hasValue=s,t.htmlEntities=zn,t.ifInvoke=function(t,...n){if($t(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!s(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(s(t)){if($t(n))return r?Xt(n,r,e):n(...e);if(_(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eqt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return f(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return l(t,(t=>{if(M(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return le.set(t,n)},t.intervals=le,t.invert=function(t,n={}){if(t)return xt(t,((t,r)=>{n[t]=r})),n},t.invoke=function(t,n,r){return Q(t,((t,e)=>t[n](r,e)))},t.invokeAsync=function(t,n,r){return X(t,(async(t,e)=>t[n](r,e)))},t.isArguments=function(t){return!!s(t)&&"[object Arguments]"===t.toString()},t.isArray=b,t.isArrayBuffer=lr,t.isArrayBufferCall=fr,t.isArrayLike=function(t,n){if(tr(t)||$t(t))return!1;if(b(t)||ir(t))return!0;const r=t.length;if(!tr(r)||!bt(r)||r<0)return!1;if(n){const n=B(t);return!!n&&ln(n,((t,n)=>n>=0&&bt(n)))}return!0},t.isAsync=Lt,t.isAsyncCall=Dt,t.isBigInt=ur,t.isBigIntCall=cr,t.isBoolean=ar,t.isBooleanCall=sr,t.isBuffer=G,t.isBufferCall=W,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(s(t)){const n=t?.constructor?.name;return hr.test(n)}return!1},t.isConstructor=q,t.isConstructorFactory=V,t.isConstructorNameFactory=Z,t.isDate=gr,t.isDateCall=pr,t.isDeno=qr,t.isEmpty=function(t){return wt(t)||b(t)?!c(t):_(t)?!xn(t):!s(t)},t.isEqual=J,t.isF32=mr,t.isF32Call=dr,t.isF64=br,t.isF64Call=Ar,t.isFalse=yr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=jt,t.isFileHTML=Ft,t.isFileJS=It,t.isFileJSON=Et,t.isFloat=vr,t.isFunction=$t,t.isGenerator=Pt,t.isGeneratorCall=Ut,t.isI16=Or,t.isI16Call=Cr,t.isI32=Fr,t.isI32Call=jr,t.isI8=Er,t.isI8Call=Ir,t.isIterable=function(t){return s(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Rr,t.isMap=rr,t.isMapCall=nr,t.isMatchArray=function(t,n){return t.length===n.length&&M(t,((t,r)=>J(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=B(t),e=B(n);return r.length===e.length&&M(r,(r=>t[r]===n[r]))},t.isNegative=y,t.isNodejs=Vr,t.isNotArray=function(t){return!b(t)},t.isNotNumber=function(t){return!bt(t)},t.isNotString=function(t){return!wt(t)},t.isNull=u,t.isNumber=bt,t.isNumberCall=At,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=_,t.isPositive=function(t){return 1===wn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Mr,t.isRegex=En,t.isRegexCall=In,t.isRelated=function(t,n){return!tr(t)&&!tr(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xr,t.isSame=An,t.isSameType=function(t,n){const r=nn(t),e=nn(n);return r===e&&r.name===e.name},t.isSet=Bt,t.isSetCall=Tt,t.isString=wt,t.isTrue=function(t){return!0===t},t.isTruthy=Kr,t.isTypeFactory=z,t.isTypedArray=ir,t.isU16=Br,t.isU16Call=Tr,t.isU32=Ur,t.isU32Call=Nr,t.isU8=kr,t.isU8C=Dr,t.isU8CCall=$r,t.isU8Call=Pr,t.isUndefined=i,t.isWeakMap=_r,t.isWeakMapCall=Lr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return zr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Bn," ").trim().toLowerCase().replace(Nn,"-")},t.keys=B,t.largest=function(t){return H(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=cn,t.mapArray=Q,t.mapAsyncArray=X,t.mapAsyncObject=Yt,t.mapObject=tn,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{qt(r,((r,e)=>{if(n[e]&&(_(r)||b(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return s(n)?O(he,[t,n]):$(t,he.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=tr,t.noop=zt,t.notEqual=Zr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Mt,t.objectEntries=vn,t.objectSize=xn,t.omit=function(t,n){if(t){if(b(n)){const r=Sn(n);return jn(t,((t,n)=>!r.test(n)))}if(En(n))return jn(t,((t,r)=>!n.test(r)));if(wt(n))return jn(t,((t,r)=>r!==n));if(bt(n)){const r=n.toString();return jn(t,((t,n)=>n!==r))}return $t(n)?jn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(s(n)||(n=t(...r)),n)},t.onlyUnique=st,t.over=function(t){return(...n)=>cn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>ln(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[l(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return f(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return Q(t,(t=>vt(t,n)))},t.pluckObject=vt,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=B(t))=>M(r,(r=>J(t[r],n[r]))),t.randomFloat=function(t,n=0){return bn()*(t-n)+n},t.randomInt=et,t.range=function(t,n,r=1,e=[]){return y(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=Ot,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return ct(t);if(1===n)return[t[et(r-1,0)]];const e=[],o={};let i,c=0;for(;cyt(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>Ct(t,e,n,r)))},t.sortCollectionAscending=mt,t.sortCollectionAscendingFilter=dt,t.sortCollectionDescending=gt,t.sortCollectionDescendingFilter=pt,t.sortNumberAscending=function(t){return t.sort(Y)},t.sortNumberDescening=function(t){return t.sort(tt)},t.sortObjectsAlphabetically=yt,t.sortObjectsAlphabeticallyReverse=Ct,t.sortUnique=at,t.stringify=Wr,t.stubArray=()=>[],t.stubFalse=()=>Zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>Kt,t.subtract=Y,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=tt,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=Kt:(r.callable(...t),r.id=Ht((()=>{r.shouldThrottle&&r.callable(...t),r.id=Zt}),n))}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{Jt.remove(r.id),r.id=Zt},r},t.timer=Ht,t.timers=Jt,t.times=Wt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=Kt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return xt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ft(v(t))},t.uniqID=ye,t.unique=ft,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eQn(t)))},t.upperFirstLetter=Hn,t.upperFirstOnly=Xn,t.upperFirstOnlyAll=function(t){return t.replace(Jn,(t=>Xn(t)))},t.virtualStorage=function(t){return new de(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(Gn)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=O(Map),r=[];return 2===t.length?j(t[0],t[1]):(f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return f(t,((t,e)=>{r[t]=n[e]})),r}})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("fs/promises"),require("path"),require("url")):"function"==typeof define&&define.amd?define(["exports","fs/promises","path","url"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={},t.promises,t.path,t.url)}(this,(function(t,n,r,e){"use strict";function o(t){return t.length=0,t}function i(t){return void 0===t}function c(t){return Boolean(t.length)}function u(t){return null===t}function s(t){return!i(t)&&!u(t)}function a(t){return t}function f(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const a=n.call(e,t,i,r,c,u,o);s(a)&&r.push(a)})):f(t,((t,i,c,u)=>{const a=n(t,i,r,c,u,e,o);s(a)&&r.push(a)})),r}async function h(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const i=await n(t,e,r,o);s(i)&&r.push(i)})),r}const{sign:g}=Math;function y(t){return-1===g(t)}function d(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function A(t,n){return t.forEach(n),t}const b=Array.isArray;function w(t){return b(t)&&t||s(t)&&[t]||[]}function v(t){return t.flat(1/0)}const C=Reflect.construct;function O(t,n=[],r){const e=b(n)?n:[n];return r?C(t,e,r):C(t,e)}function j(...t){const n=O(Map),r=[];return f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function F(t,n=1,r=t.length){return t.splice(n,r)}function I(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function E(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function M(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function x(t,n,r=[],e){return await h(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const T=Object.keys;function B(t){if(t)return T(t)}const N=/\.|\[/,U=/]/g,P="";function k(t){return t.replace(U,P).split(N)}function $(t,n){if(!n)return!1;let r=n;return M(b(t)?t:k(t),(t=>(r=r[t],s(r)))),r}const D=Object.hasOwn;function L(t,...n){if(t)return M(n,(n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}}))}const _=t=>!!s(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function q(t,n){return t?.constructor===n||!1}function V(t){return n=>q(n,t)}function K(t){return t?.constructor?.name}function Z(t){return n=>K(n)===t||!1}function z(t){return function(n,...r){return r?t(n)&&M(r,t):t(n)}}const W=Z("Buffer"),G=z(W),J=(t,n)=>{if(t===n)return!0;if(G(t))return t.equals(n);if(t.toString()===n.toString())if(_(t)){const r=B(t);if(L(n,r))return M(r,(r=>J(t[r],n[r])))}else if(b(t)&&t.length===n.length)return M(t,((t,r)=>J(t,n[r])));return!1};const H=Math.max;function Q(t,n,r=[],e,o){return s(e)?f(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):f(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function X(t,n){const r=[];return await h(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function Y(t,n){return t-n}function tt(t,n){return n-t}const{floor:nt,random:rt}=Math;function et(t,n=0){return nt(rt()*(t-n))+n}const ot=Array.from;function it(t,n,r){if(s(t))return ot(t,n,r)}function ct(t,n=t.length){if(t.length<=1)return it(t);const r=it(t);let e,o,i=0;for(;ii?-1:0:1:-1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}function yt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function dt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function mt(t,n="id",r){return t.sort(((t,e)=>dt(t,e,n,r)))}const At=Z("Number"),bt=z(At);const wt=V(String);function vt(t,n){if(t)return wt(n)?t[n]:Q(n,(n=>t[n]))}function Ct(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function Ot(t){return n=>!!s(n)&&t.test(n)}const jt=Ot(/\.css$/),Ft=Ot(/\.html$/),It=Ot(/\.js$/),Et=Ot(/\.json$/);const Mt=Object.assign;function Rt(t,...n){if(s(t))return Mt(t,...n)}const St=async(t,n,r,e)=>{if(!t)return;const o=B(t);return s(r)?await h(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await h(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function xt(t,n,r,e){if(!t)return;const o=B(t);return s(r)?f(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):f(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const Tt=Z("Set"),Bt=z(Tt);function Nt(t,n){if(Bt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Ut=Z("GeneratorFunction"),Pt=z(Ut);async function kt(t,n,r){if(Bt(t)){for(const r of t)await n(r,t);return t}if(Pt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const $t=t=>!!s(t)&&t instanceof Function,Dt=Z("AsyncFunction"),Lt=z(Dt);function _t(t,n,r,e,o,i){return(c,u,a,f,l)=>{let h;const p=Lt(u);if(s(c)&&u)return h=b(c)?p?n:t:_(c)||$t(c)?p?e:r:o?p?i:o:Pt(c)?i:p?e:r,h(c,u,a,f,l)}}const qt=_t(f,h,xt,St,Nt,kt);class Vt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;qt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const Kt=!0,Zt=!1,zt=()=>{};function Wt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Kt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Jt=O(Gt);function Ht(t,n){return Jt.set(t,n)}const Qt=Reflect.apply;function Xt(t,n,r){if($t(t))return Qt(t,n,r)}async function Yt(t,n,r={}){if(t)return await St(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function tn(t,n,r={},e,o){if(t)return s(e)?xt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):xt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function nn(t){return t?.constructor}function rn(t,n=[]){const r=nn(t);return r===Function&&"function"===r.name?function(){}:O(r,n)}function en(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function on(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const cn=_t(Q,X,tn,Yt,en,on);async function un(t,n){if(!t)return;return R(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function sn(t,n){if(!t)return;return M(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function an(t,n=a){if(b(t)||Bt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function fn(t,n=a,r){if(Pt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(b(t)||Bt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const ln=_t(M,R,sn,un,an,fn);const hn=Function.prototype;function pn(t){return hn.call.bind(t)}const gn=Object.getOwnPropertyNames,yn=Object.getOwnPropertyDescriptor,dn=Object.defineProperty,mn=pn(Object.hasOwnProperty),An=Object.is;const{random:bn}=Math;const{sign:wn}=Math;const vn=Object.entries;async function Cn(t,n=a,r={}){return await St(t,(async(t,e,o,i,c)=>{const u=await n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function On(t,n=a,r={}){return xt(t,((t,e,o,i,c)=>{const u=n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function jn(t,n,r={}){return xt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Fn(t,n,r={}){return await St(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const In=Z("RegExp"),En=z(In),Mn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Rn(t){return t.replace(Mn,"\\$&")}function Sn(t,n){return n?Sn(Q(t,Rn)):RegExp(t.join("|"))}function xn(t){if(t)return B(t).length}const Tn=/[ _-]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Un=/[ _-]+/g,Pn=/[ ]+/g;const kn=/[ _-]+/g;const $n=/[ _-]+/g;function Dn(t,n=1){return t.substring(n)}const Ln=/%(?![\da-f]{2})/gi,_n=/&/g,qn=//g,Kn=/"/g;function Zn(t){return decodeURIComponent(t.replace(Ln,(()=>"%25")))}function zn(t){return t.replace(_n,"&").replace(qn,"<").replace(Vn,">").replace(Kn,""")}const Wn=/\S+/g,Gn=/\w+/g;const Jn=/\w+/g;function Hn(t){return t[0].toUpperCase()}function Qn(t){return Hn(t)+Dn(t)}function Xn(t){return Hn(t)+Dn(t).toLowerCase()}function Yn(t){return nn(t)?.name}function tr(t){return!s(t)}const nr=Z("Map"),rr=z(nr),er=/Array/,or="Array";function ir(t){if(t){const n=Yn(t);if(er.test(n)&&n!==or)return!0}return!1}const cr=Z("BigInt"),ur=z(cr),sr=Z("Boolean"),ar=z(sr),fr=Z("ArrayBuffer"),lr=z(fr);const hr=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const pr=Z("Date"),gr=z(pr);function yr(t){return!1===t}const dr=Z("Float32Array"),mr=z(dr),Ar=Z("Float64Array"),br=z(Ar),{isInteger:wr}=Number,vr=wr,Cr=Z("Int16Array"),Or=z(Cr),jr=Z("Int32Array"),Fr=z(jr),Ir=Z("Int8Array"),Er=z(Ir);function Mr(t){return!!t&&t instanceof Promise}function Rr(t){return!!t&&(Mr(t)||Lt(t)||Pt(t))}const{isSafeInteger:Sr}=Number,xr=Sr;const Tr=Z("Uint16Array"),Br=z(Tr),Nr=Z("Uint32Array"),Ur=z(Nr),Pr=Z("Uint8Array"),kr=z(Pr),$r=Z("Uint8ClampedArray"),Dr=z($r),Lr=Z("WeakMap"),_r=z(Lr),qr=void 0!==globalThis.Deno,Vr=void 0!==globalThis.process&&process.versions&&process.versions.node;function Kr(t,n=!0){return Boolean(t)&&n}function Zr(t,n){return yr(J(t,n))}const zr=JSON;const Wr=zr.stringify;function Gr(t,n,r){const e=globalThis.options||r;let o;return $t(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Wr(t)}\n\t\tExpected: ${Wr(n)}`,e)}async function Jr(t,n,r){const e=await t;return!($t(n)&&!1===await n(e,r))&&!Zr(e,n)||Gr(e,n,r)}const Hr=globalThis.structuredClone;async function Qr(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);s(e)&&r.push(e)}return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const i=await n(r,o,t);s(i)&&e(i)}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);s(c)&&(i?o.set(r,c):o[r]=c)}return o}function Xr(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const i=n(r,e,t);s(i)&&o(i)}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);s(c)&&(o?e.set(r,c):e[r]=c)}return e}const Yr=_t(l,p,On,Cn,Xr,Qr);function te(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=$t(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function ne(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=$t(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const re=_t(S,x,jn,Fn,te,ne);function ee(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const oe=ee(f),ie=ee(I);function ce(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const ue=ce(h),se=ce(E);const ae=Ot(/\./);class fe{list=O(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Kt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const le=O(fe);class he{static models={};constructor(t,n){s(n)?(Rt(this,n),this.modelName=t,he.models.set(t,n)):Rt(this,t)}}class pe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;xt(t,(n=>{t[n]=new pe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new pe(r),!0)})}}class ge{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return s(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ye=O(ge);class de{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Vt,t.Intervals=fe,t.Model=he,t.Store=pe,t.Timers=Gt,t.UniqID=ge,t.VirtualStorage=de,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Xt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const r={};return f(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Rr(t)||Rr(n)?Jr(t,n,r):!($t(n)&&!1===n(t,r))&&!Zr(t,n)||Gr(t,n,r)},t.assertAsync=Jr,t.assign=Rt,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=cn(t,(t=>$t(t)?t.bind(n):t));return r?Rt(r,e):e},t.cacheNativeMethod=pn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Tn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return O(Vt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(G(t))return lt(t);if(b(t))return o(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=o,t.clearBuffer=lt,t.clearIntervals=function(){Wt(setTimeout(zt,0),(t=>{le.remove(t)}))},t.clearTimers=function(){Wt(setTimeout(zt,0),(t=>{Jt.remove(t)}))},t.clone=function(t){return Hr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=rn,t.compact=function(t){if(_(t)){const n=B(t),r=n.length,e={};for(let o=0;oKr(t)))},t.compactKeys=function(t){const n=[];return xt(t,((t,r)=>{s(t)&&n.push(r)})),n},t.compactMap=Yr,t.compactMapArray=l,t.compactMapAsyncArray=p,t.compactMapAsyncObject=Cn,t.compactMapObject=On,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{const c=r.join(e,i);if((await n.stat(c)).isDirectory()){const u=r.join(o,i.replace(e,""));await n.mkdir(u,{recursive:!0}),await t(c,u)}else await async function(t,e,o){const i=r.join(t,o),c=r.join(e,o);await n.copyFile(i,c)}(e,o,i)})),!0},t.countBy=function(t,n){const r={};let e;return f(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return f(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return f(t,(t=>{t[n]||r++})),r},t.currentFile=function(t){return globalThis.__filename?__filename:e.fileURLToPath(t.url)},t.currentPath=function(t){return globalThis.__dirname?__dirname:r.dirname(e.fileURLToPath(t.url))},t.curry=function(t,n=t.length){const r=[],e=(...i)=>{if(r.push(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.curryRight=function(t,n=t.length){const r=[],e=(...i)=>{if(r.unshift(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.debounce=function(t,n){function r(...t){r.id!==Zt&&Jt.remove(r.id),r.id=Ht((()=>{r.callable(...t),r.id=Zt}),n)}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{r.id!==Zt&&(Jt.remove(r.id),r.id=Zt)},r},t.deduct=function(t){return t-1},t.defProp=dn,t.difference=j,t.divide=function(t,n){return t/n},t.drop=F,t.dropRight=(t,n=1,r=t.length)=>F(t,0,r-n),t.each=qt,t.eachArray=f,t.eachAsyncArray=h,t.eachAsyncObject=St,t.eachObject=xt,t.eachRight=I,t.eachRightAsync=E,t.ensureArray=w,t.ensureBuffer=function(t){return G(t)&&t||s(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Rn,t.escapeRegexRegex=Mn,t.every=ln,t.everyArg=function(...t){return Lt(t[0])?async function(...n){return ln(t,(async t=>ln(n,(async n=>t(n)))))}:function(...n){return ln(t,(t=>ln(n,(n=>t(n)))))}},t.everyArray=M,t.everyAsyncArray=R,t.everyAsyncObject=un,t.everyObject=sn,t.falsy=Zt,t.filter=re,t.filterArray=S,t.filterAsyncArray=x,t.filterAsyncObject=Fn,t.filterObject=jn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=ht,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(w(n))),[]);return r},t.flattenDeep=v,t.flow=oe,t.flowAsync=ue,t.flowAsyncRight=se,t.flowRight=ie,t.forEach=A,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else $t(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=Nt,t.forOfAsync=kt,t.forOfCompactMap=Xr,t.forOfCompactMapAsync=Qr,t.forOfEvery=an,t.forOfEveryAsync=fn,t.forOfFilter=te,t.forOfFilterAsync=ne,t.forOfMap=en,t.forOfMapAsync=on,t.generateLoop=_t,t.get=$,t.getEntries=function(t){if(s(t))return vn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return mt(t,n)[0]},t.getLowest=function(t,n){return gt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return M(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=yn,t.getPropNames=gn,t.getType=nn,t.getTypeName=Yn,t.groupBy=function(t,n){const r={};return f(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(tr(n)||tr(r))return!1;if(wt(n))return wt(r)?n.includes(r,e):En(r)?r.test(n):$t(r)?Boolean(r(n)):ln(r,(r=>Boolean(t(n,r))));if(b(n)){if(wt(r))return n.includes(r,e);if(En(r))return ln(n,(t=>t.test(r)));if(b(r))return ln(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}})))},t.hasDot=ae,t.hasKeys=L,t.hasLength=c,t.hasProp=mn,t.hasValue=s,t.htmlEntities=zn,t.ifInvoke=function(t,...n){if($t(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!s(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(s(t)){if($t(n))return r?Xt(n,r,e):n(...e);if(_(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eqt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return f(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return l(t,(t=>{if(M(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return le.set(t,n)},t.intervals=le,t.invert=function(t,n={}){if(t)return xt(t,((t,r)=>{n[t]=r})),n},t.invokeArray=function(t,n,r){if(!t)return;const e=t.length;if(s(r))for(let o=0;ot[n].call(e,r):(t,e)=>t[n](r))},t.invokeCollectionAsync=function(t,n,r,e){return X(t,e?t=>t[n].call(e,r):async t=>t[n](r))},t.isArguments=function(t){return!!s(t)&&"[object Arguments]"===t.toString()},t.isArray=b,t.isArrayBuffer=lr,t.isArrayBufferCall=fr,t.isArrayLike=function(t,n){if(tr(t)||$t(t))return!1;if(b(t)||ir(t))return!0;const r=t.length;if(!tr(r)||!bt(r)||r<0)return!1;if(n){const n=B(t);return!!n&&ln(n,((t,n)=>n>=0&&bt(n)))}return!0},t.isAsync=Lt,t.isAsyncCall=Dt,t.isBigInt=ur,t.isBigIntCall=cr,t.isBoolean=ar,t.isBooleanCall=sr,t.isBuffer=G,t.isBufferCall=W,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(s(t)){const n=t?.constructor?.name;return hr.test(n)}return!1},t.isConstructor=q,t.isConstructorFactory=V,t.isConstructorNameFactory=Z,t.isDate=gr,t.isDateCall=pr,t.isDeno=qr,t.isEmpty=function(t){return wt(t)||b(t)?!c(t):_(t)?!xn(t):!s(t)},t.isEqual=J,t.isF32=mr,t.isF32Call=dr,t.isF64=br,t.isF64Call=Ar,t.isFalse=yr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=jt,t.isFileHTML=Ft,t.isFileJS=It,t.isFileJSON=Et,t.isFloat=vr,t.isFunction=$t,t.isGenerator=Pt,t.isGeneratorCall=Ut,t.isI16=Or,t.isI16Call=Cr,t.isI32=Fr,t.isI32Call=jr,t.isI8=Er,t.isI8Call=Ir,t.isIterable=function(t){return s(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Rr,t.isMap=rr,t.isMapCall=nr,t.isMatchArray=function(t,n){return t.length===n.length&&M(t,((t,r)=>J(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=B(t),e=B(n);return r.length===e.length&&M(r,(r=>t[r]===n[r]))},t.isNegative=y,t.isNodejs=Vr,t.isNotArray=function(t){return!b(t)},t.isNotNumber=function(t){return!bt(t)},t.isNotString=function(t){return!wt(t)},t.isNull=u,t.isNumber=bt,t.isNumberCall=At,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=_,t.isPositive=function(t){return 1===wn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Mr,t.isRegex=En,t.isRegexCall=In,t.isRelated=function(t,n){return!tr(t)&&!tr(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xr,t.isSame=An,t.isSameType=function(t,n){const r=nn(t),e=nn(n);return r===e&&r.name===e.name},t.isSet=Bt,t.isSetCall=Tt,t.isString=wt,t.isTrue=function(t){return!0===t},t.isTruthy=Kr,t.isTypeFactory=z,t.isTypedArray=ir,t.isU16=Br,t.isU16Call=Tr,t.isU32=Ur,t.isU32Call=Nr,t.isU8=kr,t.isU8C=Dr,t.isU8CCall=$r,t.isU8Call=Pr,t.isUndefined=i,t.isWeakMap=_r,t.isWeakMapCall=Lr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return zr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Bn," ").trim().toLowerCase().replace(Nn,"-")},t.keys=B,t.largest=function(t){return H(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=cn,t.mapArray=Q,t.mapAsyncArray=X,t.mapAsyncObject=Yt,t.mapObject=tn,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{qt(r,((r,e)=>{if(n[e]&&(_(r)||b(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return s(n)?O(he,[t,n]):$(t,he.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=tr,t.noop=zt,t.notEqual=Zr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Mt,t.objectEntries=vn,t.objectSize=xn,t.omit=function(t,n){if(t){if(b(n)){const r=Sn(n);return jn(t,((t,n)=>!r.test(n)))}if(En(n))return jn(t,((t,r)=>!n.test(r)));if(wt(n))return jn(t,((t,r)=>r!==n));if(bt(n)){const r=n.toString();return jn(t,((t,n)=>n!==r))}return $t(n)?jn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(s(n)||(n=t(...r)),n)},t.onlyUnique=st,t.over=function(t){return(...n)=>cn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>ln(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[l(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return f(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return Q(t,(t=>vt(t,n)))},t.pluckObject=vt,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=B(t))=>M(r,(r=>J(t[r],n[r]))),t.randomFloat=function(t,n=0){return bn()*(t-n)+n},t.randomInt=et,t.range=function(t,n,r=1,e=[]){return y(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=Ot,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return ct(t);if(1===n)return[t[et(r-1,0)]];const e=[],o={};let i,c=0;for(;cyt(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>Ct(t,e,n,r)))},t.sortCollectionAscending=mt,t.sortCollectionAscendingFilter=dt,t.sortCollectionDescending=gt,t.sortCollectionDescendingFilter=pt,t.sortNumberAscending=function(t){return t.sort(Y)},t.sortNumberDescening=function(t){return t.sort(tt)},t.sortObjectsAlphabetically=yt,t.sortObjectsAlphabeticallyReverse=Ct,t.sortUnique=at,t.stringify=Wr,t.stubArray=()=>[],t.stubFalse=()=>Zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>Kt,t.subtract=Y,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=tt,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=Kt:(r.callable(...t),r.id=Ht((()=>{r.shouldThrottle&&r.callable(...t),r.id=Zt}),n))}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{Jt.remove(r.id),r.id=Zt},r},t.timer=Ht,t.timers=Jt,t.times=Wt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=Kt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return xt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ft(v(t))},t.uniqID=ye,t.unique=ft,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eQn(t)))},t.upperFirstLetter=Hn,t.upperFirstOnly=Xn,t.upperFirstOnlyAll=function(t){return t.replace(Jn,(t=>Xn(t)))},t.virtualStorage=function(t){return new de(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(Gn)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=O(Map),r=[];return 2===t.length?j(t[0],t[1]):(f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return f(t,((t,e)=>{r[t]=n[e]})),r}})); //# sourceMappingURL=index.js.map diff --git a/docs/sourceMap.js b/docs/sourceMap.js index 4766e4cb..74fcd9fd 100644 --- a/docs/sourceMap.js +++ b/docs/sourceMap.js @@ -1 +1 @@ -window.docMap = {"categories":[{"title":"array","items":["chunk","clearArray","cloneArray","compactMapArray","compactMapAsyncArray","difference","drop","dropRight","eachArray","eachAsyncArray","eachRight","eachRightAsync","ensureArray","everyArray","everyAsyncArray","filterArray","filterAsyncArray","first","flatten","flattenDeep","getNumberInsertIndex","inAsync","initial","intersection","isMatchArray","largest","last","mapArray","mapAsyncArray","mapRightArray","mapWhile","partition","range","remove","removeBy","rest","right","sample","shuffle","smallest","sortNumberAscending","sortNumberDescening","take","takeRight","timesMapAsync","toArray","unZip","union","unique","untilFalseArray","untilTrueArray","whileCompactMap","whileEachArray","whileMapArray","without","xor","zip"]},{"title":"browser","items":["Crate","Crate.clear","Crate.getItem","Crate.removeItem","Crate.setItem","crate","eventAdd","eventRemove","importjs","isAgent","isEnter","virtualStorage"]},{"title":"buffer","items":["clearBuffer","ensureBuffer"]},{"title":"class","items":["construct"]},{"title":"collection","items":["countBy","countKey","countWithoutKey","findIndex","findItem","getHighest","getLowest","groupBy","indexBy","invoke","invokeAsync","pluck","sortCollectionAlphabetically","sortCollectionAlphabeticallyReverse","sortCollectionAscending","sortCollectionDescending"]},{"title":"file","items":["getFileExtension","getFilename","isFileCSS","isFileHTML","isFileJS","isFileJSON"]},{"title":"function","items":["after","apply","ary","before","chain","clearIntervals","clearTimers","curry","debounce","ifInvoke","inSync","interval","negate","noop","nthArg","once","over","overEvery","reArg","throttle","timer","wrap"]},{"title":"math","items":["add","deduct","divide","increment","multiply","randomFloat","remainder","subtract","subtractAll","subtractReverse","sumAll"]},{"title":"number","items":["isNegative","isNumberEqual","isNumberInRange","isNumberNotInRange","isPositive","isZero","randomInt"]},{"title":"object","items":["assign","compactKeys","compactMapAsyncObject","compactMapObject","defProp","eachAsyncObject","eachObject","everyAsyncObject","everyObject","filterAsyncObject","filterObject","getEntries","getPropDesc","getPropNames","hasAnyKeys","hasKeys","invert","isMatchObject","isSame","keys","mapObject","mapObjectAsync","objectSize","omit","pick","pluckObject","unZipObject","zipObject"]},{"title":"regex","items":["arrayToRegex","regexSafe"]},{"title":"string","items":["camelCase","chunkString","htmlEntities","initialString","insertInRange","kebabCase","lowerCase","rawURLDecode","replaceList","restString","rightString","sanitize","snakeCase","tokenize","truncate","truncateRight","upperCase","upperFirst","upperFirstAll","upperFirstLetter","upperFirstOnly","upperFirstOnlyAll"]},{"title":"type","items":["cloneType","getType","getTypeName","hasValue","isArguments","isArray","isArrayBuffer","isArrayLike","isAsync","isBigInt","isBoolean","isBuffer","isChild","isCloneable","isConstructor","isDate","isEmpty","isF32","isF64","isFalsy","isFloat","isFunction","isGenerator","isI16","isI32","isI8","isIterable","isKindAsync","isMap","isNotArray","isNotNumber","isNotString","isNull","isNumber","isParent","isPlainObject","isPrimitive","isPromise","isRegex","isRelated","isSafeInt","isSet","isString","isTruthy","isTypedArray","isU16","isU32","isU8","isU8C","isUndefined","isWeakMap","noValue"]},{"title":"utility","items":["UniqID","UniqID.free","UniqID.get","arraysToObject","assert","bindAll","cacheNativeMethod","calcProgress","clear","clone","compact","compactMap","concurrent","concurrentStatus","each","every","filter","flow","flowAsync","flowAsyncRight","flowRight","forOfCompactMap","forOfCompactMap","forOfCompactMapAsync","forOfCompactMapAsync","forOfEvery","forOfEveryAsync","forOfFilter","forOfFilterAsync","get","has","hasDot","hasLength","ifNotAssign","ifValue","isEqual","isFalse","isTrue","jsonParse","map","model","notEqual","pair","promise","propertyMatch","returnValue","stringify","stubArray","stubFalse","stubObject","stubString","stubTrue","times","timesAsync","timesMap","toPath","toggle","uniqID"]}],"items":{"chunk":{"category":"array","description":"Chunks an array according to a user defined number.","examples":[{"tag":"example","optional":false,"description":"import { chunk, assert } from '@universalweb/acid'; assert(chunk([1,2,3], 1), [[1],[2],[3]]);","source":"import { chunk, assert } from \"@universalweb/acid\";\nassert(chunk([1, 2, 3], 1), [[1], [2], [3]]);\n"}],"name":"chunk","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array to be chunked.","source":"* {Array} array - Array to be chunked."},{"tag":"param","name":"size","type":"Number","optional":false,"description":"- Number which determines the size of each chunk.","source":"* {Number} size - Number which determines the size of each chunk."}],"type":"function","functionTag":"chunk","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"A chunked version of the source array.","source":"* {Array} - A chunked version of the source array.\n\t *"}},"clearArray":{"category":"array","description":"Clears the values out of an array.","examples":[{"tag":"example","optional":false,"description":"import { clearArray, assert } from '@universalweb/acid'; assert(clearArray([1,'B', 'Cat']), []);","source":"import { clearArray, assert } from \"@universalweb/acid\";\nassert(clearArray([1, \"B\", \"Cat\"]), []);\n"}],"name":"clearArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Takes an array to be emptied.","source":"* {Array} source - Takes an array to be emptied."}],"type":"function","functionTag":"clearArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"cloneArray":{"category":"array","description":"Clone an array (uses .slice()) and assign the source arrays values to the new array.","examples":[{"tag":"example","optional":false,"description":"import { cloneArray, assert } from '@universalweb/acid'; assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);","source":"import { cloneArray, assert } from \"@universalweb/acid\";\nassert(cloneArray([1, \"B\", \"Cat\"]), [1, \"B\", \"Cat\"]);\n"}],"name":"cloneArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The array to be quick cloned.","source":"* {Array} source - The array to be quick cloned."}],"type":"function","functionTag":"cloneArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The newly cloned array with assigned items.","source":"* {Array} - The newly cloned array with assigned items.\n\t *"}},"isUndefined":{"category":"type","description":"Checks if the value is undefined.","examples":[{"tag":"example","optional":false,"description":"import { isUndefined, assert } from '@universalweb/acid'; assert(isUndefined(undefined), true);","source":"import { isUndefined, assert } from \"@universalweb/acid\";\nassert(isUndefined(undefined), true);\n"}],"name":"isUndefined","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isUndefined","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"hasLength":{"category":"utility","description":"Checks if the value has length greater than 0.","examples":[{"tag":"example","optional":false,"description":"import { hasLength, assert } from '@universalweb/acid'; assert(hasLength([1]), true);","source":"import { hasLength, assert } from \"@universalweb/acid\";\nassert(hasLength([1]), true);\n"}],"name":"hasLength","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"hasLength","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isNull":{"category":"type","description":"Checks if the value is null.","examples":[{"tag":"example","optional":false,"description":"import { isNull, assert } from '@universalweb/acid'; assert(isNull(null), true);","source":"import { isNull, assert } from \"@universalweb/acid\";\nassert(isNull(null), true);\n"}],"name":"isNull","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isNull","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"hasValue":{"category":"type","description":"Checks if the value is not null or undefined.","examples":[{"tag":"example","optional":false,"description":"import { hasValue, assert } from '@universalweb/acid'; assert(hasValue(1), true);","source":"import { hasValue, assert } from \"@universalweb/acid\";\nassert(hasValue(1), true);\n"}],"name":"hasValue","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"hasValue","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"returnValue":{"category":"utility","description":"A simple function which returns the value it's given.","name":"returnValue","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- The source object.","source":"* {*} source - The source object."}],"type":"function","functionTag":"returnValue","returns":{"tag":"returns","name":"The","type":"source","optional":false,"description":"source object.","source":"* {source} The source object.\n\t */"}},"eachArray":{"category":"array","description":"Iterates through the given array.","examples":[{"tag":"example","optional":false,"description":"import { eachArray, assert } from '@universalweb/acid'; const list = []; eachArray([1, 2, 3], (item, index) => { list[index] = item; }); assert(list, [1, 2, 3]);","source":"import { eachArray, assert } from \"@universalweb/acid\";\nconst list = [];\neachArray([1, 2, 3], (item, index) => {\n list[index] = item;\n});\nassert(list, [1, 2, 3]);\n"}],"name":"eachArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, array length, and additionalArg.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- Iteratee called with thisCall as this.","source":"* {*} thisCall - Iteratee called with thisCall as this."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"eachArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"compactMapArray":{"category":"array","description":"Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.","examples":[{"tag":"example","optional":false,"description":"import { compactMapArray, assert } from '@universalweb/acid'; assert(compactMapArray([null, 2, 3], (item) => { return item; }), [2, 3]);","source":"import { compactMapArray, assert } from \"@universalweb/acid\";\nassert(\n compactMapArray([null, 2, 3], (item) => {\n return item;\n }),\n [2, 3],\n);\n"}],"name":"compactMapArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, the newly created array, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length."},{"tag":"param","name":"results","type":"Array = []","optional":false,"description":"- Array that will be used to assign results. Default value is a new empty array.","source":"* {Array = []} results - Array that will be used to assign results. Default value is a new empty array."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisCall - An object to be given each time to the iteratee."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"compactMapArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with mapped properties that are not null or undefined.","source":"* {Array} - An array with mapped properties that are not null or undefined.\n\t *"}},"eachAsyncArray":{"category":"array","description":"Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.","examples":[{"tag":"example","optional":false,"description":"import { eachAsyncArray, assert } from '@universalweb/acid'; const tempList = []; await eachAsyncArray([1, 2, 3], async (item) => { tempList.push(item); }); assert(tempList, [1, 2, 3]);","source":"import { eachAsyncArray, assert } from \"@universalweb/acid\";\nconst tempList = [];\nawait eachAsyncArray([1, 2, 3], async (item) => {\n tempList.push(item);\n});\nassert(tempList, [1, 2, 3]);\n"}],"name":"eachAsyncArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, array length, and additionalArg.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- Iteratee called with thisCall as this.","source":"* {*} thisCall - Iteratee called with thisCall as this."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","isAsync":true,"functionTag":"eachAsyncArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns source the originally given array.","source":"* {Array} - Returns source the originally given array.\n\t *"}},"compactMapAsyncArray":{"category":"array","description":"Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.","examples":[{"tag":"example","optional":false,"description":"import { compactMapAsync, assert } from '@universalweb/acid'; assert(await compactMapAsync([1, 2, 3, null], async (item) => { return item; }), [1, 2, 3]);","source":"import { compactMapAsync, assert } from \"@universalweb/acid\";\nassert(\n await compactMapAsync([1, 2, 3, null], async (item) => {\n return item;\n }),\n [1, 2, 3],\n);\n"}],"name":"compactMapAsyncArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array to be compacted.","source":"* {Array} source - Array to be compacted."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Iteratee to be performed on array.","source":"* {Function} iteratee - Iteratee to be performed on array."}],"type":"function","isAsync":true,"functionTag":"compactMapAsyncArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Array values after being put through an iterator.","source":"* {Array} - Array values after being put through an iterator.\n\t *"}},"isNegative":{"category":"number","description":"Checks if a number is negative & returns true or false.","examples":[{"tag":"example","optional":false,"description":"import { isNegative, assert } from '@universalweb/acid'; assert(isNegative(-1), true);","source":"import { isNegative, assert } from \"@universalweb/acid\";\nassert(isNegative(-1), true);\n"}],"name":"isNegative","params":[{"tag":"param","name":"source","type":"Number","optional":false,"description":"- Number to be checked.","source":"* {Number} source - Number to be checked."}],"type":"function","functionTag":"isNegative","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"range":{"category":"array","description":"Create a numbered list of integers.","examples":[{"tag":"example","optional":false,"description":"import { range, assert } from '@universalweb/acid'; assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);","source":"import { range, assert } from \"@universalweb/acid\";\nassert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n"}],"name":"range","params":[{"tag":"param","name":"start","type":"Number","optional":false,"description":"- Value which determines the start of the range.","source":"* {Number} start - Value which determines the start of the range."},{"tag":"param","name":"end","type":"Number","optional":false,"description":"- Value which determines the end of the range.","source":"* {Number} end - Value which determines the end of the range."},{"tag":"param","name":"step","type":"Number","optional":false,"description":"- Value used to step between integers.","source":"* {Number} step - Value used to step between integers."}],"type":"function","functionTag":"range","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array of integers.","source":"* {Array} - An array of integers.\n\t *"}},"isArray":{"category":"type","description":"Checks if the value is an array. This references Array.isArray.","examples":[{"tag":"example","optional":false,"description":"import { isArray, assert } from '@universalweb/acid'; assert(isArray([]), true); assert(isArray(2), false);","source":"import { isArray, assert } from \"@universalweb/acid\";\nassert(isArray([]), true);\nassert(isArray(2), false);\n"}],"name":"isArray","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isArray","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isNotArray":{"category":"type","description":"Checks if the value is not an array. This references Array.isArray.","examples":[{"tag":"example","optional":false,"description":"import { isNotArray, assert } from '@universalweb/acid'; assert(isNotArray([]), false); assert(isNotArray(2), true);","source":"import { isNotArray, assert } from \"@universalweb/acid\";\nassert(isNotArray([]), false);\nassert(isNotArray(2), true);\n"}],"name":"isNotArray","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isNotArray","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"ensureArray":{"category":"array","description":"Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.","examples":[{"tag":"example","optional":false,"description":"import { isArray, ensureArray, assert } from '@universalweb/acid'; assert(isArray(ensureArray('test')), ['test']);","source":"import { isArray, ensureArray, assert } from \"@universalweb/acid\";\nassert(isArray(ensureArray(\"test\")), [\"test\"]);\n"}],"name":"ensureArray","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"ensureArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns an array.","source":"* {Array} - Returns an array.\n\t *"}},"flattenDeep":{"category":"array","description":"Flattens an array to a single level.","examples":[{"tag":"example","optional":false,"description":"import { flattenDeep, assert } from '@universalweb/acid'; assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);","source":"import { flattenDeep, assert } from \"@universalweb/acid\";\nassert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n"}],"name":"flattenDeep","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array to flatten.","source":"* {Array} source - Array to flatten."}],"type":"function","functionTag":"flattenDeep","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns a completely flattened array.","source":"* {Array} - Returns a completely flattened array.\n\t *"}},"construct":{"category":"class","description":"A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.","examples":[{"tag":"example","optional":false,"description":"import { construct, assert } from '@universalweb/acid'; class test { constructor(a) { return 1; } } const newClass = construct(test, [1]); assert(test, 1);","source":"import { construct, assert } from \"@universalweb/acid\";\nclass test {\n constructor(a) {\n return 1;\n }\n}\nconst newClass = construct(test, [1]);\nassert(test, 1);\n"}],"name":"construct","params":[{"tag":"param","name":"target","type":"Function","optional":false,"description":"- The target function or class.","source":"* {Function} target - The target function or class."},{"tag":"param","name":"argumentsList","type":"Array","optional":true,"description":"- An array-like object specifying the arguments with which target should be called. Default value is a new empty array.","source":"* {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.","default":"[]"},{"tag":"param","name":"newTarget","type":"Array","optional":false,"description":"- The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.","source":"* {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target."}],"type":"function","functionTag":"construct","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.","source":"* {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n\t *"}},"difference":{"category":"array","description":"Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.","examples":[{"tag":"example","optional":false,"description":"import { difference, assert } from '@universalweb/acid'; assert(difference([1, 2, 3], [1, 2]), [3]);","source":"import { difference, assert } from \"@universalweb/acid\";\nassert(difference([1, 2, 3], [1, 2]), [3]);\n"}],"name":"difference","params":[{"tag":"param","name":"sources","type":"Array","optional":false,"description":"- Source array.","source":"* {Array} sources - Source array."},{"tag":"param","name":"compare","type":"...Array","optional":false,"description":"- Array(s) source array is compared against.","source":"* {...Array} compare - Array(s) source array is compared against."}],"type":"function","functionTag":"difference","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array which contains the differences between the source and compare array.","source":"* {Array} - An array which contains the differences between the source and compare array.\n\t *"}},"drop":{"category":"array","description":"Removes all items from an array after a specified index.","examples":[{"tag":"example","optional":false,"description":"import { drop, assert } from '@universalweb/acid'; assert(drop([1, 2, 3]), [2, 3]); assert(drop([1, 2, 3], 2), [3]);","source":"import { drop, assert } from \"@universalweb/acid\";\nassert(drop([1, 2, 3]), [2, 3]);\nassert(drop([1, 2, 3], 2), [3]);\n"}],"name":"drop","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Source array.","source":"* {Array} array - Source array."},{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- Amount of items to drop from the array.","source":"* {Number} amount - Amount of items to drop from the array."},{"tag":"param","name":"upTo","type":"Number","optional":true,"description":"- Index to stop at.","source":"* {Number} [upTo = array.length] - Index to stop at.","default":"array.length"}],"type":"function","functionTag":"drop","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with all values removed after a user defined index.","source":"* {Array} - An array with all values removed after a user defined index.\n\t *"}},"dropRight":{"category":"array","description":"Removes all items from an array before a specified index.","examples":[{"tag":"example","optional":false,"description":"import { dropRight, assert } from '@universalweb/acid'; assert(dropRight([1, 2, 3]), [1, 2]); assert(dropRight([1, 2, 3], 2), [1]);","source":"import { dropRight, assert } from \"@universalweb/acid\";\nassert(dropRight([1, 2, 3]), [1, 2]);\nassert(dropRight([1, 2, 3], 2), [1]);\n"}],"name":"dropRight","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Source array.","source":"* {Array} array - Source array."},{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- Amount of items to drop from the array.","source":"* {Number} amount - Amount of items to drop from the array."},{"tag":"param","name":"upTo","type":"Number","optional":true,"description":"- Index to stop at.","source":"* {Number} [upTo = array.length] - Index to stop at.","default":"array.length"}],"type":"function","functionTag":"dropRight","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with all values removed before a user defined index.","source":"* {Array} - An array with all values removed before a user defined index.\n\t *"}},"eachRight":{"category":"array","description":"Iterates through the given array in reverse.","examples":[{"tag":"example","optional":false,"description":"import { eachRight, assert } from '@universalweb/acid'; const tempList = []; eachRight([1, 2, 3], (item) => { tempList.push(item); }); assert(tempList, [3, 2, 1]);","source":"import { eachRight, assert } from \"@universalweb/acid\";\nconst tempList = [];\neachRight([1, 2, 3], (item) => {\n tempList.push(item);\n});\nassert(tempList, [3, 2, 1]);\n"}],"name":"eachRight","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, and array length."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"eachRight","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"eachRightAsync":{"category":"array","description":"Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.","examples":[{"tag":"example","optional":false,"description":"import { eachRightAsync, assert } from '@universalweb/acid'; const tempList = []; await eachRightAsync([1, 2, 3], async (item) => { tempList.push(item); }); assert(tempList, [3, 2, 1]);","source":"import { eachRightAsync, assert } from \"@universalweb/acid\";\nconst tempList = [];\nawait eachRightAsync([1, 2, 3], async (item) => {\n tempList.push(item);\n});\nassert(tempList, [3, 2, 1]);\n"}],"name":"eachRightAsync","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, and array length."}],"type":"function","isAsync":true,"functionTag":"eachRightAsync","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"The originally given array.","source":"* {Object} - The originally given array.\n\t *"}},"everyArray":{"category":"array","description":"Iterates through the given array while the iteratee returns true else the loop exits & returns false.","examples":[{"tag":"example","optional":false,"description":"import { everyArray, assert } from '@universalweb/acid'; assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => { return item; }), false); assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => { return item; }), true);","source":"import { everyArray, assert } from \"@universalweb/acid\";\nassert(\n everyArray(\n [true, true, false],\n (item, index, source, sourceLength, thisBind) => {\n return item;\n },\n ),\n false,\n);\nassert(\n everyArray(\n [true, true, true],\n (item, index, source, sourceLength, thisBind) => {\n return item;\n },\n ),\n true,\n);\n"}],"name":"everyArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, key, calling array, and array length."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"everyArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns true if all returns are true or false if one value returns false.","source":"* {Array} - Returns true if all returns are true or false if one value returns false.\n\t *"}},"everyAsyncArray":{"category":"array","description":"Iterates through the given array while the iteratee returns true else the loop exits & returns false.","examples":[{"tag":"example","optional":false,"description":"import { everyAsyncArray, assert } from '@universalweb/acid'; assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => { return item; }), false); assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => { return item; }), true);","source":"import { everyAsyncArray, assert } from \"@universalweb/acid\";\nassert(\n everyAsyncArray(\n [true, true, false],\n (item, index, source, sourceLength, thisBind) => {\n return item;\n },\n ),\n false,\n);\nassert(\n everyAsyncArray(\n [true, true, true],\n (item, index, source, sourceLength, thisBind) => {\n return item;\n },\n ),\n true,\n);\n"}],"name":"everyAsyncArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, key, calling array, and array length."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"everyAsyncArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns true if all returns are true or false if one value returns false.","source":"* {Array} - Returns true if all returns are true or false if one value returns false.\n\t *"}},"filterArray":{"category":"array","description":"Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"import { filterArray, assert } from '@universalweb/acid'; assert(filterArray([false, true, true], (item) => { return item; }), [true, true]);","source":"import { filterArray, assert } from \"@universalweb/acid\";\nassert(\n filterArray([false, true, true], (item) => {\n return item;\n }),\n [true, true],\n);\n"}],"name":"filterArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, the newly created object, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length."},{"tag":"param","name":"results","type":"Array","optional":false,"description":"- Array that will be used to assign results.","source":"* {Array} results - Array that will be used to assign results."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"filterArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with properties that passed the test.","source":"* {Array} - An array with properties that passed the test.\n\t *"}},"filterAsyncArray":{"category":"array","description":"Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"import { filterAsyncArray, assert } from '@universalweb/acid'; assert(filterAsyncArray([false, true, true], (item) => { return item; }), [true, true]);","source":"import { filterAsyncArray, assert } from \"@universalweb/acid\";\nassert(\n filterAsyncArray([false, true, true], (item) => {\n return item;\n }),\n [true, true],\n);\n"}],"name":"filterAsyncArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, the newly created object, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length."},{"tag":"param","name":"results","type":"Array","optional":false,"description":"- Array that will be used to assign results.","source":"* {Array} results - Array that will be used to assign results."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"filterAsyncArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with properties that passed the test.","source":"* {Array} - An array with properties that passed the test.\n\t *"}},"first":{"category":"array","description":"Takes the first or multiple items from an array.","examples":[{"tag":"example","optional":false,"description":"import { first, assert } from '@universalweb/acid'; assert(first([1, 2, 3]), 1);","source":"import { first, assert } from \"@universalweb/acid\";\nassert(first([1, 2, 3]), 1);\n"}],"name":"first","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array to extract from.","source":"* {Array} array - Array to extract from."},{"tag":"param","name":"upTo","type":"Number","optional":false,"description":"- Number which determines how many items after the first item are extracted from the array.","source":"* {Number} upTo - Number which determines how many items after the first item are extracted from the array."}],"type":"function","functionTag":"first","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns an array.","source":"* {Array} - Returns an array.\n\t *"}},"flatten":{"category":"array","description":"Flattens an array up to the provided level.","examples":[{"tag":"example","optional":false,"description":"import { flatten, assert } from '@universalweb/acid'; assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);","source":"import { flatten, assert } from \"@universalweb/acid\";\nassert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n"}],"name":"flatten","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array to flatten.","source":"* {Array} source - Array to flatten."},{"tag":"param","name":"level","type":"Number","optional":true,"description":"- Number which determines how deep the array nest can be.","source":"* {Number} [level = 1] - Number which determines how deep the array nest can be.","default":"1"}],"type":"function","functionTag":"flatten","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns an array.","source":"* {Array} - Returns an array.\n\t *"}},"initial":{"category":"array","description":"Takes all but the last item in the array.","examples":[{"tag":"example","optional":false,"description":"import { initial, assert } from '@universalweb/acid'; assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);","source":"import { initial, assert } from \"@universalweb/acid\";\nassert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n"}],"name":"initial","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array to have items extracted from.","source":"* {Array} array - Array to have items extracted from."}],"type":"function","functionTag":"initial","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns a completely flattened array.","source":"* {Array} - Returns a completely flattened array.\n\t *"}},"intersection":{"category":"array","description":"Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory)) of the array and the input array(s).","examples":[{"tag":"example","optional":false,"description":"import { intersection, assert } from '@universalweb/acid'; assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);","source":"import { intersection, assert } from \"@universalweb/acid\";\nassert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n"}],"name":"intersection","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array to compare other arrays to.","source":"* {Array} array - Array to compare other arrays to."},{"tag":"param","name":"arrays","type":"...Array","optional":false,"description":"- A variable number of arrays.","source":"* {...Array} arrays - A variable number of arrays."}],"type":"function","functionTag":"intersection","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The new array of unique values shared by all of the arrays.","source":"* {Array} - The new array of unique values shared by all of the arrays.\n\t *"}},"keys":{"category":"object","description":"Get object's keys.","examples":[{"tag":"example","optional":false,"description":"keys({a: 1, b: 2}); // => ['a', 'b']","source":"keys({ a: 1, b: 2 });\n// => ['a', 'b']\n"}],"name":"keys","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- The source object to pull keys from.","source":"* {*} source - The source object to pull keys from."}],"type":"function","functionTag":"keys","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Array of keys.","source":"* {Array} - Array of keys.\n\t *"}},"toPath":{"category":"utility","description":"Breaks up string into object chain list.","examples":[{"tag":"example","optional":false,"description":"import { toPath, assert } from '@universalweb/acid'; assert(toPath('post.like[2]'), ['post', 'like', '2']);","source":"import { toPath, assert } from \"@universalweb/acid\";\nassert(toPath(\"post.like[2]\"), [\"post\", \"like\", \"2\"]);\n"}],"name":"toPath","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- String to be broken up.","source":"* {String} source - String to be broken up."}],"type":"function","functionTag":"toPath","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Array used to go through object chain.","source":"* {Array} - Array used to go through object chain.\n\t *"}},"get":{"category":"utility","description":"Returns property on an object.","examples":[{"tag":"example","optional":false,"description":"import { get, assert } from '@universalweb/acid'; const objectTarget = { post: { like: ['a','b','c'] } }; assert(get('post.like[2]', objectTarget), 'c');","source":"import { get, assert } from \"@universalweb/acid\";\nconst objectTarget = { post: { like: [\"a\", \"b\", \"c\"] } };\nassert(get(\"post.like[2]\", objectTarget), \"c\");\n"}],"name":"get","params":[{"tag":"param","name":"propertyString","type":"String","optional":false,"description":"- String used to retrieve properties.","source":"* {String} propertyString - String used to retrieve properties."},{"tag":"param","name":"target","type":"Object","optional":false,"description":"- Object which has a property retrieved from it.","source":"* {Object} target - Object which has a property retrieved from it."}],"type":"function","functionTag":"get","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns property from the given object.","source":"* {Object} - Returns property from the given object.\n\t *"}},"hasKeys":{"category":"object","description":"Checks to see if an object has all of the given property names.","examples":[{"tag":"example","optional":false,"description":"import { hasKeys, assert } from '@universalweb/acid'; assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);","source":"import { hasKeys, assert } from \"@universalweb/acid\";\nassert(hasKeys({ a: { b: { c: 1 } } }, \"a\", \"a.b\", \"a.b.c\"), true);\n"}],"name":"hasKeys","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Source object to check for keys.","source":"* {Object} source - Source object to check for keys."},{"tag":"param","name":"properties","type":"...String","optional":false,"description":"- List of strings to check.","source":"* {...String} properties - List of strings to check."}],"type":"function","functionTag":"hasKeys","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"hasAnyKeys":{"category":"object","description":"Checks to see if an object has any of the given property names.","examples":[{"tag":"example","optional":false,"description":"import { hasAnyKeys, assert } from '@universalweb/acid'; assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true); assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);","source":"import { hasAnyKeys, assert } from \"@universalweb/acid\";\nassert(hasAnyKeys({ a: { b: { yes: 1 } } }, \"no\", \"nope\", \"a.b.yes\"), true);\nassert(hasAnyKeys({ a: { b: { yes: 1 } } }, \"no\", \"nope\", \"a.b.noped\"), false);\n"}],"name":"hasAnyKeys","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Source object to check for keys.","source":"* {Object} source - Source object to check for keys."},{"tag":"param","name":"properties","type":"Array","optional":false,"description":"- List of strings to check.","source":"* {Array} properties - List of strings to check."}],"type":"function","functionTag":"hasAnyKeys","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isPlainObject":{"category":"type","description":"Checks if the value is a plain object.","examples":[{"tag":"example","optional":false,"description":"import { isPlainObject } from '@universalweb/acid'; isPlainObject({}); // => true","source":"import { isPlainObject } from \"@universalweb/acid\";\nisPlainObject({});\n// => true\n"}],"name":"isPlainObject","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isPlainObject","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isConstructor":{"category":"type","description":"Checks to see if the constructor is that of a native object.","examples":[{"tag":"example","optional":false,"description":"import { isConstructor, assert } from '@universalweb/acid'; assert(isConstructor(2, Number), true);","source":"import { isConstructor, assert } from \"@universalweb/acid\";\nassert(isConstructor(2, Number), true);\n"}],"name":"isConstructor","params":[{"tag":"param","name":"target","type":"Object","optional":false,"description":"- The object to be checked.","source":"* {Object} target - The object to be checked."},{"tag":"param","name":"source","type":"Object","optional":false,"description":"- The source constructor object.","source":"* {Object} source - The source constructor object."}],"type":"function","functionTag":"isConstructor","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the target object.","source":"* {Object} - Returns the target object.\n\t *"}},"isBuffer":{"category":"type","description":"Checks if an object or objects are a Buffer.","examples":[{"tag":"example","optional":false,"description":"import { isBuffer, assert } from '@universalweb/acid'; assert(isBuffer(Buffer.from('test')), true);","source":"import { isBuffer, assert } from \"@universalweb/acid\";\nassert(isBuffer(Buffer.from(\"test\")), true);\n"}],"name":"isBuffer","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isBuffer","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isEqual":{"category":"utility","description":"Performs a deep comparison between two objects & determines if the value is the same using strict comparison.","examples":[{"tag":"example","optional":false,"description":"import { isEqual, assert } from '@universalweb/acid'; assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);","source":"import { isEqual, assert } from \"@universalweb/acid\";\nassert(isEqual({ a: [1, 2, 3] }, { a: [1, 2, 3] }), true);\n"}],"name":"isEqual","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Source object.","source":"* {*} source - Source object."},{"tag":"param","name":"target","type":"*","optional":false,"description":"- Object to be compared.","source":"* {*} target - Object to be compared."}],"type":"function","functionTag":"isEqual","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isMatchArray":{"category":"array","description":"Performs a shallow strict comparison between two objects.","examples":[{"tag":"example","optional":false,"description":"import { isMatchArray, assert } from '@universalweb/acid'; assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);","source":"import { isMatchArray, assert } from \"@universalweb/acid\";\nassert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n"}],"name":"isMatchArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Source object.","source":"* {Array} source - Source object."},{"tag":"param","name":"compareArray","type":"Array","optional":false,"description":"- Object to compare to source.","source":"* {Array} compareArray - Object to compare to source."}],"type":"function","functionTag":"isMatchArray","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"largest":{"category":"array","description":"Plucks the largest value from an array.","examples":[{"tag":"example","optional":false,"description":"import { largest, assert } from '@universalweb/acid'; assert(largest([1,2,3]), 3);","source":"import { largest, assert } from \"@universalweb/acid\";\nassert(largest([1, 2, 3]), 3);\n"}],"name":"largest","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array from which largest number is taken.","source":"* {Array} array - Array from which largest number is taken."}],"type":"function","functionTag":"largest","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The largest number.","source":"* {Number} - The largest number.\n\t *"}},"last":{"category":"array","description":"Extracts item(s) from an array starting from the last item in the array.","examples":[{"tag":"example","optional":false,"description":"import { last, assert } from '@universalweb/acid'; assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);","source":"import { last, assert } from \"@universalweb/acid\";\nassert(last([1, 2, 3, 4, 5], 2), [4, 5]);\n"}],"name":"last","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array to have items extracted from.","source":"* {Array} array - Array to have items extracted from."},{"tag":"param","name":"indexFrom","type":"Number","optional":true,"description":"- Value which determines how many items are extracted from the array.","source":"* {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.","default":"0"}],"type":"function","functionTag":"last","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Items from the array.","source":"* {Array} - Items from the array.\n\t *"}},"mapArray":{"category":"array","description":"Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.","examples":[{"tag":"example","optional":false,"description":"import { mapArray, assert } from '@universalweb/acid'; assert(mapArray([1, 2, 3], (item) => { return item * 2; }), [2, 4, 6]);","source":"import { mapArray, assert } from \"@universalweb/acid\";\nassert(\n mapArray([1, 2, 3], (item) => {\n return item * 2;\n }),\n [2, 4, 6],\n);\n"}],"name":"mapArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, the newly created array, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length."},{"tag":"param","name":"results","type":"Array","optional":false,"description":"- Array that will be used to assign results.","source":"* {Array} results - Array that will be used to assign results."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisCall - An object to be given each time to the iteratee."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"mapArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array of the same calling array's type.","source":"* {Array} - An array of the same calling array's type.\n\t *"}},"mapAsyncArray":{"category":"array","description":"Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.","examples":[{"tag":"example","optional":false,"description":"import { mapAsyncArray, assert } from '@universalweb/acid'; assert(await mapAsyncArray([1, 2, 3], async (item) => { return item * 2; }), [2, 4, 6]);","source":"import { mapAsyncArray, assert } from \"@universalweb/acid\";\nassert(\n await mapAsyncArray([1, 2, 3], async (item) => {\n return item * 2;\n }),\n [2, 4, 6],\n);\n"}],"name":"mapAsyncArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, the newly created array, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length."}],"type":"function","isAsync":true,"functionTag":"mapAsyncArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array of the same calling array's type.","source":"* {Array} - An array of the same calling array's type.\n\t *"}},"mapRightArray":{"category":"array","description":"Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.","examples":[{"tag":"example","optional":false,"description":"import { mapRightArray, assert } from '@universalweb/acid'; assert(mapRightArray([1, 2, 3], (item) => { return item * 2; }), [6, 4, 2]);","source":"import { mapRightArray, assert } from \"@universalweb/acid\";\nassert(\n mapRightArray([1, 2, 3], (item) => {\n return item * 2;\n }),\n [6, 4, 2],\n);\n"}],"name":"mapRightArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, the newly created array, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length."},{"tag":"param","name":"results","type":"Array","optional":false,"description":"- Array that will be used to assign results. Default value is a new empty array.","source":"* {Array} results - Array that will be used to assign results. Default value is a new empty array."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"mapRightArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array of the same calling array's type.","source":"* {Array} - An array of the same calling array's type.\n\t *"}},"mapWhile":{"category":"array","description":"Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"import { mapWhile, assert } from '@universalweb/acid'; assert(mapWhile([1, 2, 0], (item) => { return Boolean(item); }), [1, 2]);","source":"import { mapWhile, assert } from \"@universalweb/acid\";\nassert(\n mapWhile([1, 2, 0], (item) => {\n return Boolean(item);\n }),\n [1, 2],\n);\n"}],"name":"mapWhile","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, the newly created array, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length."},{"tag":"param","name":"results","type":"Array","optional":false,"description":"- Array that will be used to assign results. Default value is a new empty array.","source":"* {Array} results - Array that will be used to assign results. Default value is a new empty array."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"mapWhile","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with properties that passed the test.","source":"* {Array} - An array with properties that passed the test.\n\t *"}},"subtract":{"category":"math","description":"Subtracts the subtrahend (second argument) from the minuend (first argument).","examples":[{"tag":"example","optional":false,"description":"import { subtract, assert } from '@universalweb/acid'; assert(subtract(3, 1), 2);","source":"import { subtract, assert } from \"@universalweb/acid\";\nassert(subtract(3, 1), 2);\n"}],"name":"subtract","params":[{"tag":"param","name":"minuend","type":"Number","optional":false,"description":"- The minuend.","source":"* {Number} minuend - The minuend."},{"tag":"param","name":"subtrahend","type":"Number","optional":false,"description":"- The subtrahend.","source":"* {Number} subtrahend - The subtrahend."}],"type":"function","functionTag":"subtract","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns the difference.","source":"* {Number} - Returns the difference.\n\t *"}},"sortNumberAscending":{"category":"array","description":"Sorts an array of numbers in ascending order. Smallest to largest.","examples":[{"tag":"example","optional":false,"description":"import { sortNumberAscending, assert } from '@universalweb/acid'; assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);","source":"import { sortNumberAscending, assert } from \"@universalweb/acid\";\nassert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n"}],"name":"sortNumberAscending","params":[{"tag":"param","name":"numberList","type":"Array","optional":false,"description":"- Array of numbers.","source":"* {Array} numberList - Array of numbers."}],"type":"function","functionTag":"sortNumberAscending","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The array this method was called on.","source":"* {Array} - The array this method was called on.\n\t *"}},"partition":{"category":"array","description":"Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.","examples":[{"tag":"example","optional":false,"description":"import { partition, assert } from '@universalweb/acid'; const result = partition([ {user: 'barney', age: 36, active: false}, {user: 'fred', age: 40, active: true}, {user: 'pebbles', age: 1, active: false} ], (item) => { return item.active; }); assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}], [{\"user\":\"barney\",\"age\":36,\"active\":false}, {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);","source":"import { partition, assert } from \"@universalweb/acid\";\nconst result = partition(\n [\n { user: \"barney\", age: 36, active: false },\n { user: \"fred\", age: 40, active: true },\n { user: \"pebbles\", age: 1, active: false },\n ],\n (item) => {\n return item.active;\n },\n);\nassert(\n result,\n [{ user: \"fred\", age: 40, active: true }],\n [\n { user: \"barney\", age: 36, active: false },\n { user: \"pebbles\", age: 1, active: false },\n ],\n);\n"}],"name":"partition","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Takes an array to split.","source":"* {Array} array - Takes an array to split."},{"tag":"param","name":"predicate","type":"Function","optional":false,"description":"- Function run on each item in the array.","source":"* {Function} predicate - Function run on each item in the array."}],"type":"function","functionTag":"partition","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"One array split into two arrays.","source":"* {Array} - One array split into two arrays.\n\t *"}},"subtractReverse":{"category":"math","description":"Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.","examples":[{"tag":"example","optional":false,"description":"import { subtractReverse, assert } from '@universalweb/acid'; assert(subtractReverse(1, 3), 2);","source":"import { subtractReverse, assert } from \"@universalweb/acid\";\nassert(subtractReverse(1, 3), 2);\n"}],"name":"subtractReverse","params":[{"tag":"param","name":"minuend","type":"Number","optional":false,"description":"- The minuend.","source":"* {Number} minuend - The minuend."},{"tag":"param","name":"subtrahend","type":"Number","optional":false,"description":"- The subtrahend.","source":"* {Number} subtrahend - The subtrahend."}],"type":"function","functionTag":"subtractReverse","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns the difference.","source":"* {Number} - Returns the difference.\n\t *"}},"sortNumberDescening":{"category":"array","description":"Sorts an array of numbers in descending order. Largest to smallest.","examples":[{"tag":"example","optional":false,"description":"import { sortNumberDescening, assert } from '@universalweb/acid'; assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);","source":"import { sortNumberDescening, assert } from \"@universalweb/acid\";\nassert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n"}],"name":"sortNumberDescening","params":[{"tag":"param","name":"numberList","type":"Array","optional":false,"description":"- Array of numbers.","source":"* {Array} numberList - Array of numbers."}],"type":"function","functionTag":"sortNumberDescening","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The array this method was called on.","source":"* {Array} - The array this method was called on.\n\t *"}},"remove":{"category":"array","description":"Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.","examples":[{"tag":"example","optional":false,"description":"remove([1, 2, 3, 3, 4, 3, 5], 1); // => [2, 3, 3, 4, 3, 5]","source":"remove([1, 2, 3, 3, 4, 3, 5], 1);\n// => [2, 3, 3, 4, 3, 5]\n"},{"tag":"example","optional":false,"description":"remove([3, 3, 4, 5], 3, 4); // => [5]","source":"remove([3, 3, 4, 5], 3, 4);\n// => [5]\n"}],"name":"remove","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array to be mutated.","source":"* {Array} array - Array to be mutated."},{"tag":"param","name":"removeThese","type":"String|Array","optional":false,"description":"- Items to remove from the array.","source":"* {String|Array} removeThese - Items to remove from the array."}],"type":"function","functionTag":"remove","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The array this method was called on.","source":"* {Array} - The array this method was called on.\n\t *"}},"removeBy":{"category":"array","description":"Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.","examples":[{"tag":"example","optional":false,"description":"removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);}); // => [2, 4]","source":"removeBy([1, 2, 3, 3, 4, 3, 5], (item) => {\n return Boolean(item % 2);\n});\n// => [2, 4]\n"}],"name":"removeBy","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array to be mutated.","source":"* {Array} source - Array to be mutated."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Function used to check object. Return true to remove the value.","source":"* {Function} iteratee - Function used to check object. Return true to remove the value."}],"type":"function","functionTag":"removeBy","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The array this method was called on.","source":"* {Array} - The array this method was called on.\n\t *"}},"rest":{"category":"array","description":"Extracts all items in array except the first and last item.","examples":[{"tag":"example","optional":false,"description":"rest([1, 2, 3, 4, 5]); // => [2, 3, 4, 5]","source":"rest([1, 2, 3, 4, 5]);\n// => [2, 3, 4, 5]\n"}],"name":"rest","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array to be sliced.","source":"* {Array} array - Array to be sliced."}],"type":"function","functionTag":"rest","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns the aggregated array.","source":"* {Array} - Returns the aggregated array.\n\t *"}},"right":{"category":"array","description":"Get the item at the supplied index starting at the end of the array.","examples":[{"tag":"example","optional":false,"description":"right([1, 2, 3, 4, 5] , 1); // => 4","source":"right([1, 2, 3, 4, 5], 1);\n// => 4\n"}],"name":"right","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array to be sliced.","source":"* {Array} source - Array to be sliced."},{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- Amount from the right.","source":"* {Number} amount - Amount from the right."}],"type":"function","functionTag":"right","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns the object at the evaluated position.","source":"* {*} - Returns the object at the evaluated position.\n\t *"}},"randomInt":{"category":"number","description":"Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.","examples":[{"tag":"example","optional":false,"description":"import { randomInt, assert } from '@universalweb/acid'; assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});","source":"import { randomInt, assert } from \"@universalweb/acid\";\nassert(randomInt(10, 0), (value) => {\n return value > 0 && value < 10;\n});\n"}],"name":"randomInt","params":[{"tag":"param","name":"max","type":"Number","optional":false,"description":"- The highest possible value for the random number.","source":"* {Number} max - The highest possible value for the random number."},{"tag":"param","name":"min","type":"Number","optional":true,"description":"- Establishes lowest possible value for the random number.","source":"* {Number} [min = 0] - Establishes lowest possible value for the random number.","default":"0"}],"type":"function","functionTag":"randomInt","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns random integer between the max and min range.","source":"* {Number} - Returns random integer between the max and min range.\n\t *"}},"toArray":{"category":"array","description":"The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.","examples":[{"tag":"example","optional":false,"description":"import { toArray, assert } from '@universalweb/acid'; assert(toArray(new Map([[1, 2]])), [[1, 2]]);","source":"import { toArray, assert } from \"@universalweb/acid\";\nassert(toArray(new Map([[1, 2]])), [[1, 2]]);\n"}],"name":"toArray","params":[{"tag":"param","name":"arrayLike","type":"*","optional":false,"description":"- Array like object.","source":"* {*} arrayLike - Array like object."},{"tag":"param","name":"mapFn","type":"Function","optional":false,"description":"- Function to map over the array.","source":"* {Function} mapFn - Function to map over the array."},{"tag":"param","name":"thisArg","type":"*","optional":false,"description":"- MapFn's \"this\".","source":"* {*} thisArg - MapFn's \"this\"."}],"type":"function","functionTag":"toArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"New array.","source":"* {Array} - New array.\n\t *"}},"isNumberEqual":{"category":"number","description":"Checks if two numbers are the same.","examples":[{"tag":"example","optional":false,"description":"import { isNumberEqual, assert } from '@universalweb/acid'; assert(isNumberEqual(0, 0), true);","source":"import { isNumberEqual, assert } from \"@universalweb/acid\";\nassert(isNumberEqual(0, 0), true);\n"}],"name":"isNumberEqual","params":[{"tag":"param","name":"source","type":"Number","optional":false,"description":"- Number to be checked.","source":"* {Number} source - Number to be checked."},{"tag":"param","name":"target","type":"Number","optional":false,"description":"- Number to be checked.","source":"* {Number} target - Number to be checked."}],"type":"function","functionTag":"isNumberEqual","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"shuffle":{"category":"array","description":"Shuffle an array and return a new array.","examples":[{"tag":"example","optional":false,"description":"import { shuffle, assert } from '@universalweb/acid'; assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);","source":"import { shuffle, assert } from \"@universalweb/acid\";\nassert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n"}],"name":"shuffle","params":[{"tag":"param","name":"target","type":"Array","optional":false,"description":"- Target Array to be shuffled.","source":"* {Array} target - Target Array to be shuffled."},{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The amount of times to shuffle the array.","source":"* {Number} amount - The amount of times to shuffle the array."}],"type":"function","functionTag":"shuffle","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with the shuffled results.","source":"* {Array} - An array with the shuffled results.\n\t *"}},"sample":{"category":"array","description":"Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.","examples":[{"tag":"example","optional":false,"description":"sample([1, 2, 3, 4] , 2); // => [1, 3]","source":"sample([1, 2, 3, 4], 2);\n// => [1, 3]\n"}],"name":"sample","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The array to pull sample(s) from.","source":"* {Array} source - The array to pull sample(s) from."},{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The amount of samples to take.","source":"* {Number} amount - The amount of samples to take."}],"type":"function","functionTag":"sample","test":{"tag":"test","optional":false,"description":"(async () => { const tempResult = sample([1, 2] , 2); return assert(tempResult.includes(1) && tempResult.includes(2), true); });","source":"* \t * (async () => {\n\t * const tempResult = sample([1, 2] , 2);\n\t * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n\t * });\n\t *"},"returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array of randomly pulled samples.","source":"* {Array} - An array of randomly pulled samples.\n\t *"}},"smallest":{"category":"array","description":"Plucks the smallest value from an array.","examples":[{"tag":"example","optional":false,"description":"smallest([1,2,3]); // => 1","source":"smallest([1, 2, 3]);\n// => 1\n"}],"name":"smallest","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array from which smallest number is taken.","source":"* {Array} array - Array from which smallest number is taken."}],"type":"function","functionTag":"smallest","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The smallest number.","source":"* {Number} - The smallest number.\n\t *"}},"getNumberInsertIndex":{"category":"array","description":"What index should the number be inserted at to keep a sorted array still sorted.","examples":[{"tag":"example","optional":false,"description":"import { getNumberInsertIndex, assert } from '@universalweb/acid'; assert(getNumberInsertIndex([30, 39, 50], 40), 1);","source":"import { getNumberInsertIndex, assert } from \"@universalweb/acid\";\nassert(getNumberInsertIndex([30, 39, 50], 40), 1);\n"}],"name":"getNumberInsertIndex","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array to be checked.","source":"* {Array} source - Array to be checked."},{"tag":"param","name":"target","type":"Number","optional":false,"description":"- Number to check where to be inserted.","source":"* {Number} target - Number to check where to be inserted."}],"type":"function","functionTag":"getNumberInsertIndex","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The index at which to insert.","source":"* {Number} - The index at which to insert.\n\t *"}},"take":{"category":"array","description":"Returns a shallow copy of the array up to an amount.","examples":[{"tag":"example","optional":false,"description":"import { take, assert } from '@universalweb/acid'; assert(take([1,2,3], 2), [1, 2]);","source":"import { take, assert } from \"@universalweb/acid\";\nassert(take([1, 2, 3], 2), [1, 2]);\n"}],"name":"take","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The source array to take from.","source":"* {Array} source - The source array to take from."},{"tag":"param","name":"endIndex","type":"Array","optional":true,"description":"- Zero-based index before which to end extraction.","source":"* {Array} [endIndex = 1] - Zero-based index before which to end extraction.","default":"1"}],"type":"function","functionTag":"take","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The aggregated array.","source":"* {Array} - The aggregated array.\n\t *"}},"takeRight":{"category":"array","description":"Returns a shallow copy of the array up to an amount starting from the right.","examples":[{"tag":"example","optional":false,"description":"import { takeRight, assert } from '@universalweb/acid'; assert(takeRight([1,2,3], 2), [2, 3]);","source":"import { takeRight, assert } from \"@universalweb/acid\";\nassert(takeRight([1, 2, 3], 2), [2, 3]);\n"}],"name":"takeRight","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The source array to take right from.","source":"* {Array} source - The source array to take right from."},{"tag":"param","name":"indexRight","type":"Array","optional":true,"description":"- Zero-based index from the right to begin extraction.","source":"* {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.","default":"1"}],"type":"function","functionTag":"takeRight","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The aggregated array.","source":"* {Array} - The aggregated array.\n\t *"}},"unique":{"category":"array","description":"Filters the array down to unique elements.","examples":[{"tag":"example","optional":false,"description":"unique([1, 2, 2, 4]); // => [1, 2, 4]","source":"unique([1, 2, 2, 4]);\n// => [1, 2, 4]\n"}],"name":"unique","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The array to be filtered.","source":"* {Array} source - The array to be filtered."},{"tag":"param","name":"isSorted","type":"Boolean","optional":false,"description":"- Flag which means the array is already sorted.","source":"* {Boolean} isSorted - Flag which means the array is already sorted."}],"type":"function","functionTag":"unique","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The filtered array.","source":"* {Array} - The filtered array.\n\t *"}},"union":{"category":"array","description":"Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.","examples":[{"tag":"example","optional":false,"description":"union([1,2,4], [1,2,3]); // => [1, 2, 4, 3]","source":"union([1, 2, 4], [1, 2, 3]);\n// => [1, 2, 4, 3]\n"}],"name":"union","params":[{"tag":"param","name":"arrays","type":"...Array","optional":false,"description":"- The arrays to be evaluated.","source":"* {...Array} arrays - The arrays to be evaluated."}],"type":"function","functionTag":"union","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The aggregated array.","source":"* {Array} - The aggregated array.\n\t *"}},"untilFalseArray":{"category":"array","description":"Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned. If and when the iteratee yields false the loop stops & false is returned.","examples":[{"tag":"example","optional":false,"description":"import { untilFalseArray, assert } from '@universalweb/acid'; assert(untilFalseArray([true, true, false], (item) => { return item; }), false); assert(untilFalseArray([true, true, true], (item) => { return item; }), true);","source":"import { untilFalseArray, assert } from \"@universalweb/acid\";\nassert(\n untilFalseArray([true, true, false], (item) => {\n return item;\n }),\n false,\n);\nassert(\n untilFalseArray([true, true, true], (item) => {\n return item;\n }),\n true,\n);\n"}],"name":"untilFalseArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The array to iterate over.","source":"* {Array} source - The array to iterate over."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item & key and expects a boolean to be returned.","source":"* {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned."}],"type":"function","functionTag":"untilFalseArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns true if all returns are true or false if one value returns false.","source":"* {Array} - Returns true if all returns are true or false if one value returns false.\n\t *"}},"untilTrueArray":{"category":"array","description":"Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned. If and when the iteratee yields true the loop stops & false is returned.","examples":[{"tag":"example","optional":false,"description":"import { untilTrueArray, assert } from '@universalweb/acid'; assert(untilTrueArray([true], (item) => { return item; }), false); assert(untilTrueArray([true, true, true], (item) => { return item; }), true);","source":"import { untilTrueArray, assert } from \"@universalweb/acid\";\nassert(\n untilTrueArray([true], (item) => {\n return item;\n }),\n false,\n);\nassert(\n untilTrueArray([true, true, true], (item) => {\n return item;\n }),\n true,\n);\n"}],"name":"untilTrueArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The array to iterate over.","source":"* {Array} source - The array to iterate over."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item & key and expects a boolean to be returned.","source":"* {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned."}],"type":"function","functionTag":"untilTrueArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns true if all returns are false or false if one value returns true.","source":"* {Array} - Returns true if all returns are false or false if one value returns true.\n\t *"}},"whileCompactMap":{"category":"array","description":"Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. Re-checks the length each loop.","examples":[{"tag":"example","optional":false,"description":"import { whileCompactMap, assert } from '@universalweb/acid'; assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => { return item; }), [1, 2, 3, false]);","source":"import { whileCompactMap, assert } from \"@universalweb/acid\";\nassert(\n whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n return item;\n }),\n [1, 2, 3, false],\n);\n"}],"name":"whileCompactMap","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, and array length."},{"tag":"param","name":"results","type":"Array","optional":false,"description":"- Array that will be used to assign results. Default value is a new empty array.","source":"* {Array} results - Array that will be used to assign results. Default value is a new empty array."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"whileCompactMap","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"whileEachArray":{"category":"array","description":"Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.","examples":[{"tag":"example","optional":false,"description":"import { whileEachArray, assert } from '@universalweb/acid'; const list = []; whileEachArray([1, 2, 3], (item, index) => { list[index] = item; }); assert(list, [1, 2, 3]);","source":"import { whileEachArray, assert } from \"@universalweb/acid\";\nconst list = [];\nwhileEachArray([1, 2, 3], (item, index) => {\n list[index] = item;\n});\nassert(list, [1, 2, 3]);\n"}],"name":"whileEachArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, and array length."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"whileEachArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"whileMapArray":{"category":"array","description":"Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array. Re-checks the length each loop.","examples":[{"tag":"example","optional":false,"description":"import { whileMapArray, assert } from '@universalweb/acid'; assert(whileMapArray([1, 2, 3], (item, index, source) => { if (index === 0) { source.push(4); } return item; }), [1, 2, 3, 4]);","source":"import { whileMapArray, assert } from \"@universalweb/acid\";\nassert(\n whileMapArray([1, 2, 3], (item, index, source) => {\n if (index === 0) {\n source.push(4);\n }\n return item;\n }),\n [1, 2, 3, 4],\n);\n"}],"name":"whileMapArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, and array length."},{"tag":"param","name":"results","type":"Array","optional":false,"description":"- Array that will be used to assign results. Default value is a new empty array.","source":"* {Array} results - Array that will be used to assign results. Default value is a new empty array."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"whileMapArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"without":{"category":"array","description":"Returns a copy of the array with all instances of the values removed.","examples":[{"tag":"example","optional":false,"description":"import { without, assert } from '@universalweb/acid'; assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);","source":"import { without, assert } from \"@universalweb/acid\";\nassert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n"}],"name":"without","params":[{"tag":"param","name":"target","type":"Array","optional":false,"description":"- The target array to be filtered.","source":"* {Array} target - The target array to be filtered."},{"tag":"param","name":"sources","type":"Array","optional":false,"description":"- Items to be removed.","source":"* {Array} sources - Items to be removed."}],"type":"function","functionTag":"without","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The target array filtered.","source":"* {Array} - The target array filtered.\n\t *"}},"xor":{"category":"array","description":"Creates an array that is the symmetric difference of the provided arrays.","examples":[{"tag":"example","optional":false,"description":"xor([2, 1], [2, 3, 5], [6]); // => [1, 3, 5, 6]","source":"xor([2, 1], [2, 3, 5], [6]);\n// => [1, 3, 5, 6]\n"}],"name":"xor","params":[{"tag":"param","name":"arrays","type":"...Array","optional":false,"description":"- The array(s) to be filtered.","source":"* {...Array} arrays - The array(s) to be filtered."}],"type":"function","functionTag":"xor","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The filtered array.","source":"* {Array} - The filtered array.\n\t *"}},"zip":{"category":"array","description":"Merges together the values of each of the arrays with the values at the corresponding position.","examples":[{"tag":"example","optional":false,"description":"zip(['a', 'b'], [1, 2], [true, false]); // => [['a', 1, true], ['b', 2, false]]","source":"zip([\"a\", \"b\"], [1, 2], [true, false]);\n// => [['a', 1, true], ['b', 2, false]]\n"}],"name":"zip","params":[{"tag":"param","name":"arrays","type":"Array","optional":false,"description":"- The arrays to process.","source":"* {Array} arrays - The arrays to process."}],"type":"function","functionTag":"zip","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns the new array of regrouped elements.","source":"* {Array} - Returns the new array of regrouped elements.\n\t *"}},"unZip":{"category":"array","description":"Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.","examples":[{"tag":"example","optional":false,"description":"unZip([['a', 1, true], ['b', 2, false]]); // => [['a', 'b'], [1, 2], [true, false]]","source":"unZip([\n [\"a\", 1, true],\n [\"b\", 2, false],\n]);\n// => [['a', 'b'], [1, 2], [true, false]]\n"}],"name":"unZip","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The array of grouped elements to process.","source":"* {Array} source - The array of grouped elements to process."}],"type":"function","functionTag":"unZip","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns the new array of regrouped elements.","source":"* {Array} - Returns the new array of regrouped elements.\n\t *"}},"ensureBuffer":{"category":"buffer","description":"Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.","examples":[{"tag":"example","optional":false,"description":"import { isBuffer, ensureBuffer, assert } from '@universalweb/acid'; assert(isBuffer(ensureBuffer('test')), true);","source":"import { isBuffer, ensureBuffer, assert } from \"@universalweb/acid\";\nassert(isBuffer(ensureBuffer(\"test\")), true);\n"}],"name":"ensureBuffer","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"ensureBuffer","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns an array.","source":"* {Array} - Returns an array.\n\t *"}},"clearBuffer":{"category":"buffer","description":"Clears the values out of a buffer.","examples":[{"tag":"example","optional":false,"description":"import { clearBuffer, assert } from '@universalweb/acid'; assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));","source":"import { clearBuffer, assert } from \"@universalweb/acid\";\nassert(clearBuffer(Buffer.from([1, \"B\", \"Cat\"])), Buffer.from([]));\n"}],"name":"clearBuffer","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Takes an array to be emptied.","source":"* {Array} source - Takes an array to be emptied."}],"type":"function","functionTag":"clearBuffer","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"countBy":{"category":"collection","description":"Creates an object composed of keys generated from the results of running each element of collection through iteratee.","examples":[{"tag":"example","optional":false,"description":"import { countBy, assert } from '@universalweb/acid'; assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});","source":"import { countBy, assert } from \"@universalweb/acid\";\nassert(\n countBy([{ a: 1 }, { a: 3 }], (item) => {\n return \"a\";\n }),\n { a: 2 },\n);\n"}],"name":"countBy","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Array of objects.","source":"* {Array} collection - Array of objects."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- The iteratee to transform keys.","source":"* {Function} iteratee - The iteratee to transform keys."}],"type":"function","functionTag":"countBy","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the composed aggregate object.","source":"* {Object} - Returns the composed aggregate object.\n\t *"}},"countKey":{"category":"collection","description":"Count the amount of times a key is present in a collection.","examples":[{"tag":"example","optional":false,"description":"import { countKey, assert } from '@universalweb/acid'; assert(countKey([{a:1}, {a:3}], 'a'), 2);","source":"import { countKey, assert } from \"@universalweb/acid\";\nassert(countKey([{ a: 1 }, { a: 3 }], \"a\"), 2);\n"}],"name":"countKey","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Array of objects.","source":"* {Array} collection - Array of objects."},{"tag":"param","name":"propertyName","type":"Function","optional":false,"description":"- The name of the key.","source":"* {Function} propertyName - The name of the key."}],"type":"function","functionTag":"countKey","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The count.","source":"* {Number} - The count.\n\t *"}},"countWithoutKey":{"category":"collection","description":"Count the amount of times a key is not present in a collection.","examples":[{"tag":"example","optional":false,"description":"import { countWithoutKey, assert } from '@universalweb/acid'; assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);","source":"import { countWithoutKey, assert } from \"@universalweb/acid\";\nassert(countWithoutKey([{ a: 1 }, { a: 3 }], \"b\"), 2);\n"}],"name":"countWithoutKey","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Array of objects.","source":"* {Array} collection - Array of objects."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- The name of the key.","source":"* {String} propertyName - The name of the key."}],"type":"function","functionTag":"countWithoutKey","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The count.","source":"* {Number} - The count.\n\t *"}},"findIndex":{"category":"collection","description":"Finds an object in a collection by the given id and property name and returns the array index of the object.","examples":[{"tag":"example","optional":false,"description":"findIndex([{id: 1}, {id: 2}], 1); // => 0","source":"findIndex([{ id: 1 }, { id: 2 }], 1);\n// => 0\n"}],"name":"findIndex","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be checked for an item.","source":"* {Array} collection - Collection to be checked for an item."},{"tag":"param","name":"id","type":"Number|string","optional":false,"description":"- The value to look for.","source":"* {Number|string} id - The value to look for."},{"tag":"param","name":"propertyName","type":"String","optional":true,"description":"- The name of the property to compare.","source":"* {String} [propertyName = 'id'] - The name of the property to compare.","default":"'id'"}],"type":"function","functionTag":"findIndex","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The index of the object.","source":"* {Number} - The index of the object.\n\t *"}},"findItem":{"category":"collection","description":"Finds an object in a collection by the given id and property name.","examples":[{"tag":"example","optional":false,"description":"findItem([{id: 1}, {id: 2}], 1); // => {id: 1}","source":"findItem([{ id: 1 }, { id: 2 }], 1);\n// => {id: 1}\n"}],"name":"findItem","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be checked for an item.","source":"* {Array} collection - Collection to be checked for an item."},{"tag":"param","name":"id","type":"Number|string","optional":false,"description":"- The value to look for.","source":"* {Number|string} id - The value to look for."},{"tag":"param","name":"propertyName","type":"String","optional":true,"description":"- The name of the property to compare.","source":"* {String} [propertyName = 'id'] - The name of the property to compare.","default":"'id'"}],"type":"function","functionTag":"findItem","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"The found object.","source":"* {Object} - The found object.\n\t *"}},"sortCollectionDescending":{"category":"collection","description":"Sorts an array in place using a key in descending order.","examples":[{"tag":"example","optional":false,"description":"import { sortCollectionDescending, assert } from '@universalweb/acid'; const result = [{id: 1}, {id: 0}]; const collect = [{id: 0}, {id: 1}]; const prop = 'id'; assert(sortCollectionDescending(collect, prop), result);","source":"import { sortCollectionDescending, assert } from \"@universalweb/acid\";\nconst result = [{ id: 1 }, { id: 0 }];\nconst collect = [{ id: 0 }, { id: 1 }];\nconst prop = \"id\";\nassert(sortCollectionDescending(collect, prop), result);\n"}],"name":"sortCollectionDescending","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be sorted.","source":"* {Array} collection - Collection to be sorted."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- The property name to sort by based on it's value.","source":"* {String} propertyName - The property name to sort by based on it's value."},{"tag":"param","name":"ifMatch","type":"Function","optional":false,"description":"- A function which returns a number for the sort function if two object properties match.","source":"* {Function} ifMatch - A function which returns a number for the sort function if two object properties match."}],"type":"function","functionTag":"sortCollectionDescending","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The sorted array and or a clone of the array sorted.","source":"* {Array} - The sorted array and or a clone of the array sorted.\n\t *"}},"sortCollectionAlphabetically":{"category":"collection","description":"Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.","examples":[{"tag":"example","optional":false,"description":"import { sortCollectionAlphabetically, assert } from '@universalweb/acid'; const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}]; const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}]; const prop = 'letter'; function ifMatchSort(c, n) { if (c.g < n.g) { return -1; } if (c.g > n.g) { return 1; } } assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);","source":"import { sortCollectionAlphabetically, assert } from \"@universalweb/acid\";\nconst result = [\n { letter: \"a\" },\n { letter: \"c\", g: 0 },\n { letter: \"c\", g: 2 },\n { letter: \"f\" },\n];\nconst collect = [\n { letter: \"a\" },\n { letter: \"f\" },\n { letter: \"c\", g: 2 },\n { letter: \"c\", g: 0 },\n];\nconst prop = \"letter\";\nfunction ifMatchSort(c, n) {\n if (c.g < n.g) {\n return -1;\n }\n if (c.g > n.g) {\n return 1;\n }\n}\nassert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n"}],"name":"sortCollectionAlphabetically","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be sorted.","source":"* {Array} collection - Collection to be sorted."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- Name of property to compare.","source":"* {String} propertyName - Name of property to compare."},{"tag":"param","name":"ifMatch","type":"Function","optional":false,"description":"- A function which returns a number for the sort function if two object properties match.","source":"* {Function} ifMatch - A function which returns a number for the sort function if two object properties match."}],"type":"function","functionTag":"sortCollectionAlphabetically","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The sorted array.","source":"* {Array} - The sorted array.\n\t *"}},"sortCollectionAscending":{"category":"collection","description":"Sorts an array in place using a key in ascending order.","examples":[{"tag":"example","optional":false,"description":"import { sortCollectionAscending, assert } from '@universalweb/acid'; const result = [{id: 0}, {id: 1}]; const collect = [{id: 1}, {id: 0}]; const prop = 'id'; assert(sortCollectionAscending(collect, prop), result);","source":"import { sortCollectionAscending, assert } from \"@universalweb/acid\";\nconst result = [{ id: 0 }, { id: 1 }];\nconst collect = [{ id: 1 }, { id: 0 }];\nconst prop = \"id\";\nassert(sortCollectionAscending(collect, prop), result);\n"}],"name":"sortCollectionAscending","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be sorted.","source":"* {Array} collection - Collection to be sorted."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- The property name to sort by based on it's value.","source":"* {String} propertyName - The property name to sort by based on it's value."},{"tag":"param","name":"ifMatch","type":"Function","optional":false,"description":"- A function which returns a number for the sort function if two object properties match.","source":"* {Function} ifMatch - A function which returns a number for the sort function if two object properties match."}],"type":"function","functionTag":"sortCollectionAscending","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The sorted array and or a clone of the array sorted.","source":"* {Array} - The sorted array and or a clone of the array sorted.\n\t *"}},"getHighest":{"category":"collection","description":"Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.","examples":[{"tag":"example","optional":false,"description":"import { getHighest, assert } from '@universalweb/acid'; assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});","source":"import { getHighest, assert } from \"@universalweb/acid\";\nassert(getHighest([{ id: 1 }, { id: 0 }], \"id\"), { id: 0 });\n"}],"name":"getHighest","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be sorted.","source":"* {Array} collection - Collection to be sorted."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- The property name to sort by based on it's value.","source":"* {String} propertyName - The property name to sort by based on it's value."}],"type":"function","functionTag":"getHighest","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"The newest object in the collection.","source":"* {Object} - The newest object in the collection.\n\t *"}},"getLowest":{"category":"collection","description":"Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.","examples":[{"tag":"example","optional":false,"description":"import { getLowest, assert } from '@universalweb/acid'; assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});","source":"import { getLowest, assert } from \"@universalweb/acid\";\nassert(getLowest([{ id: 1 }, { id: 0 }], \"id\"), { id: 1 });\n"}],"name":"getLowest","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be sorted.","source":"* {Array} collection - Collection to be sorted."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- The property name to sort by based on it's value.","source":"* {String} propertyName - The property name to sort by based on it's value."}],"type":"function","functionTag":"getLowest","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"The newest object in the collection.","source":"* {Object} - The newest object in the collection.\n\t *"}},"groupBy":{"category":"collection","description":"Creates an object composed of keys generated from the results of running each element of collection thru iteratee. The order of grouped values is determined by the order they occur in collection. The corresponding value of each key is an array of elements responsible for generating the key.","examples":[{"tag":"example","optional":false,"description":"groupBy([6.1, 4.2, 6.3], Math.floor); // => { '4': [4.2], '6': [6.1, 6.3] }","source":"groupBy([6.1, 4.2, 6.3], Math.floor);\n// => { '4': [4.2], '6': [6.1, 6.3] }\n"}],"name":"groupBy","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Array of objects.","source":"* {Array} collection - Array of objects."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- The iteratee to transform keys.","source":"* {Function} iteratee - The iteratee to transform keys."}],"type":"function","functionTag":"groupBy","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the composed aggregate object.","source":"* {Object} - Returns the composed aggregate object.\n\t *"}},"indexBy":{"category":"collection","description":"Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.","examples":[{"tag":"example","optional":false,"description":"import { indexBy, assert } from '@universalweb/acid'; const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}}; const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id'); assert(indexed, result);","source":"import { indexBy, assert } from \"@universalweb/acid\";\nconst result = { 0: { name: \"test\", id: 0 }, 1: { name: \"test2\", id: 1 } };\nconst indexed = indexBy(\n [\n { name: \"test\", id: 0 },\n { name: \"test2\", id: 1 },\n ],\n \"id\",\n);\nassert(indexed, result);\n"}],"name":"indexBy","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Array of objects.","source":"* {Array} collection - Array of objects."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- The property name to index by.","source":"* {String} propertyName - The property name to index by."}],"type":"function","functionTag":"indexBy","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the composed aggregate object.","source":"* {Object} - Returns the composed aggregate object.\n\t *"}},"invoke":{"category":"collection","description":"Invokes a function on the provided property name in each object in the collection.","examples":[{"tag":"example","optional":false,"description":"invoke([{lucy(item, index) { return [item, index];}}, {lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); // => [['EXAMPLE', 0], ['EXAMPLE', 1]]","source":"invoke(\n [\n {\n lucy(item, index) {\n return [item, index];\n },\n },\n {\n lucy(item, index) {\n return [item, index];\n },\n },\n ],\n \"lucy\",\n \"EXAMPLE\",\n);\n// => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n"}],"name":"invoke","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection from which method will be taken.","source":"* {Array} collection - Collection from which method will be taken."},{"tag":"param","name":"property","type":"String","optional":false,"description":"- Value used to pluck method from object.","source":"* {String} property - Value used to pluck method from object."},{"tag":"param","name":"value","type":"*","optional":false,"description":"- Value to be passed to callable property.","source":"* {*} value - Value to be passed to callable property."}],"type":"function","functionTag":"invoke","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns the results of the invoked method.","source":"* {Array} - Returns the results of the invoked method.\n\t *"}},"invokeAsync":{"category":"collection","description":"Asynchronously awaits & invokes a function on the provided property name in each object in the collection.","examples":[{"tag":"example","optional":false,"description":"invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); // => [['EXAMPLE', 0], ['EXAMPLE', 1]]","source":"invokeAsync(\n [\n {\n async lucy(item, index) {\n return [item, index];\n },\n },\n {\n async lucy(item, index) {\n return [item, index];\n },\n },\n ],\n \"lucy\",\n \"EXAMPLE\",\n);\n// => [['EXAMPLE', 0], ['EXAMPLE', 1]]\n"}],"name":"invokeAsync","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection from which method will be taken.","source":"* {Array} collection - Collection from which method will be taken."},{"tag":"param","name":"property","type":"String","optional":false,"description":"- Value used to pluck method from object.","source":"* {String} property - Value used to pluck method from object."},{"tag":"param","name":"value","type":"*","optional":false,"description":"- Value to be passed to callable property.","source":"* {*} value - Value to be passed to callable property."}],"type":"function","isAsync":true,"functionTag":"invokeAsync","test":{"tag":"test","optional":false,"description":"(async () => { const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]); });","source":"* \t * (async () => {\n\t * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE');\n\t * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]);\n\t * });\n\t *"},"returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns the results of the invoked method.","source":"* {Array} - Returns the results of the invoked method.\n\t *"}},"isNumber":{"category":"type","description":"Checks if the value is a number.","examples":[{"tag":"example","optional":false,"description":"import { isNumber, assert } from '@universalweb/acid'; assert(isNumber(1), true);","source":"import { isNumber, assert } from \"@universalweb/acid\";\nassert(isNumber(1), true);\n"}],"name":"isNumber","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isNumber","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isNotNumber":{"category":"type","description":"Checks if the value is not a number.","examples":[{"tag":"example","optional":false,"description":"import { isNotNumber, assert } from '@universalweb/acid'; assert(isNotNumber(1), false);","source":"import { isNotNumber, assert } from \"@universalweb/acid\";\nassert(isNotNumber(1), false);\n"}],"name":"isNotNumber","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isNotNumber","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isString":{"category":"type","description":"Checks if the value is a string.","examples":[{"tag":"example","optional":false,"description":"import { isString, assert } from '@universalweb/acid'; assert(isString('hello'), true); assert(isString(1), false);","source":"import { isString, assert } from \"@universalweb/acid\";\nassert(isString(\"hello\"), true);\nassert(isString(1), false);\n"}],"name":"isString","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isString","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isNotString":{"category":"type","description":"Checks if the value is not a string.","examples":[{"tag":"example","optional":false,"description":"import { isNotString, assert } from '@universalweb/acid'; assert(isNotString(1), true); assert(isNotString('hello'), false);","source":"import { isNotString, assert } from \"@universalweb/acid\";\nassert(isNotString(1), true);\nassert(isNotString(\"hello\"), false);\n"}],"name":"isNotString","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isNotString","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"pluckObject":{"category":"object","description":"Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.","examples":[{"tag":"example","optional":false,"description":"import { pluckObject, assert } from '@universalweb/acid'; assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);","source":"import { pluckObject, assert } from \"@universalweb/acid\";\nassert(pluckObject({ a: 1, b: 3 }, [\"a\", \"b\"]), [1, 3]);\n"}],"name":"pluckObject","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Array used to determine what sources to be plucked.","source":"* {Object} source - Array used to determine what sources to be plucked."},{"tag":"param","name":"targets","type":"String|Array","optional":false,"description":"- Property name.","source":"* {String|Array} targets - Property name."}],"type":"function","functionTag":"pluckObject","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array of plucked sources.","source":"* {Array} - An array of plucked sources.\n\t *"}},"pluck":{"category":"collection","description":"Returns an array of the plucked values from the collection.","examples":[{"tag":"example","optional":false,"description":"import { pluck, assert } from '@universalweb/acid'; assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]); assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);","source":"import { pluck, assert } from \"@universalweb/acid\";\nassert(pluck([{ a: 1 }, { a: 2 }], \"a\"), [1, 2]);\nassert(\n pluck(\n [\n { a: 1, b: 3 },\n { a: 1, b: 3 },\n ],\n [\"a\", \"b\"],\n ),\n [\n [1, 3],\n [1, 3],\n ],\n);\n"}],"name":"pluck","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Array used to determine what value to be plucked.","source":"* {Array} collection - Array used to determine what value to be plucked."},{"tag":"param","name":"targets","type":"(String|Number|Array.)","optional":false,"description":"- Property name.","source":"* {(String|Number|Array.)} targets - Property name."}],"type":"function","functionTag":"pluck","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array of plucked values.","source":"* {Array} - An array of plucked values.\n\t *"}},"sortCollectionAlphabeticallyReverse":{"category":"collection","description":"Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.","examples":[{"tag":"example","optional":false,"description":"import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid'; const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}]; const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}]; const prop = 'letter'; assert(sortCollectionAlphabeticallyReverse(collect, prop), result);","source":"import {\n sortCollectionAlphabeticallyReverse,\n assert,\n} from \"@universalweb/acid\";\nconst result = [{ letter: \"f\" }, { letter: \"c\" }, { letter: \"a\" }];\nconst collect = [{ letter: \"a\" }, { letter: \"f\" }, { letter: \"c\" }];\nconst prop = \"letter\";\nassert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n"}],"name":"sortCollectionAlphabeticallyReverse","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be sorted.","source":"* {Array} collection - Collection to be sorted."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- Name of property to compare.","source":"* {String} propertyName - Name of property to compare."},{"tag":"param","name":"ifMatch","type":"Function","optional":false,"description":"- A function which returns a number for the sort function if two object properties match.","source":"* {Function} ifMatch - A function which returns a number for the sort function if two object properties match."}],"type":"function","functionTag":"sortCollectionAlphabeticallyReverse","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The sorted array.","source":"* {Array} - The sorted array.\n\t *"}},"getFileExtension":{"category":"file","description":"Return the file extension.","examples":[{"tag":"example","optional":false,"description":"import { getFileExtension, assert } from '@universalweb/acid'; assert(getFileExtension('test.js'),'js');","source":"import { getFileExtension, assert } from \"@universalweb/acid\";\nassert(getFileExtension(\"test.js\"), \"js\");\n"}],"name":"getFileExtension","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"getFileExtension","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Returns the extension.","source":"* {String} - Returns the extension.\n\t *"}},"getFilename":{"category":"file","description":"Return the file extension.","examples":[{"tag":"example","optional":false,"description":"import { getFilename, assert } from '@universalweb/acid'; assert(getFilename('./universalweb/test.js'),'test.js');","source":"import { getFilename, assert } from \"@universalweb/acid\";\nassert(getFilename(\"./universalweb/test.js\"), \"test.js\");\n"}],"name":"getFilename","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"getFilename","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Returns the extension.","source":"* {String} - Returns the extension.\n\t *"}},"isFileCSS":{"category":"file","description":"Checks if the string has a .css extension.","examples":[{"tag":"example","optional":false,"description":"import { isFileCSS, assert } from '@universalweb/acid'; assert(isFileCSS('test.css'), true);","source":"import { isFileCSS, assert } from \"@universalweb/acid\";\nassert(isFileCSS(\"test.css\"), true);\n"}],"name":"isFileCSS","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- Object to be checked.","source":"* {String} source - Object to be checked."}],"type":"function","functionTag":"isFileCSS","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isFileHTML":{"category":"file","description":"Checks if the string has a .html extension.","examples":[{"tag":"example","optional":false,"description":"import { isFileHTML, assert } from '@universalweb/acid'; assert(isFileHTML('test.html'), true);","source":"import { isFileHTML, assert } from \"@universalweb/acid\";\nassert(isFileHTML(\"test.html\"), true);\n"}],"name":"isFileHTML","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- Object to be checked.","source":"* {String} source - Object to be checked."}],"type":"function","functionTag":"isFileHTML","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isFileJS":{"category":"file","description":"Checks if the string has a .js extension.","examples":[{"tag":"example","optional":false,"description":"import { isFileJS, assert } from '@universalweb/acid'; assert(isFileJS('test.js'), true);","source":"import { isFileJS, assert } from \"@universalweb/acid\";\nassert(isFileJS(\"test.js\"), true);\n"}],"name":"isFileJS","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- Object to be checked.","source":"* {String} source - Object to be checked."}],"type":"function","functionTag":"isFileJS","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isFileJSON":{"category":"file","description":"Checks if the string has a .json extension.","examples":[{"tag":"example","optional":false,"description":"import { isFileJSON, assert } from '@universalweb/acid'; assert(isFileJSON('test.json'), true);","source":"import { isFileJSON, assert } from \"@universalweb/acid\";\nassert(isFileJSON(\"test.json\"), true);\n"}],"name":"isFileJSON","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- Object to be checked.","source":"* {String} source - Object to be checked."}],"type":"function","functionTag":"isFileJSON","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"after":{"category":"function","description":"Creates a function that executes callable, only after being called n times.","examples":[{"tag":"example","optional":false,"description":"import { after, assert } from '@universalweb/acid'; const onlyAfter = after(1, (item) => { return item;}); assert(onlyAfter(1), undefined); assert(onlyAfter(2), 2);","source":"import { after, assert } from \"@universalweb/acid\";\nconst onlyAfter = after(1, (item) => {\n return item;\n});\nassert(onlyAfter(1), undefined);\nassert(onlyAfter(2), 2);\n"}],"name":"after","params":[{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The number of calls until method is invoked.","source":"* {Number} amount - The number of calls until method is invoked."},{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be called.","source":"* {Function} callable - The function to be called."}],"type":"function","functionTag":"after","test":{"tag":"test","optional":false,"description":"(async () => { const onlyAfter = after(2, (item) => { return item;}); return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2); });","source":"* \t * (async () => {\n\t * const onlyAfter = after(2, (item) => { return item;});\n\t * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n\t * });\n\t *"},"returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new pass-thru function.","source":"* {Function} - Returns the new pass-thru function.\n\t *"}},"ary":{"category":"function","description":"Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.","examples":[{"tag":"example","optional":false,"description":"import { ary, assert } from '@universalweb/acid'; assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);","source":"import { ary, assert } from \"@universalweb/acid\";\nassert(\n ary((...args) => {\n return args;\n }, 2)(1, 2, 3),\n [1, 2],\n);\n"}],"name":"ary","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to cap arguments for.","source":"* {Function} callable - The function to cap arguments for."},{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The arity cap.","source":"* {Number} amount - The arity cap."}],"type":"function","functionTag":"ary","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the new capped function.","source":"* {Object} - Returns the new capped function.\n\t *"}},"before":{"category":"function","description":"Creates a function that executes callable, only before n times.","examples":[{"tag":"example","optional":false,"description":"import { before, assert } from '@universalweb/acid'; const onlyBefore = before(3, () => { return 1;}); assert(onlyBefore(1), 1);","source":"import { before, assert } from \"@universalweb/acid\";\nconst onlyBefore = before(3, () => {\n return 1;\n});\nassert(onlyBefore(1), 1);\n"}],"name":"before","params":[{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The number of calls before n.","source":"* {Number} amount - The number of calls before n."},{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be called.","source":"* {Function} callable - The function to be called."}],"type":"function","functionTag":"before","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new pass-thru function.","source":"* {Function} - Returns the new pass-thru function.\n\t *"}},"assign":{"category":"object","description":"Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.","examples":[{"tag":"example","optional":false,"description":"import { assign, assert } from '@universalweb/acid'; assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});","source":"import { assign, assert } from \"@universalweb/acid\";\nassert(assign({ b: 2 }, { a: 1 }), { b: 2, a: 1 });\n"}],"name":"assign","params":[{"tag":"param","name":"target","type":"Object","optional":false,"description":"- The target object.","source":"* {Object} target - The target object."},{"tag":"param","name":"sources","type":"...Object","optional":false,"description":"- The source object(s).","source":"* {...Object} sources - The source object(s)."}],"type":"function","functionTag":"assign","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the target object.","source":"* {Object} - Returns the target object.\n\t *"}},"eachAsyncObject":{"category":"object","description":"Asynchronously iterates through the given object.","examples":[{"tag":"example","optional":false,"description":"import { eachAsyncObject, assert } from '@universalweb/acid'; const tempList = []; await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => { tempList[key] = item; }); assert(tempList, {a: 1, b: 2, c: 3});","source":"import { eachAsyncObject, assert } from \"@universalweb/acid\";\nconst tempList = [];\nawait eachAsyncObject({ a: 1, b: 2, c: 3 }, async (item, key) => {\n tempList[key] = item;\n});\nassert(tempList, { a: 1, b: 2, c: 3 });\n"}],"name":"eachAsyncObject","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.","source":"* {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- Iteratee called with thisCall as this.","source":"* {*} thisCall - Iteratee called with thisCall as this."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"eachAsyncObject","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"Returns source.","source":"* {Object|Function} - Returns source.\n\t *"}},"eachObject":{"category":"object","description":"Iterates through the given object.","examples":[{"tag":"example","optional":false,"description":"import { eachObject, assert } from '@universalweb/acid'; assert(eachObject({a: 1, b: 2, c: 3}, (item) => { console.log(item); }), {a: 1, b: 2, c: 3});","source":"import { eachObject, assert } from \"@universalweb/acid\";\nassert(\n eachObject({ a: 1, b: 2, c: 3 }, (item) => {\n console.log(item);\n }),\n { a: 1, b: 2, c: 3 },\n);\n"}],"name":"eachObject","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisCall - An object to be given each time to the iteratee."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"eachObject","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"Returns the calling object.","source":"* {Object|Function} - Returns the calling object.\n\t *"}},"isSet":{"category":"type","description":"Checks if an object(s) is a Set.","examples":[{"tag":"example","optional":false,"description":"import { isSet, assert } from '@universalweb/acid'; assert(isSet(new Set()), true);","source":"import { isSet, assert } from \"@universalweb/acid\";\nassert(isSet(new Set()), true);\n"}],"name":"isSet","params":[{"tag":"param","name":"sources","type":"...*","optional":false,"description":"- Objects to be checked.","source":"* {...*} sources - Objects to be checked."}],"type":"function","functionTag":"isSet","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isGenerator":{"category":"type","description":"Checks if an object or objects are a Int16Array.","examples":[{"tag":"example","optional":false,"description":"import { isGenerator } from '@universalweb/acid'; isGenerator(function* (){}); // => true","source":"import { isGenerator } from \"@universalweb/acid\";\nisGenerator(function* () {});\n// => true\n"}],"name":"isGenerator","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isGenerator","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isFunction":{"category":"type","description":"Checks if an object or objects are a plain object.","examples":[{"tag":"example","optional":false,"description":"import { isFunction } from '@universalweb/acid'; isFunction(() => {}); // => true","source":"import { isFunction } from \"@universalweb/acid\";\nisFunction(() => {});\n// => true\n"}],"name":"isFunction","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isFunction","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isAsync":{"category":"type","description":"Checks if an object is an async function.","examples":[{"tag":"example","optional":false,"description":"import { isAsync, assert } from '@universalweb/acid'; assert(isAsync(async() => {}), true);","source":"import { isAsync, assert } from \"@universalweb/acid\";\nassert(\n isAsync(async () => {}),\n true,\n);\n"}],"name":"isAsync","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isAsync","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"True or false.","source":"* {Boolean} - True or false.\n\t *"}},"each":{"category":"utility","description":"Iterates through the given object.","examples":[{"tag":"example","optional":false,"description":"import { each, assert } from '@universalweb/acid'; const list = {}; each({a: 1, b: 2, c: 3}, (item, key) => { list[key] = item; }); assert(list, {a: 1, b: 2, c: 3});","source":"import { each, assert } from \"@universalweb/acid\";\nconst list = {};\neach({ a: 1, b: 2, c: 3 }, (item, key) => {\n list[key] = item;\n});\nassert(list, { a: 1, b: 2, c: 3 });\n"}],"name":"each","params":[{"tag":"param","name":"source","type":"Array | object | Function","optional":false,"description":"- Object that will be looped through.","source":"* {Array | object | Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisCall - An object to be given each time to the iteratee."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"each","returns":{"tag":"returns","name":"-","type":"Array | object | Function","optional":false,"description":"The originally given object.","source":"* {Array | object | Function} - The originally given object.\n\t *"}},"chain":{"category":"function","description":"Creates a chainable set of functions.","examples":[{"tag":"example","optional":false,"description":"import { chain, assert } from '@universalweb/acid'; const chained = chain({ a(value, c) { return value + c; } }).setValue(2).a(1).done(); assert(chained, 3);","source":"import { chain, assert } from \"@universalweb/acid\";\nconst chained = chain({\n a(value, c) {\n return value + c;\n },\n})\n .setValue(2)\n .a(1)\n .done();\nassert(chained, 3);\n"}],"name":"chain","params":[{"tag":"param","name":"methods","type":"Array|Object","optional":false,"description":"- The object to take methods from.","source":"* {Array|Object} methods - The object to take methods from."}],"type":"function","functionTag":"chain","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.","source":"* {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n\t *"}},"curry":{"category":"function","description":"Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.","examples":[{"tag":"example","optional":false,"description":"import { curry, assert } from '@universalweb/acid'; const result = curry((a, b, c) => { return [a, b, c]; })(1)(2)(3); assert(result, [1, 2, 3]);","source":"import { curry, assert } from \"@universalweb/acid\";\nconst result = curry((a, b, c) => {\n return [a, b, c];\n})(1)(2)(3);\nassert(result, [1, 2, 3]);\n"}],"name":"curry","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to curry.","source":"* {Function} callable - The function to curry."},{"tag":"param","name":"arity","type":"Number","optional":false,"description":"- The arity of method.","source":"* {Number} arity - The arity of method."}],"type":"function","functionTag":"curry","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns the new curried function.","source":"* {*} - Returns the new curried function.\n\t *"}},"curryRight":{"description":"Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.","examples":[{"tag":"example","optional":false,"description":"import { curryRight, assert } from '@universalweb/acid'; const result = curryRight((a, b, c) => { return [a, b, c]; })(1)(2)(3); assert(result, [3, 2, 1]);","source":"import { curryRight, assert } from \"@universalweb/acid\";\nconst result = curryRight((a, b, c) => {\n return [a, b, c];\n})(1)(2)(3);\nassert(result, [3, 2, 1]);\n"}],"name":"curryRight","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to curry.","source":"* {Function} callable - The function to curry."},{"tag":"param","name":"arity","type":"Number","optional":false,"description":"- The arity of method.","source":"* {Number} arity - The arity of method."}],"type":"function","functionTag":"curryRight","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns the new curried function.","source":"* {*} - Returns the new curried function.\n\t *"}},"stubTrue":{"category":"utility","description":"This method returns true.","examples":[{"tag":"example","optional":false,"description":"import { stubTrue } from '@universalweb/acid'; stubTrue(); // => true","source":"import { stubTrue } from \"@universalweb/acid\";\nstubTrue();\n// => true\n"}],"name":"stubTrue","type":"function","functionTag":"stubTrue","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true.","source":"* {Boolean} - Returns true.\n\t *"}},"stubFalse":{"category":"utility","description":"This method returns false.","examples":[{"tag":"example","optional":false,"description":"import { stubFalse } from '@universalweb/acid'; stubFalse(); // => false","source":"import { stubFalse } from \"@universalweb/acid\";\nstubFalse();\n// => false\n"}],"name":"stubFalse","type":"function","functionTag":"stubFalse","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns false.","source":"* {Boolean} - Returns false.\n\t *"}},"noop":{"category":"function","description":"This method returns undefined.","examples":[{"tag":"example","optional":false,"description":"noop(); // => undefined","source":"noop();\n// => undefined\n"}],"name":"noop","type":"function","functionTag":"noop","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined."}},"times":{"category":"utility","description":"Iterates based on the amount given invoking the iteratee with the current index as an argument.","examples":[{"tag":"example","optional":false,"description":"import { times } from '@universalweb/acid'; times(3, (item) => { console.log(item); }); // 0 // 1 // 2 // => undefined","source":"import { times } from \"@universalweb/acid\";\ntimes(3, (item) => {\n console.log(item);\n}); // 0 // 1 // 2\n// => undefined\n"}],"name":"times","params":[{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The amount of times to loop invoking the iteratee.","source":"* {Number} amount - The amount of times to loop invoking the iteratee."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed index and amount.","source":"* {Function} iteratee - Transformation function which is passed index and amount."}],"type":"function","functionTag":"times","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Nothing.","source":"* {undefined} - Nothing.\n\t *"}},"timesMap":{"category":"utility","description":"Iterates based on the amount given and maps the results returned by the iteratee each time to an array.","examples":[{"tag":"example","optional":false,"description":"import { timesMap } from '@universalweb/acid'; timesMap(3, (item) => { return item; }); // => [0, 1, 2]","source":"import { timesMap } from \"@universalweb/acid\";\ntimesMap(3, (item) => {\n return item;\n});\n// => [0, 1, 2]\n"}],"name":"timesMap","params":[{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The amount of times to loop invoking the iteratee.","source":"* {Number} amount - The amount of times to loop invoking the iteratee."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed index and amount.","source":"* {Function} iteratee - Transformation function which is passed index and amount."},{"tag":"param","name":"results","type":"Array","optional":true,"description":"- Array that will have iteratee return pushed to.","source":"* {Array} [results = []] - Array that will have iteratee return pushed to.","default":"[]"}],"type":"function","functionTag":"timesMap","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with iteratee's returned values.","source":"* {Array} - An array with iteratee's returned values.\n\t *"}},"timer":{"category":"function","description":"Timer wrapper.","examples":[{"tag":"example","optional":false,"description":"import { timer, assert } from '@universalweb/acid'; timer(() => {}, 100); // => 0","source":"import { timer, assert } from \"@universalweb/acid\";\ntimer(() => {}, 100);\n// => 0\n"}],"name":"timer","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be invoked.","source":"* {Function} callable - The function to be invoked."},{"tag":"param","name":"time","type":"Number","optional":false,"description":"- The time in milliseconds.","source":"* {Number} time - The time in milliseconds."}],"type":"function","functionTag":"timer","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns setTimeoutId ID.","source":"* {Object} - Returns setTimeoutId ID.\n\t *"}},"clearTimers":{"category":"function","description":"Clear all active timers.","examples":[{"tag":"example","optional":false,"description":"import { clearTimers, assert } from '@universalweb/acid'; clearTimers(); // => undefined","source":"import { clearTimers, assert } from \"@universalweb/acid\";\nclearTimers();\n// => undefined\n"}],"name":"clearTimers","type":"function","functionTag":"clearTimers","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined.\n\t *"}},"apply":{"category":"function","description":"Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.","examples":[{"tag":"example","optional":false,"description":"import { apply, assert } from '@universalweb/acid'; assert(apply(function (a) {return a;}, undefined, [2]), 2);","source":"import { apply, assert } from \"@universalweb/acid\";\nassert(\n apply(\n function (a) {\n return a;\n },\n undefined,\n [2],\n ),\n 2,\n);\n"}],"name":"apply","params":[{"tag":"param","name":"target","type":"Function","optional":false,"description":"- The target function to call.","source":"* {Function} target - The target function to call."},{"tag":"param","name":"thisArgument","type":"*","optional":false,"description":"- Array like object.","source":"* {*} thisArgument - Array like object."},{"tag":"param","name":"argumentsList","type":"Array","optional":false,"description":"- An array-like object specifying the arguments with which target should be called.","source":"* {Array} argumentsList - An array-like object specifying the arguments with which target should be called."}],"type":"function","functionTag":"apply","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"The result of calling the given target function with the specified this value and arguments.","source":"* {*} - The result of calling the given target function with the specified this value and arguments.\n\t *"}},"debounce":{"category":"function","description":"Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.","examples":[{"tag":"example","optional":false,"description":"import { debounce, promise, assert } from '@universalweb/acid'; const promised = promise((a) => { const debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0); }); assert(await promised(), 'debounced');","source":"import { debounce, promise, assert } from \"@universalweb/acid\";\nconst promised = promise((a) => {\n const debounced = debounce(() => {\n debounced.clear();\n a(\"debounced\");\n }, 0);\n});\nassert(await promised(), \"debounced\");\n"}],"name":"debounce","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be invoked.","source":"* {Function} callable - The function to be invoked."},{"tag":"param","name":"time","type":"Number","optional":false,"description":"- The time in milliseconds.","source":"* {Number} time - The time in milliseconds."}],"type":"function","functionTag":"debounce","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"The debounced function.","source":"* {Function} - The debounced function.\n\t *"}},"ifInvoke":{"category":"function","description":"Checks if the given method is a function. If it is then it invokes it with the given arguments.","examples":[{"tag":"example","optional":false,"description":"import { ifInvoke, assert } from '@universalweb/acid'; assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);","source":"import { ifInvoke, assert } from \"@universalweb/acid\";\nassert(\n ifInvoke(\n (...args) => {\n return args;\n },\n 1,\n 2,\n ),\n [1, 2],\n);\n"}],"name":"ifInvoke","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be invoked if possible.","source":"* {Function} callable - The function to be invoked if possible."},{"tag":"param","name":"args","type":"...Array","optional":false,"description":"- Arguments to pass to the method.","source":"* {...Array} args - Arguments to pass to the method."}],"type":"function","functionTag":"ifInvoke","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns the method invoked or undefined.","source":"* {*} - Returns the method invoked or undefined.\n\t *"}},"inAsync":{"category":"array","description":"Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.","examples":[{"tag":"example","optional":false,"description":"import { inAsync, assert } from '@universalweb/acid'; const list = []; await inAsync([async (firstArgument, item, index) => { list.push(index + firstArgument.a); }, async (firstArgument, item, index) => { list.push(index); }], {a:1}); assert(list, [1, 1]);","source":"import { inAsync, assert } from \"@universalweb/acid\";\nconst list = [];\nawait inAsync(\n [\n async (firstArgument, item, index) => {\n list.push(index + firstArgument.a);\n },\n async (firstArgument, item, index) => {\n list.push(index);\n },\n ],\n { a: 1 },\n);\nassert(list, [1, 1]);\n"}],"name":"inAsync","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array of async functions that will be looped through. Functions are given the supplied object, index, the calling array, and the array length.","source":"* {Array} source - Array of async functions that will be looped through.\n\t * Functions are given the supplied object, index, the calling array, and the array length."},{"tag":"param","name":"firstArgument","type":"*","optional":false,"description":"- The first argument given to each function.","source":"* {*} firstArgument - The first argument given to each function."}],"type":"function","isAsync":true,"functionTag":"inAsync","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"The originally given array.","source":"* {Object} - The originally given array.\n\t *"}},"inSync":{"category":"function","description":"Invoke an array of functions.","examples":[{"tag":"example","optional":false,"description":"inSync([() => {console.log(1);}, () => {console.log(2);}]); // 1 // 2 // => undefined","source":"inSync([\n () => {\n console.log(1);\n },\n () => {\n console.log(2);\n },\n]); // 1 // 2\n// => undefined\n"}],"name":"inSync","params":[{"tag":"param","name":"collection","type":"Array|Object|Function","optional":false,"description":"- The functions to be invoked.","source":"* {Array|Object|Function} collection - The functions to be invoked."},{"tag":"param","name":"value","type":"*","optional":false,"description":"- The object passed as an argument to each method.","source":"* {*} value - The object passed as an argument to each method."}],"type":"function","functionTag":"inSync","test":{"tag":"test","optional":false,"description":"(() => { const tempList = []; inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]); return assert(tempList, [1, 2]); });","source":"* \t * (() => {\n\t * const tempList = [];\n\t * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n\t * return assert(tempList, [1, 2]);\n\t * });\n\t *"},"returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined.\n\t *"}},"negate":{"category":"function","description":"Creates a function that negates the result of the predicate callable.","examples":[{"tag":"example","optional":false,"description":"negate(() => { return false;})(); // => true","source":"negate(() => {\n return false;\n})();\n// => true\n"}],"name":"negate","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be invoked.","source":"* {Function} callable - The function to be invoked."}],"type":"function","functionTag":"negate","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns the given methods result.","source":"* {*} - Returns the given methods result.\n\t *"}},"nthArg":{"category":"function","description":"Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.","examples":[{"tag":"example","optional":false,"description":"nthArg(1)('a', 'b'); // => 'b'","source":"nthArg(1)(\"a\", \"b\");\n// => 'b'\n"}],"name":"nthArg","params":[{"tag":"param","name":"index","type":"Number","optional":true,"description":"- The index of the argument to return.","source":"* {Number} [index = 0] - The index of the argument to return.","default":"0"}],"type":"function","functionTag":"nthArg","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new pass-thru function.","source":"* {Function} - Returns the new pass-thru function.\n\t *"}},"once":{"category":"function","description":"Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.","examples":[{"tag":"example","optional":false,"description":"const onceOnly = once((item) => { return item;}); onceOnly(5); onceOnly(3); // => 5","source":"const onceOnly = once((item) => {\n return item;\n});\nonceOnly(5);\nonceOnly(3);\n// => 5\n"}],"name":"once","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be called.","source":"* {Function} callable - The function to be called."}],"type":"function","functionTag":"once","test":{"tag":"test","optional":false,"description":"(async () => { const onceOnly = once((item) => { return item;}); return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5); });","source":"* \t * (async () => {\n\t * const onceOnly = once((item) => { return item;});\n\t * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n\t * });\n\t *"},"returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new pass-thru function.","source":"* {Function} - Returns the new pass-thru function.\n\t *"}},"mapObjectAsync":{"category":"object","description":"Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { mapAsyncObject, assert } from '@universalweb/acid'; assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => { return item; }), {a: 1, b: undefined, c: 3});","source":"import { mapAsyncObject, assert } from \"@universalweb/acid\";\nassert(\n await mapAsyncObject({ a: 1, b: undefined, c: 3 }, (item) => {\n return item;\n }),\n { a: 1, b: undefined, c: 3 },\n);\n"}],"name":"mapObjectAsync","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"results","type":"Object|Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object|Function} [results = {}] - Object that will be used to assign results.","default":"{}"}],"type":"function","functionTag":"mapObjectAsync","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"An object of the same calling object's type.","source":"* {Object|Function} - An object of the same calling object's type.\n\t *"}},"mapObject":{"category":"object","description":"Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { mapObject, assert } from '@universalweb/acid'; assert(mapObject({a: 1, b: undefined, c: 3}, (item) => { return item; }), {a: 1, b: undefined, c: 3});","source":"import { mapObject, assert } from \"@universalweb/acid\";\nassert(\n mapObject({ a: 1, b: undefined, c: 3 }, (item) => {\n return item;\n }),\n { a: 1, b: undefined, c: 3 },\n);\n"}],"name":"mapObject","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"results","type":"Object|Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object|Function} [results = {}] - Object that will be used to assign results.","default":"{}"},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisCall - An object to be given each time to the iteratee."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"mapObject","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"An object of the same calling object's type.","source":"* {Object|Function} - An object of the same calling object's type.\n\t *"}},"getType":{"category":"type","description":"Returns the constructor of an object.","examples":[{"tag":"example","optional":false,"description":"import { getType, assert } from '@universalweb/acid'; assert(getType(1), true);","source":"import { getType, assert } from \"@universalweb/acid\";\nassert(getType(1), true);\n"}],"name":"getType","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"getType","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"cloneType":{"category":"type","description":"Returns a new empty object of the same type.","examples":[{"tag":"example","optional":false,"description":"import { cloneType, assert } from '@universalweb/acid'; assert(cloneType([1]), []);","source":"import { cloneType, assert } from \"@universalweb/acid\";\nassert(cloneType([1]), []);\n"}],"name":"cloneType","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"cloneType","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"forOfCompactMap":{"category":"utility","description":"Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { assert,forOfCompactMap } from '@universalweb/acid'; const source = {a: undefined, b: 2, c: 3}; const temp = forOfCompactMap(source, (item) => { return item; }); assert(temp, {b: 2, c: 3});","source":"import { assert, forOfCompactMap } from \"@universalweb/acid\";\nconst source = { a: undefined, b: 2, c: 3 };\nconst temp = forOfCompactMap(source, (item) => {\n return item;\n});\nassert(temp, { b: 2, c: 3 });\n"}],"name":"forOfCompactMap","params":[{"tag":"param","name":"source","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function|Class|Map|Set|Array} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"resultsObject","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be used to assign results else source is type cloned.","source":"* {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned."}],"type":"function","functionTag":"forOfCompactMap","returns":{"tag":"returns","name":"-","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"An object with mapped properties that are not null or undefined.","source":"* {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n\t *"}},"forOfCompactMapAsync":{"category":"utility","description":"Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { assert,forOfCompactMapAsync } from '@universalweb/acid'; const source = {a: undefined, b: 2, c: 3}; const temp = await forOfCompactMapAsync(source, async (item) => { return item; }); assert(temp, {b: 2, c: 3});","source":"import { assert, forOfCompactMapAsync } from \"@universalweb/acid\";\nconst source = { a: undefined, b: 2, c: 3 };\nconst temp = await forOfCompactMapAsync(source, async (item) => {\n return item;\n});\nassert(temp, { b: 2, c: 3 });\n"}],"name":"forOfCompactMapAsync","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"resultsObject","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be used to assign results else source is type cloned.","source":"* {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned."}],"type":"function","functionTag":"forOfCompactMapAsync","returns":{"tag":"returns","name":"-","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"An object with mapped properties that are not null or undefined.","source":"* {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n\t *"}},"map":{"category":"utility","description":"Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { map, assert } from '@universalweb/acid'; assert(map({a: 1, b: 2, c: 3}, (item) => { return item * 2; }), {a: 2, b: 4, c: 6});","source":"import { map, assert } from \"@universalweb/acid\";\nassert(\n map({ a: 1, b: 2, c: 3 }, (item) => {\n return item * 2;\n }),\n { a: 2, b: 4, c: 6 },\n);\n"}],"name":"map","params":[{"tag":"param","name":"source","type":"Array | object | Function","optional":false,"description":"- Object that will be looped through.","source":"* {Array | object | Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type."},{"tag":"param","name":"results","type":"Object | Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object | Function} [results = {}] - Object that will be used to assign results.","default":"{}"},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisCall - An object to be given each time to the iteratee."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"map","returns":{"tag":"returns","name":"-","type":"Array | object | Function","optional":false,"description":"A new object of the same calling object's type.","source":"* {Array | object | Function} - A new object of the same calling object's type.\n\t *"}},"over":{"category":"function","description":"Creates a function that invokes iteratee with the arguments it receives and returns their results.","examples":[{"tag":"example","optional":false,"description":"import { overEvery, assert } from '@universalweb/acid'; assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);","source":"import { overEvery, assert } from \"@universalweb/acid\";\nassert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n"}],"name":"over","params":[{"tag":"param","name":"iteratees","type":"(Array.|Object.)","optional":false,"description":"- The list of functions to loop through.","source":"* {(Array.|Object.)} iteratees - The list of functions to loop through."}],"type":"function","functionTag":"over","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new over wrapped function.","source":"* {Function} - Returns the new over wrapped function.\n\t *"}},"everyAsyncObject":{"category":"object","description":"Iterates through the given object while the iteratee returns true.","examples":[{"tag":"example","optional":false,"description":"import { everyAsyncObject, assert } from '@universalweb/acid'; const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => { return item; }); assert(result, true);","source":"import { everyAsyncObject, assert } from \"@universalweb/acid\";\nconst result = await everyAsyncObject({ a: true, b: true, c: true }, (item) => {\n return item;\n});\nassert(result, true);\n"}],"name":"everyAsyncObject","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Object that will be looped through.","source":"* {Object} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, key, calling array, and array length."}],"type":"function","functionTag":"everyAsyncObject","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if all values returned are true or false if one value returns false.","source":"* {Boolean} - Returns true if all values returned are true or false if one value returns false.\n\t *"}},"everyObject":{"category":"object","description":"Iterates through the given object while the iteratee returns true.","examples":[{"tag":"example","optional":false,"description":"import { everyObject, assert } from '@universalweb/acid'; const result = everyObject({a: true, b: true, c: true}, (item) => { return item; }); assert(result, true);","source":"import { everyObject, assert } from \"@universalweb/acid\";\nconst result = everyObject({ a: true, b: true, c: true }, (item) => {\n return item;\n});\nassert(result, true);\n"}],"name":"everyObject","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Object that will be looped through.","source":"* {Object} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, key, calling array, and array length."}],"type":"function","functionTag":"everyObject","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if all values returned are true or false if one value returns false.","source":"* {Boolean} - Returns true if all values returned are true or false if one value returns false.\n\t *"}},"forOfEvery":{"category":"utility","description":"Iterates (for of) through the given object while the iteratee returns true using a for of loop.","examples":[{"tag":"example","optional":false,"description":"import { every, assert } from '@universalweb/acid'; assert(forOfEvery({a: false, b: true, c: true}, (item) => { return item; }), false);","source":"import { every, assert } from \"@universalweb/acid\";\nassert(\n forOfEvery({ a: false, b: true, c: true }, (item) => {\n return item;\n }),\n false,\n);\n"}],"name":"forOfEvery","params":[{"tag":"param","name":"source","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function|Class|Map|Set|Array} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."}],"type":"function","functionTag":"forOfEvery","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if all values returned are true or false if one value returns false.","source":"* {Boolean} - Returns true if all values returned are true or false if one value returns false.\n\t *"}},"forOfEveryAsync":{"category":"utility","description":"Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.","examples":[{"tag":"example","optional":false,"description":"import { every, assert } from '@universalweb/acid'; assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => { return item; }), false);","source":"import { every, assert } from \"@universalweb/acid\";\nassert(\n forOfEveryAsync({ a: false, b: true, c: true }, (item) => {\n return item;\n }),\n false,\n);\n"}],"name":"forOfEveryAsync","params":[{"tag":"param","name":"source","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function|Class|Map|Set|Array} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."}],"type":"function","functionTag":"forOfEveryAsync","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if all values returned are true or false if one value returns false.","source":"* {Boolean} - Returns true if all values returned are true or false if one value returns false.\n\t *"}},"every":{"category":"utility","description":"Iterates through the given object while the iteratee returns true.","examples":[{"tag":"example","optional":false,"description":"import { every, assert } from '@universalweb/acid'; assert(every({a: false, b: true, c: true}, (item) => { return item; }), false);","source":"import { every, assert } from \"@universalweb/acid\";\nassert(\n every({ a: false, b: true, c: true }, (item) => {\n return item;\n }),\n false,\n);\n"}],"name":"every","params":[{"tag":"param","name":"source","type":"Object | Array | Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object | Array | Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, key, calling array, and array length."}],"type":"function","functionTag":"every","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if all values returned are true or false if one value returns false.","source":"* {Boolean} - Returns true if all values returned are true or false if one value returns false.\n\t *"}},"overEvery":{"category":"function","description":"Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.","examples":[{"tag":"example","optional":false,"description":"import { overEvery, assert } from '@universalweb/acid'; assert(overEvery([Boolean, isFinite])('1'), true);","source":"import { overEvery, assert } from \"@universalweb/acid\";\nassert(overEvery([Boolean, isFinite])(\"1\"), true);\n"}],"name":"overEvery","params":[{"tag":"param","name":"predicates","type":"(Array.|Object.)","optional":false,"description":"- The list of functions to loop through.","source":"* {(Array.|Object.)} predicates - The list of functions to loop through."}],"type":"function","functionTag":"overEvery","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new overEvery wrapped function.","source":"* {Function} - Returns the new overEvery wrapped function.\n\t *"}},"reArg":{"category":"function","description":"Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.","examples":[{"tag":"example","optional":false,"description":"reArg((a, b, c) => { return [a, b, c]; }, [1,2,0])(1,2,3); // => [2, 3, 1]","source":"reArg(\n (a, b, c) => {\n return [a, b, c];\n },\n [1, 2, 0],\n)(1, 2, 3);\n// => [2, 3, 1]\n"}],"name":"reArg","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be invoked.","source":"* {Function} callable - The function to be invoked."},{"tag":"param","name":"indexes","type":"Array","optional":false,"description":"- The arranged argument indexes.","source":"* {Array} indexes - The arranged argument indexes."}],"type":"function","functionTag":"reArg","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new function.","source":"* {Function} - Returns the new function.\n\t *"}},"throttle":{"category":"function","description":"Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.","examples":[{"tag":"example","optional":false,"description":"const throttled = throttle(() => { console.log('throttle'); }, 0)(); throttled(); // 'throttle'","source":"const throttled = throttle(() => {\n console.log(\"throttle\");\n}, 0)();\nthrottled(); // 'throttle'\n"}],"name":"throttle","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be invoked.","source":"* {Function} callable - The function to be invoked."},{"tag":"param","name":"time","type":"Number","optional":false,"description":"- The time in milliseconds.","source":"* {Number} time - The time in milliseconds."}],"type":"function","functionTag":"throttle","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"The throttled function.","source":"* {Function} - The throttled function.\n\t *"}},"wrap":{"category":"function","description":"Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.","examples":[{"tag":"example","optional":false,"description":"wrap('Lucy', (firstName, lastName) => { return `My name is ${firstName} ${lastName}.`; })('Diamonds'); // => 'My name is Lucy Diamonds.'","source":"wrap(\"Lucy\", (firstName, lastName) => {\n return `My name is ${firstName} ${lastName}.`;\n})(\"Diamonds\");\n// => 'My name is Lucy Diamonds.'\n"}],"name":"wrap","params":[{"tag":"param","name":"value","type":"*","optional":false,"description":"- The value to wrap.","source":"* {*} value - The value to wrap."},{"tag":"param","name":"wrapper","type":"Function","optional":false,"description":"- The wrapper function.","source":"* {Function} wrapper - The wrapper function."}],"type":"function","functionTag":"wrap","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"The new function.","source":"* {Function} - The new function.\n\t *"}},"cacheNativeMethod":{"category":"utility","description":"Caches a prototype method.","examples":[{"tag":"example","optional":false,"description":"import { cacheNativeMethod, assert } from '@universalweb/acid'; assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);","source":"import { cacheNativeMethod, assert } from \"@universalweb/acid\";\nassert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n"}],"name":"cacheNativeMethod","params":[{"tag":"param","name":"method","type":"Function","optional":false,"description":"- Prototype method.","source":"* {Function} method - Prototype method."}],"type":"function","functionTag":"cacheNativeMethod","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Cached method.","source":"* {Function} - Cached method.\n\t *"}},"getPropNames":{"category":"object","description":"Returns an array of all properties (enumerable or not) found directly upon a given object.","examples":[{"tag":"example","optional":false,"description":"import { getPropNames, assert } from '@universalweb/acid'; assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);","source":"import { getPropNames, assert } from \"@universalweb/acid\";\nassert(getPropNames({ 0: \"a\", 1: \"b\", 2: \"c\" }), [\"0\", \"1\", \"2\"]);\n"}],"name":"getPropNames","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- The object whose enumerable and non-enumerable own properties are to be returned.","source":"* {Object} source - The object whose enumerable and non-enumerable own properties are to be returned."}],"type":"function","functionTag":"getPropNames","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"An array of strings that correspond to the properties found directly upon the given object.","source":"* {Object} - An array of strings that correspond to the properties found directly upon the given object.\n\t *"}},"getPropDesc":{"category":"object","description":"Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.","examples":[{"tag":"example","optional":false,"description":"getPropDesc({ bar: 42 }, 'bar'); // => { configurable: true, enumerable: true, value: 42, writable: true }","source":"getPropDesc({ bar: 42 }, \"bar\");\n// => { configurable: true, enumerable: true, value: 42, writable: true }\n"}],"name":"getPropDesc","params":[{"tag":"param","name":"target","type":"Object","optional":false,"description":"- The target object.","source":"* {Object} target - The target object."},{"tag":"param","name":"property","type":"String","optional":false,"description":"- The name of the property whose description is to be retrieved.","source":"* {String} property - The name of the property whose description is to be retrieved."}],"type":"function","functionTag":"getPropDesc","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"A property descriptor of the given property if it exists on the object, undefined otherwise.","source":"* {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n\t *"}},"defProp":{"category":"object","description":"Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.","examples":[{"tag":"example","optional":false,"description":"defProp({}, 'key', { enumerable: false, configurable: false, writable: false, value: 'static' }).key; // => 'static'","source":"defProp({}, \"key\", {\n enumerable: false,\n configurable: false,\n writable: false,\n value: \"static\",\n}).key;\n// => 'static'\n"}],"name":"defProp","params":[{"tag":"param","name":"target","type":"Object","optional":false,"description":"- The object on which to define the property.","source":"* {Object} target - The object on which to define the property."},{"tag":"param","name":"property","type":"String","optional":false,"description":"- The name of the property whose description is to be retrieved.","source":"* {String} property - The name of the property whose description is to be retrieved."},{"tag":"param","name":"descriptor","type":"Object","optional":false,"description":"- The descriptor for the property being defined or modified.","source":"* {Object} descriptor - The descriptor for the property being defined or modified."}],"type":"function","functionTag":"defProp","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"The object that was passed to the function.","source":"* {Object} - The object that was passed to the function.\n\t *"}},"isSame":{"category":"object","description":"Determines whether two values are the same value.","examples":[{"tag":"example","optional":false,"description":"import { isSame, assert } from '@universalweb/acid'; assert(isSame('foo', 'foo'), true);","source":"import { isSame, assert } from \"@universalweb/acid\";\nassert(isSame(\"foo\", \"foo\"), true);\n"}],"name":"isSame","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Value to compare to.","source":"* {*} source - Value to compare to."},{"tag":"param","name":"target","type":"*","optional":false,"description":"- A value to compare.","source":"* {*} target - A value to compare."}],"type":"function","functionTag":"isSame","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"A Boolean indicating whether or not the two arguments are the same value.","source":"* {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n\t *"}},"add":{"category":"math","description":"Adds two numbers.","examples":[{"tag":"example","optional":false,"description":"import { add, assert } from '@universalweb/acid'; assert(add(1, 1), 2);","source":"import { add, assert } from \"@universalweb/acid\";\nassert(add(1, 1), 2);\n"}],"name":"add","params":[{"tag":"param","name":"augend","type":"Number","optional":false,"description":"- First number.","source":"* {Number} augend - First number."},{"tag":"param","name":"addend","type":"Number","optional":false,"description":"- Second number which is being added to another (augend).","source":"* {Number} addend - Second number which is being added to another (augend)."}],"type":"function","functionTag":"add","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns the sum of the arguments.","source":"* {Number} - Returns the sum of the arguments.\n\t *"}},"deduct":{"category":"math","description":"Decrements a number.","examples":[{"tag":"example","optional":false,"description":"import { multiply, assert } from '@universalweb/acid'; assert(multiply(10, 5), 50); deduct(10); // => 9","source":"import { multiply, assert } from \"@universalweb/acid\";\nassert(multiply(10, 5), 50);\ndeduct(10);\n// => 9\n"}],"name":"deduct","params":[{"tag":"param","name":"number","type":"Number","optional":false,"description":"- First number.","source":"* {Number} number - First number."}],"type":"function","functionTag":"deduct","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns a decremented version of the number.","source":"* {Number} - Returns a decremented version of the number.\n\t *"}},"divide":{"category":"math","description":"Divides two numbers.","examples":[{"tag":"example","optional":false,"description":"import { divide, assert } from '@universalweb/acid'; assert(divide(10, 5), 2);","source":"import { divide, assert } from \"@universalweb/acid\";\nassert(divide(10, 5), 2);\n"}],"name":"divide","params":[{"tag":"param","name":"number","type":"Number","optional":false,"description":"- First number.","source":"* {Number} number - First number."},{"tag":"param","name":"value","type":"Number","optional":false,"description":"- Second number.","source":"* {Number} value - Second number."}],"type":"function","functionTag":"divide","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns the quotient of the arguments.","source":"* {Number} - Returns the quotient of the arguments.\n\t *"}},"increment":{"category":"math","description":"Increments a number.","examples":[{"tag":"example","optional":false,"description":"import { multiply, assert } from '@universalweb/acid'; assert(multiply(10, 5), 50); increment(10); // => 11","source":"import { multiply, assert } from \"@universalweb/acid\";\nassert(multiply(10, 5), 50);\nincrement(10);\n// => 11\n"}],"name":"increment","params":[{"tag":"param","name":"number","type":"Number","optional":false,"description":"- First number.","source":"* {Number} number - First number."}],"type":"function","functionTag":"increment","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns an incremented version of the number.","source":"* {Number} - Returns an incremented version of the number.\n\t *"}},"multiply":{"category":"math","description":"Multiplies two numbers.","examples":[{"tag":"example","optional":false,"description":"import { multiply, assert } from '@universalweb/acid'; assert(multiply(10, 5), 50);","source":"import { multiply, assert } from \"@universalweb/acid\";\nassert(multiply(10, 5), 50);\n"}],"name":"multiply","params":[{"tag":"param","name":"number","type":"Number","optional":false,"description":"- First number.","source":"* {Number} number - First number."},{"tag":"param","name":"value","type":"Number","optional":false,"description":"- Second number.","source":"* {Number} value - Second number."}],"type":"function","functionTag":"multiply","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns the product of the arguments.","source":"* {Number} - Returns the product of the arguments.\n\t *"}},"calcProgress":{"category":"utility","description":"Calculate the progress from a given total and current amount.","examples":[{"tag":"example","optional":false,"description":"import { calcProgress, assert } from '@universalweb/acid'; assert(calcProgress(100, 1), 1);","source":"import { calcProgress, assert } from \"@universalweb/acid\";\nassert(calcProgress(100, 1), 1);\n"}],"name":"calcProgress","params":[{"tag":"param","name":"total","type":"Number","optional":false,"description":"- The total amount.","source":"* {Number} total - The total amount."},{"tag":"param","name":"currentAmount","type":"Number","optional":false,"description":"- The current amount.","source":"* {Number} currentAmount - The current amount."}],"type":"function","functionTag":"calcProgress","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The progress as a percentage.","source":"* {Number} - The progress as a percentage.\n\t *"}},"randomFloat":{"category":"math","description":"Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.","examples":[{"tag":"example","optional":false,"description":"import { randomFloat, assert } from '@universalweb/acid'; assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;}); // => 9.1","source":"import { randomFloat, assert } from \"@universalweb/acid\";\nassert(randomFloat(10, 0), (value) => {\n return value > 0 && value < 10;\n});\n// => 9.1\n"}],"name":"randomFloat","params":[{"tag":"param","name":"max","type":"Number","optional":false,"description":"- Establishes highest possible value for the random number.","source":"* {Number} max - Establishes highest possible value for the random number."},{"tag":"param","name":"min","type":"Number","optional":true,"description":"- Establishes lowest possible value for the random number.","source":"* {Number} [min = 0] - Establishes lowest possible value for the random number.","default":"0"}],"type":"function","functionTag":"randomFloat","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns random integer between the max and min range.","source":"* {Number} - Returns random integer between the max and min range.\n\t *"}},"remainder":{"category":"math","description":"Extracts the remainder between two numbers.","examples":[{"tag":"example","optional":false,"description":"import { multiply, assert } from '@universalweb/acid'; assert(multiply(10, 5), 50); remainder(10, 6); // => 4","source":"import { multiply, assert } from \"@universalweb/acid\";\nassert(multiply(10, 5), 50);\nremainder(10, 6);\n// => 4\n"}],"name":"remainder","params":[{"tag":"param","name":"number","type":"Number","optional":false,"description":"- First number.","source":"* {Number} number - First number."},{"tag":"param","name":"value","type":"Number","optional":false,"description":"- Second number.","source":"* {Number} value - Second number."}],"type":"function","functionTag":"remainder","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns the remainder of the arguments.","source":"* {Number} - Returns the remainder of the arguments.\n\t *"}},"subtractAll":{"category":"math","description":"Subtract all numbers in the array starting from left to right & return the difference.","examples":[{"tag":"example","optional":false,"description":"import { subtractAll, assert } from '@universalweb/acid'; assert(subtractAll([10, 1, 2, 3]), 5);","source":"import { subtractAll, assert } from \"@universalweb/acid\";\nassert(subtractAll([10, 1, 2, 3]), 5);\n"}],"name":"subtractAll","params":[{"tag":"param","name":"source","type":"Number[]","optional":false,"description":"- Array of numbers.","source":"* {Number[]} source - Array of numbers."}],"type":"function","functionTag":"subtractAll","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns the final difference.","source":"* {Number} - Returns the final difference.\n\t *"}},"sumAll":{"category":"math","description":"Sum all numbers in a given array.","examples":[{"tag":"example","optional":false,"description":"import { sumAll, assert } from '@universalweb/acid'; assert(sumAll([10, 1, 2, 3]), 5);","source":"import { sumAll, assert } from \"@universalweb/acid\";\nassert(sumAll([10, 1, 2, 3]), 5);\n"}],"name":"sumAll","params":[{"tag":"param","name":"source","type":"Number[]","optional":false,"description":"- Array of numbers.","source":"* {Number[]} source - Array of numbers."}],"type":"function","functionTag":"sumAll","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns a single number.","source":"* {Number} - Returns a single number.\n\t *"}},"isNumberInRange":{"category":"number","description":"Checks if a number is within a range.","examples":[{"tag":"example","optional":false,"description":"import { isNumberInRange, assert } from '@universalweb/acid'; assert(isNumberInRange(1, 0, 2), true); assert(isNumberInRange(1, 2, 5), false);","source":"import { isNumberInRange, assert } from \"@universalweb/acid\";\nassert(isNumberInRange(1, 0, 2), true);\nassert(isNumberInRange(1, 2, 5), false);\n"}],"name":"isNumberInRange","params":[{"tag":"param","name":"source","type":"Number","optional":false,"description":"- Number to be checked.","source":"* {Number} source - Number to be checked."},{"tag":"param","name":"start","type":"Number","optional":false,"description":"- Beginning of range.","source":"* {Number} start - Beginning of range."},{"tag":"param","name":"end","type":"Number","optional":false,"description":"- End of range.","source":"* {Number} end - End of range."}],"type":"function","functionTag":"isNumberInRange","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isNumberNotInRange":{"category":"number","description":"Checks if a number is within a range.","examples":[{"tag":"example","optional":false,"description":"import { isNumberNotInRange, assert } from '@universalweb/acid'; assert(isNumberNotInRange(1, 0, 2), false); assert(isNumberNotInRange(1, 2, 5), true);","source":"import { isNumberNotInRange, assert } from \"@universalweb/acid\";\nassert(isNumberNotInRange(1, 0, 2), false);\nassert(isNumberNotInRange(1, 2, 5), true);\n"}],"name":"isNumberNotInRange","params":[{"tag":"param","name":"source","type":"Number","optional":false,"description":"- Number to be checked.","source":"* {Number} source - Number to be checked."},{"tag":"param","name":"start","type":"Number","optional":false,"description":"- Beginning of range.","source":"* {Number} start - Beginning of range."},{"tag":"param","name":"end","type":"Number","optional":false,"description":"- End of range.","source":"* {Number} end - End of range."}],"type":"function","functionTag":"isNumberNotInRange","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isPositive":{"category":"number","description":"Checks if a number is negative & returns true or false.","examples":[{"tag":"example","optional":false,"description":"import { isPositive, assert } from '@universalweb/acid'; assert(isPositive(1), true);","source":"import { isPositive, assert } from \"@universalweb/acid\";\nassert(isPositive(1), true);\n"}],"name":"isPositive","params":[{"tag":"param","name":"source","type":"Number","optional":false,"description":"- Number to be checked.","source":"* {Number} source - Number to be checked."}],"type":"function","functionTag":"isPositive","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isZero":{"category":"number","description":"Strictly checks if a number is zero.","examples":[{"tag":"example","optional":false,"description":"import { isZero, assert } from '@universalweb/acid'; assert(isZero(0), true);","source":"import { isZero, assert } from \"@universalweb/acid\";\nassert(isZero(0), true);\n"}],"name":"isZero","params":[{"tag":"param","name":"source","type":"Number","optional":false,"description":"- Number to be checked.","source":"* {Number} source - Number to be checked."}],"type":"function","functionTag":"isZero","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"getEntries":{"category":"object","description":"Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.","examples":[{"tag":"example","optional":false,"description":"import { getEntries, assert } from '@universalweb/acid'; assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);","source":"import { getEntries, assert } from \"@universalweb/acid\";\nassert(getEntries({ b: 2, a: 1 }), [\n [\"b\", 2],\n [\"a\", 1],\n]);\n"}],"name":"getEntries","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- The source object.","source":"* {Object} source - The source object."}],"type":"function","functionTag":"getEntries","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns the Object.entries of the source object.","source":"* {Array} - Returns the Object.entries of the source object.\n\t *"}},"compactKeys":{"category":"object","description":"Extracts all keys from an object whose values are not null or undefined.","examples":[{"tag":"example","optional":false,"description":"import { compactKeys, assert } from '@universalweb/acid'; assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);","source":"import { compactKeys, assert } from \"@universalweb/acid\";\nassert(compactKeys({ a: 1, b: 0, c: undefined, d: false, e: null }), [\n \"a\",\n \"b\",\n \"d\",\n]);\n"}],"name":"compactKeys","params":[{"tag":"param","name":"object","type":"Object","optional":false,"description":"- Object from which keys are extracted.","source":"* {Object} object - Object from which keys are extracted."}],"type":"function","functionTag":"compactKeys","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns an array of key values.","source":"* {Array} - Returns an array of key values.\n\t *"}},"compactMapAsyncObject":{"category":"object","description":"Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { compactMapAsyncObject, assert } from '@universalweb/acid'; assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => { return item; }), {a: 1, c: 3});","source":"import { compactMapAsyncObject, assert } from \"@universalweb/acid\";\nassert(\n await compactMapAsyncObject({ a: 1, b: undefined, c: 3 }, (item) => {\n return item;\n }),\n { a: 1, c: 3 },\n);\n"}],"name":"compactMapAsyncObject","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"results","type":"Object|Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object|Function} [results = {}] - Object that will be used to assign results.","default":"{}"}],"type":"function","functionTag":"compactMapAsyncObject","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"An object with mapped properties that are not null or undefined.","source":"* {Object|Function} - An object with mapped properties that are not null or undefined.\n\t *"}},"compactMapObject":{"category":"object","description":"Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { compactMapObject, assert } from '@universalweb/acid'; assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => { return item; }), {a: 1, c: 3});","source":"import { compactMapObject, assert } from \"@universalweb/acid\";\nassert(\n compactMapObject({ a: 1, b: undefined, c: 3 }, (item) => {\n return item;\n }),\n { a: 1, c: 3 },\n);\n"}],"name":"compactMapObject","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"results","type":"Object|Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object|Function} [results = {}] - Object that will be used to assign results.","default":"{}"}],"type":"function","functionTag":"compactMapObject","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"An object with mapped properties that are not null or undefined.","source":"* {Object|Function} - An object with mapped properties that are not null or undefined.\n\t *"}},"filterObject":{"category":"object","description":"Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"filterObject({a: false, b: true, c: true}, (item) => { return item; }); // => {b: true, c: true}","source":"filterObject({ a: false, b: true, c: true }, (item) => {\n return item;\n});\n// => {b: true, c: true}\n"}],"name":"filterObject","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"results","type":"Object|Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object|Function} [results = {}] - Object that will be used to assign results.","default":"{}"}],"type":"function","functionTag":"filterObject","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"An object with properties that passed the test.","source":"* {Object|Function} - An object with properties that passed the test.\n\t *"}},"filterAsyncObject":{"category":"object","description":"Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"filterAsyncObject({a: false, b: true, c: true}, (item) => { return item; }); // => {b: true, c: true}","source":"filterAsyncObject({ a: false, b: true, c: true }, (item) => {\n return item;\n});\n// => {b: true, c: true}\n"}],"name":"filterAsyncObject","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"results","type":"Object|Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object|Function} [results = {}] - Object that will be used to assign results.","default":"{}"}],"type":"function","functionTag":"filterAsyncObject","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"An object with properties that passed the test.","source":"* {Object|Function} - An object with properties that passed the test.\n\t *"}},"invert":{"category":"object","description":"Creates an inverted version of a given object by switching it's keys and values.","examples":[{"tag":"example","optional":false,"description":"import { invert, assert } from '@universalweb/acid'; assert(invert({a:1}), {1:'a'});","source":"import { invert, assert } from \"@universalweb/acid\";\nassert(invert({ a: 1 }), { 1: \"a\" });\n"}],"name":"invert","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Object to be inverted.","source":"* {Object} source - Object to be inverted."},{"tag":"param","name":"target","type":"Array","optional":true,"description":"- Empty object to be populated with inverted values from source.","source":"* {Array} [target = {}] - Empty object to be populated with inverted values from source.","default":"{}"}],"type":"function","functionTag":"invert","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns object with keys and values switched.","source":"* {Object} - Returns object with keys and values switched.\n\t *"}},"isMatchObject":{"category":"object","description":"Performs a shallow strict comparison between two objects.","examples":[{"tag":"example","optional":false,"description":"import { assert, isMatchObject } from '@universalweb/acid'; assert(isMatchObject({a: 1}, {a: 1}), true);","source":"import { assert, isMatchObject } from \"@universalweb/acid\";\nassert(isMatchObject({ a: 1 }, { a: 1 }), true);\n"}],"name":"isMatchObject","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Source object.","source":"* {Object} source - Source object."},{"tag":"param","name":"target","type":"Object","optional":false,"description":"- Object to compare to source.","source":"* {Object} target - Object to compare to source."}],"type":"function","functionTag":"isMatchObject","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isRegex":{"category":"type","description":"Checks if the value is a RegExp.","examples":[{"tag":"example","optional":false,"description":"import { isRegex, assert } from '@universalweb/acid'; assert(isRegex(/test/), true);","source":"import { isRegex, assert } from \"@universalweb/acid\";\nassert(isRegex(/test/), true);\n"}],"name":"isRegex","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isRegex","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"regexSafe":{"category":"regex","description":"Returns a regex safe special characters escaped version of a string.","examples":[{"tag":"example","optional":false,"description":"import { regexSafe, assert } from '@universalweb/acid'; assert(regexSafe(/.+/), '\\/\\.\\+\\/');","source":"import { regexSafe, assert } from \"@universalweb/acid\";\nassert(regexSafe(/.+/), \"/.+/\");\n"}],"name":"regexSafe","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- String to make safe.","source":"* {Object} source - String to make safe."}],"type":"function","functionTag":"regexSafe","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns a regex safe version of the string.","source":"* {Object} - Returns a regex safe version of the string.\n\t *"}},"arrayToRegex":{"category":"regex","description":"Convert array of strings to regex.","examples":[{"tag":"example","optional":false,"description":"import { arrayToRegex, assert } from '@universalweb/acid'; assert(String(arrayToRegex(['a','b'])), String(/a|b/));","source":"import { arrayToRegex, assert } from \"@universalweb/acid\";\nassert(String(arrayToRegex([\"a\", \"b\"])), String(/a|b/));\n"}],"name":"arrayToRegex","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Array of strings.","source":"* {Object} source - Array of strings."}],"type":"function","functionTag":"arrayToRegex","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns a regex safe version of the string.","source":"* {Object} - Returns a regex safe version of the string.\n\t *"}},"omit":{"category":"object","description":"Returns a clone of the given object without the given properties.","examples":[{"tag":"example","optional":false,"description":"import { omit, assert } from '@universalweb/acid'; assert(omit({a:1, b:2}, ['a']), {b:2}); assert(omit({a:1, b:2}, 'a'), {b:2}); assert(omit({1:'test', b:2}, 1), {b:2});","source":"import { omit, assert } from \"@universalweb/acid\";\nassert(omit({ a: 1, b: 2 }, [\"a\"]), { b: 2 });\nassert(omit({ a: 1, b: 2 }, \"a\"), { b: 2 });\nassert(omit({ 1: \"test\", b: 2 }, 1), { b: 2 });\n"}],"name":"omit","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Object from which keys are extracted.","source":"* {Object} source - Object from which keys are extracted."},{"tag":"param","name":"blacklist","type":"Array|RegExp|String","optional":false,"description":"- List of property keys to omit from the returned object.","source":"* {Array|RegExp|String} blacklist - List of property keys to omit from the returned object."}],"type":"function","functionTag":"omit","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"A new object with the removed.","source":"* {Object} - A new object with the removed.\n\t *"}},"pick":{"category":"object","description":"Returns a clone of the source object with the plucked properties.","examples":[{"tag":"example","optional":false,"description":"pick({a:1, b:2, c:3}, ['a','b']); // => {a:1, b:2}","source":"pick({ a: 1, b: 2, c: 3 }, [\"a\", \"b\"]);\n// => {a:1, b:2}\n"}],"name":"pick","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Object to be cloned.","source":"* {Object} source - Object to be cloned."},{"tag":"param","name":"whitelist","type":"Array","optional":false,"description":"- Array of property names used to determine what values to pluck.","source":"* {Array} whitelist - Array of property names used to determine what values to pluck."},{"tag":"param","name":"target","type":"Object","optional":true,"description":"- Object to be populated with plucked values.","source":"* {Object} [target = {}] - Object to be populated with plucked values.","default":"{}"}],"type":"function","functionTag":"pick","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"A new object with plucked properties.","source":"* {Object} - A new object with plucked properties.\n\t *"}},"objectSize":{"category":"object","description":"Returns the amount of keys on the object.","examples":[{"tag":"example","optional":false,"description":"objectSize({ 0: 'a', 1: 'b', 2: 'c' }); // => 3","source":"objectSize({ 0: \"a\", 1: \"b\", 2: \"c\" });\n// => 3\n"}],"name":"objectSize","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- The source object.","source":"* {Object} source - The source object."}],"type":"function","functionTag":"objectSize","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The amount of keys.","source":"* {Number} - The amount of keys.\n\t *"}},"zipObject":{"category":"object","description":"Creates an object from two arrays, one of property identifiers and one of corresponding values.","examples":[{"tag":"example","optional":false,"description":"zipObject(['a', 'b'], [1, 2]); // => { 'a': 1, 'b': 2 }","source":"zipObject([\"a\", \"b\"], [1, 2]);\n// => { 'a': 1, 'b': 2 }\n"}],"name":"zipObject","params":[{"tag":"param","name":"properties","type":"Array","optional":false,"description":"- The property identifiers.","source":"* {Array} properties - The property identifiers."},{"tag":"param","name":"values","type":"Array","optional":false,"description":"- The property values.","source":"* {Array} values - The property values."}],"type":"function","functionTag":"zipObject","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the new object.","source":"* {Object} - Returns the new object.\n\t *"}},"unZipObject":{"category":"object","description":"Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.","examples":[{"tag":"example","optional":false,"description":"unZipObject({ 'a': 1, 'b': 2 }); // => [['a', 'b'], [1, 2]]","source":"unZipObject({ a: 1, b: 2 });\n// => [['a', 'b'], [1, 2]]\n"}],"name":"unZipObject","params":[{"tag":"param","name":"object","type":"Object","optional":false,"description":"- The object to process.","source":"* {Object} object - The object to process."}],"type":"function","functionTag":"unZipObject","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns two arrays one of keys and the other of values inside a single array.","source":"* {Array} - Returns two arrays one of keys and the other of values inside a single array.\n\t *"}},"camelCase":{"category":"string","description":"Converts a string into Camel case format.","examples":[{"tag":"example","optional":false,"description":"import { camelCase, assert } from '@universalweb/acid'; assert(camelCase('camel case'), 'camelCase');","source":"import { camelCase, assert } from \"@universalweb/acid\";\nassert(camelCase(\"camel case\"), \"camelCase\");\n"}],"name":"camelCase","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- String to be converted into Camel case.","source":"* {String} source - String to be converted into Camel case."}],"type":"function","functionTag":"camelCase","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Converted string in Camel case.","source":"* {String} - Converted string in Camel case.\n\t *"}},"kebabCase":{"category":"string","description":"Converts a string into single space sepperated words in Kebab case.","examples":[{"tag":"example","optional":false,"description":"import { kebabCase, assert } from '@universalweb/acid'; assert(kebabCase('kebab case'), 'kebab-case');","source":"import { kebabCase, assert } from \"@universalweb/acid\";\nassert(kebabCase(\"kebab case\"), \"kebab-case\");\n"}],"name":"kebabCase","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- String to be converted into Kebab case.","source":"* {String} source - String to be converted into Kebab case."}],"type":"function","functionTag":"kebabCase","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Converted string in Kebab case.","source":"* {String} - Converted string in Kebab case.\n\t *"}},"snakeCase":{"category":"string","description":"Converts a string into single space sepperated words in snake case.","examples":[{"tag":"example","optional":false,"description":"import { snakeCase, assert } from '@universalweb/acid'; assert(snakeCase('snake case'), 'snake_case');","source":"import { snakeCase, assert } from \"@universalweb/acid\";\nassert(snakeCase(\"snake case\"), \"snake_case\");\n"}],"name":"snakeCase","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- String to be converted into snake case.","source":"* {String} source - String to be converted into snake case."}],"type":"function","functionTag":"snakeCase","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Converted string in Snake case.","source":"* {String} - Converted string in Snake case.\n\t *"}},"upperCase":{"category":"string","description":"Converts a string into single space sepperated words in uppercase.","examples":[{"tag":"example","optional":false,"description":"import { upperCase, assert } from '@universalweb/acid'; assert(upperCase('upper-case'), 'UPPER CASE'); assert(upperCase('upper_case'), 'UPPER CASE');","source":"import { upperCase, assert } from \"@universalweb/acid\";\nassert(upperCase(\"upper-case\"), \"UPPER CASE\");\nassert(upperCase(\"upper_case\"), \"UPPER CASE\");\n"}],"name":"upperCase","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- String to be converted into upper case.","source":"* {String} source - String to be converted into upper case."}],"type":"function","functionTag":"upperCase","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Converted string in upper case.","source":"* {String} - Converted string in upper case.\n\t *"}},"lowerCase":{"category":"string","description":"Converts a string into single space sepperated words in lowerCase.","examples":[{"tag":"example","optional":false,"description":"import { lowerCase, assert } from '@universalweb/acid'; assert(lowerCase('lower-CASE'), 'lower case');","source":"import { lowerCase, assert } from \"@universalweb/acid\";\nassert(lowerCase(\"lower-CASE\"), \"lower case\");\n"}],"name":"lowerCase","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- String to be converted into upper case.","source":"* {String} source - String to be converted into upper case."}],"type":"function","functionTag":"lowerCase","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Converted string in upper case.","source":"* {String} - Converted string in upper case.\n\t *"}},"insertInRange":{"category":"string","description":"Inserts text into a string at a given position.","examples":[{"tag":"example","optional":false,"description":"import { insertInRange, assert } from '@universalweb/acid'; assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');","source":"import { insertInRange, assert } from \"@universalweb/acid\";\nassert(insertInRange(\"A from Lucy.\", 1, \" tab\"), \"A tab from Lucy.\");\n"}],"name":"insertInRange","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to insert the text into.","source":"* {String} string - String to insert the text into."},{"tag":"param","name":"index","type":"Number","optional":false,"description":"- Point of insertion.","source":"* {Number} index - Point of insertion."},{"tag":"param","name":"text","type":"String","optional":false,"description":"- The string to be inserted.","source":"* {String} text - The string to be inserted."}],"type":"function","functionTag":"insertInRange","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"The string with the text inserted at the given point.","source":"* {String} - The string with the text inserted at the given point.\n\t *"}},"rightString":{"category":"string","description":"Plucks a letter using the index starting from the right.","examples":[{"tag":"example","optional":false,"description":"import { rightString, assert } from '@universalweb/acid'; assert(rightString('rightString'), 'g'); assert(rightString('rightString', 2), 'n');","source":"import { rightString, assert } from \"@universalweb/acid\";\nassert(rightString(\"rightString\"), \"g\");\nassert(rightString(\"rightString\", 2), \"n\");\n"}],"name":"rightString","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to extract the letter from.","source":"* {String} string - String to extract the letter from."},{"tag":"param","name":"index","type":"Number","optional":true,"description":"- The starting position.","source":"* {Number} [index=1] - The starting position.","default":"1"}],"type":"function","functionTag":"rightString","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"A letter at the given index.","source":"* {String} - A letter at the given index.\n\t *"}},"chunkString":{"category":"string","description":"Splits up a string into chunks.","examples":[{"tag":"example","optional":false,"description":"import { chunkString, assert } from '@universalweb/acid'; assert(chunkString('chunk', 2), ['ch', 'un', 'k']);","source":"import { chunkString, assert } from \"@universalweb/acid\";\nassert(chunkString(\"chunk\", 2), [\"ch\", \"un\", \"k\"]);\n"}],"name":"chunkString","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to chunked.","source":"* {String} string - String to chunked."},{"tag":"param","name":"size","type":"Number","optional":true,"description":"- The max string length per chunk.","source":"* {Number} [size] - The max string length per chunk."}],"type":"function","functionTag":"chunkString","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with strings that are <= size parameter.","source":"* {Array} - An array with strings that are <= size parameter.\n\t *"}},"initialString":{"category":"string","description":"Truncates everything before the index starting from the right.","examples":[{"tag":"example","optional":false,"description":"import { initialString, assert } from '@universalweb/acid'; assert(initialString('initialString', 2), 'initialStri');","source":"import { initialString, assert } from \"@universalweb/acid\";\nassert(initialString(\"initialString\", 2), \"initialStri\");\n"}],"name":"initialString","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to extract the initial letters from.","source":"* {String} string - String to extract the initial letters from."},{"tag":"param","name":"index","type":"Number","optional":true,"description":"- Starting point from the right.","source":"* {Number} [index=1] - Starting point from the right.","default":"1"}],"type":"function","functionTag":"initialString","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"A string with the characters before the index starting from the right.","source":"* {String} - A string with the characters before the index starting from the right.\n\t *"}},"restString":{"category":"string","description":"Truncates everything after a index.","examples":[{"tag":"example","optional":false,"description":"import { restString, assert } from '@universalweb/acid'; assert(restString('restString', 2), 'stString');","source":"import { restString, assert } from \"@universalweb/acid\";\nassert(restString(\"restString\", 2), \"stString\");\n"}],"name":"restString","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to extract the rest of the letters from.","source":"* {String} string - String to extract the rest of the letters from."},{"tag":"param","name":"index","type":"Number","optional":true,"description":"- Starting point.","source":"* {Number} [index=1] - Starting point.","default":"1"}],"type":"function","functionTag":"restString","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"A string without the characters up-to to the index.","source":"* {String} - A string without the characters up-to to the index.\n\t *"}},"replaceList":{"category":"string","description":"Replaces all occurrences of strings in an array with a value.","examples":[{"tag":"example","optional":false,"description":"import { replaceList, assert } from '@universalweb/acid'; assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');","source":"import { replaceList, assert } from \"@universalweb/acid\";\nassert(\n replaceList(\"user name was user.\", [\"user\"], \"this\"),\n \"this name was this.\",\n);\n"}],"name":"replaceList","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be replaced.","source":"* {String} string - String to be replaced."},{"tag":"param","name":"words","type":"Array","optional":false,"description":"- Strings to replace.","source":"* {Array} words - Strings to replace."},{"tag":"param","name":"value","type":"String","optional":false,"description":"- The match replacement.","source":"* {String} value - The match replacement."}],"type":"function","functionTag":"replaceList","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"The string with the replacement.","source":"* {String} - The string with the replacement.\n\t *"}},"truncate":{"category":"string","description":"Truncates the string, accounting for word placement and character count.","examples":[{"tag":"example","optional":false,"description":"import { truncate, assert } from '@universalweb/acid'; assert(truncate('Where is Lucy?', 2), 'Where is');","source":"import { truncate, assert } from \"@universalweb/acid\";\nassert(truncate(\"Where is Lucy?\", 2), \"Where is\");\n"}],"name":"truncate","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be truncated.","source":"* {String} string - String to be truncated."},{"tag":"param","name":"maxLength","type":"Number","optional":false,"description":"- The desired max length of the string.","source":"* {Number} maxLength - The desired max length of the string."}],"type":"function","functionTag":"truncate","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"The mutated string.","source":"* {String} - The mutated string.\n\t *"}},"truncateRight":{"category":"string","description":"Truncates the string, accounting for word placement and character count from the right.","examples":[{"tag":"example","optional":false,"description":"import { truncateRight, assert } from '@universalweb/acid'; assert(truncateRight('Where is Lucy?', 6), 'Lucy?');","source":"import { truncateRight, assert } from \"@universalweb/acid\";\nassert(truncateRight(\"Where is Lucy?\", 6), \"Lucy?\");\n"}],"name":"truncateRight","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be truncated.","source":"* {String} string - String to be truncated."},{"tag":"param","name":"maxLength","type":"Number","optional":false,"description":"- The desired max length of the string.","source":"* {Number} maxLength - The desired max length of the string."}],"type":"function","functionTag":"truncateRight","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"The mutated string.","source":"* {String} - The mutated string.\n\t *"}},"rawURLDecode":{"category":"string","description":"Raw URL decoder.","examples":[{"tag":"example","optional":false,"description":"import { rawURLDecode, assert } from '@universalweb/acid'; assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');","source":"import { rawURLDecode, assert } from \"@universalweb/acid\";\nassert(\n rawURLDecode(\"Lucy%20saw%20diamonds%20in%20the%20sky.\"),\n \"Lucy saw diamonds in the sky.\",\n);\n"}],"name":"rawURLDecode","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be replaced.","source":"* {String} string - String to be replaced."}],"type":"function","functionTag":"rawURLDecode","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Converted string into the decoded URI Component .","source":"* {String} - Converted string into the decoded URI Component .\n\t *"}},"htmlEntities":{"category":"string","description":"Replaced sensitive characters with their matching html entity.","examples":[{"tag":"example","optional":false,"description":"import { htmlEntities, assert } from '@universalweb/acid'; assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);","source":"import { htmlEntities, assert } from \"@universalweb/acid\";\nassert(\n htmlEntities(``),\n `<script>console.log('Lucy & diamonds.')</script>`,\n);\n"}],"name":"htmlEntities","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be replaced.","source":"* {String} string - String to be replaced."}],"type":"function","functionTag":"htmlEntities","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Replaced string.","source":"* {String} - Replaced string.\n\t *"}},"sanitize":{"category":"string","description":"Executes rawURLDecode followd by htmlEntities methods on a string.","examples":[{"tag":"example","optional":false,"description":"import { sanitize, assert } from '@universalweb/acid'; assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);","source":"import { sanitize, assert } from \"@universalweb/acid\";\nassert(\n sanitize(``),\n `<script>console.log('Lucy & diamonds.')</script>`,\n);\n"}],"name":"sanitize","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be replaced.","source":"* {String} string - String to be replaced."}],"type":"function","functionTag":"sanitize","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Replaced string.","source":"* {String} - Replaced string.\n\t *"}},"tokenize":{"category":"string","description":"Break string by non-white space characters matches.","examples":[{"tag":"example","optional":false,"description":"import { tokenize, assert } from '@universalweb/acid'; assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);","source":"import { tokenize, assert } from \"@universalweb/acid\";\nassert(tokenize(\"I am Lucy!\"), [\"I\", \"am\", \"Acid!\"]);\n"}],"name":"tokenize","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be broken up.","source":"* {String} string - String to be broken up."}],"type":"function","functionTag":"tokenize","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Array of words without white space characters.","source":"* {Array} - Array of words without white space characters.\n\t *"}},"words":{"description":"Break string into word matches.","examples":[{"tag":"example","optional":false,"description":"import { words, assert } from '@universalweb/acid'; assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);","source":"import { words, assert } from \"@universalweb/acid\";\nassert(words(\"I am Acid!\"), [\"I\", \"am\", \"Acid\"]);\n"}],"name":"words","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be broken up.","source":"* {String} string - String to be broken up."}],"type":"function","functionTag":"words","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Array of words with word characters only.","source":"* {Array} - Array of words with word characters only.\n\t *"}},"upperFirstLetter":{"category":"string","description":"Returns the first letter capitalized.","examples":[{"tag":"example","optional":false,"description":"import { upperFirstLetter, assert } from '@universalweb/acid'; assert(upperFirstLetter('upper'), 'U');","source":"import { upperFirstLetter, assert } from \"@universalweb/acid\";\nassert(upperFirstLetter(\"upper\"), \"U\");\n"}],"name":"upperFirstLetter","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to extract first letter from.","source":"* {String} string - String to extract first letter from."}],"type":"function","functionTag":"upperFirstLetter","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"An upper case letter.","source":"* {String} - An upper case letter.\n\t *"}},"upperFirst":{"category":"string","description":"Capitalizes the first letter.","examples":[{"tag":"example","optional":false,"description":"import { upperFirst, assert } from '@universalweb/acid'; assert(upperFirstLetter('upper'), 'U'); upperFirst('upper'); // => 'Upper'","source":"import { upperFirst, assert } from \"@universalweb/acid\";\nassert(upperFirstLetter(\"upper\"), \"U\");\nupperFirst(\"upper\");\n// => 'Upper'\n"}],"name":"upperFirst","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be mutated.","source":"* {String} string - String to be mutated."}],"type":"function","functionTag":"upperFirst","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"String with first letter capitalized.","source":"* {String} - String with first letter capitalized.\n\t *"}},"upperFirstOnly":{"category":"string","description":"Capitalize first letter and lower case the rest.","examples":[{"tag":"example","optional":false,"description":"import { upperFirstOnly, assert } from '@universalweb/acid'; assert(upperFirstOnly('upper'), 'Upper');","source":"import { upperFirstOnly, assert } from \"@universalweb/acid\";\nassert(upperFirstOnly(\"upper\"), \"Upper\");\n"}],"name":"upperFirstOnly","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be mutated.","source":"* {String} string - String to be mutated."}],"type":"function","functionTag":"upperFirstOnly","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"String with first letter capitalized.","source":"* {String} - String with first letter capitalized.\n\t *"}},"upperFirstAll":{"category":"string","description":"Capitalize all first letters.","examples":[{"tag":"example","optional":false,"description":"import { upperFirstAll, assert } from '@universalweb/acid'; assert(upperFirstAll('uPPer'), 'UPPer');","source":"import { upperFirstAll, assert } from \"@universalweb/acid\";\nassert(upperFirstAll(\"uPPer\"), \"UPPer\");\n"}],"name":"upperFirstAll","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be mutated.","source":"* {String} string - String to be mutated."}],"type":"function","functionTag":"upperFirstAll","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"String with all first letters capitalized.","source":"* {String} - String with all first letters capitalized.\n\t *"}},"upperFirstOnlyAll":{"category":"string","description":"Capitalize all first letters and lower case the rest.","examples":[{"tag":"example","optional":false,"description":"import { upperFirstOnlyAll, assert } from '@universalweb/acid'; assert(upperFirstOnlyAll('this is'), 'This Is');","source":"import { upperFirstOnlyAll, assert } from \"@universalweb/acid\";\nassert(upperFirstOnlyAll(\"this is\"), \"This Is\");\n"}],"name":"upperFirstOnlyAll","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be mutated.","source":"* {String} string - String to be mutated."}],"type":"function","functionTag":"upperFirstOnlyAll","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"String with all first letters capitalized.","source":"* {String} - String with all first letters capitalized.\n\t *"}},"getTypeName":{"category":"type","description":"Returns the constructor name of an object.","examples":[{"tag":"example","optional":false,"description":"import { getTypeName, assert } from '@universalweb/acid'; assert(getTypeName(1), true);","source":"import { getTypeName, assert } from \"@universalweb/acid\";\nassert(getTypeName(1), true);\n"}],"name":"getTypeName","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"getTypeName","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isArguments":{"category":"type","description":"Checks if the value is an Arguments object.","examples":[{"tag":"example","optional":false,"description":"import { isArguments, assert } from '@universalweb/acid'; assert(isArguments((function() { return arguments;})()), true); assert(isArguments([]), false);","source":"import { isArguments, assert } from \"@universalweb/acid\";\nassert(\n isArguments(\n (function () {\n return arguments;\n })(),\n ),\n true,\n);\nassert(isArguments([]), false);\n"}],"name":"isArguments","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isArguments","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"noValue":{"category":"type","description":"Checks if an object is null or undefined.","examples":[{"tag":"example","optional":false,"description":"import { noValue, assert } from '@universalweb/acid'; assert(noValue(null), true); assert(noValue(undefined), true); assert(noValue(1), false); assert(noValue(0), false);","source":"import { noValue, assert } from \"@universalweb/acid\";\nassert(noValue(null), true);\nassert(noValue(undefined), true);\nassert(noValue(1), false);\nassert(noValue(0), false);\n"}],"name":"noValue","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"noValue","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isMap":{"category":"type","description":"Checks if an object or objects are a Map.","examples":[{"tag":"example","optional":false,"description":"import { isMap } from '@universalweb/acid'; isMap(new Map()); // => true","source":"import { isMap } from \"@universalweb/acid\";\nisMap(new Map());\n// => true\n"}],"name":"isMap","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isMap","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isTypedArray":{"category":"type","description":"Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.","examples":[{"tag":"example","optional":false,"description":"import { isTypedArray, assert } from '@universalweb/acid'; assert(isTypedArray([]), false); assert(isTypedArray(new Int8Array()), true);","source":"import { isTypedArray, assert } from \"@universalweb/acid\";\nassert(isTypedArray([]), false);\nassert(isTypedArray(new Int8Array()), true);\n"}],"name":"isTypedArray","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isTypedArray","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isArrayLike":{"category":"type","description":"Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.","examples":[{"tag":"example","optional":false,"description":"import { isArrayLike, assert } from '@universalweb/acid'; assert(isArrayLike([]), true); assert(isArrayLike(2), false);","source":"import { isArrayLike, assert } from \"@universalweb/acid\";\nassert(isArrayLike([]), true);\nassert(isArrayLike(2), false);\n"}],"name":"isArrayLike","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."},{"tag":"param","name":"strictFlag","type":"*","optional":false,"description":"- Strict flag to also check to see if keys are whole intigers greater than or equal to 0.","source":"* {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0."}],"type":"function","functionTag":"isArrayLike","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isBigInt":{"category":"type","description":"Checks if an object or objects are a BigInt.","examples":[{"tag":"example","optional":false,"description":"import { isBigInt, assert } from '@universalweb/acid'; assert(isBigInt(BigInt(123)), true);","source":"import { isBigInt, assert } from \"@universalweb/acid\";\nassert(isBigInt(BigInt(123)), true);\n"}],"name":"isBigInt","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isBigInt","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isBoolean":{"category":"type","description":"Checks if the value is a Boolean.","examples":[{"tag":"example","optional":false,"description":"import { isBoolean } from '@universalweb/acid'; isBoolean(true); // => true","source":"import { isBoolean } from \"@universalweb/acid\";\nisBoolean(true);\n// => true\n"}],"name":"isBoolean","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isBoolean","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isArrayBuffer":{"category":"type","description":"Checks if an object or objects are a ArrayBuffer.","examples":[{"tag":"example","optional":false,"description":"import { isArrayBuffer, assert } from '@universalweb/acid'; assert(isArrayBuffer(new ArrayBuffer()), true);","source":"import { isArrayBuffer, assert } from \"@universalweb/acid\";\nassert(isArrayBuffer(new ArrayBuffer()), true);\n"}],"name":"isArrayBuffer","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isArrayBuffer","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isChild":{"category":"type","description":"Checks if an object is the child of another. Typically used for classes.","examples":[{"tag":"example","optional":false,"description":"import { isChild, construct, assert } from '@universalweb/acid'; class Grandparent{} class Parent extends Grandparent{} class Child extends Parent{} const child = construct(Child); assert(isChild(Child, Grandparent), true); assert(isChild(Child, Parent), false); assert(isChild(Parent, Grandparent), false); assert(isChild(child1, child3), false);","source":"import { isChild, construct, assert } from \"@universalweb/acid\";\nclass Grandparent {}\nclass Parent extends Grandparent {}\nclass Child extends Parent {}\nconst child = construct(Child);\nassert(isChild(Child, Grandparent), true);\nassert(isChild(Child, Parent), false);\nassert(isChild(Parent, Grandparent), false);\nassert(isChild(child1, child3), false);\n"}],"name":"isChild","params":[{"tag":"param","name":"sourceChild","type":"*","optional":false,"description":"- Object to be checked as the child.","source":"* {*} sourceChild - Object to be checked as the child."},{"tag":"param","name":"targetParent","type":"*","optional":false,"description":"- Object to be checked as the parent.","source":"* {*} targetParent - Object to be checked as the parent."}],"type":"function","functionTag":"isChild","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isCloneable":{"category":"type","description":"Checks if an object or objects are a structured-cloneable type.","examples":[{"tag":"example","optional":false,"description":"import { isCloneable, assert } from '@universalweb/acid'; assert(isCloneable(function (){}), false);","source":"import { isCloneable, assert } from \"@universalweb/acid\";\nassert(\n isCloneable(function () {}),\n false,\n);\n"}],"name":"isCloneable","params":[{"tag":"param","name":"source","type":"...*","optional":false,"description":"- Object to be checked.","source":"* {...*} source - Object to be checked."}],"type":"function","functionTag":"isCloneable","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isDate":{"category":"type","description":"Checks if the value is a Date.","examples":[{"tag":"example","optional":false,"description":"import { isDate, assert } from '@universalweb/acid'; assert(isDate(new Date()), true);","source":"import { isDate, assert } from \"@universalweb/acid\";\nassert(isDate(new Date()), true);\n"}],"name":"isDate","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isDate","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isEmpty":{"category":"type","description":"Checks if the value is empty.","examples":[{"tag":"example","optional":false,"description":"import { isEmpty, assert } from '@universalweb/acid'; assert(isEmpty([]), true);","source":"import { isEmpty, assert } from \"@universalweb/acid\";\nassert(isEmpty([]), true);\n"}],"name":"isEmpty","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isEmpty","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isFalse":{"category":"utility","description":"Check if a value equals false using strict comparison.","examples":[{"tag":"example","optional":false,"description":"import { isFalse, assert } from '@universalweb/acid'; assert(isFalse(1), false); assert(isFalse(true), false); assert(isFalse(false), true);","source":"import { isFalse, assert } from \"@universalweb/acid\";\nassert(isFalse(1), false);\nassert(isFalse(true), false);\nassert(isFalse(false), true);\n"}],"name":"isFalse","params":[{"tag":"param","name":"source","type":"Boolean","optional":false,"description":"- Item to compare.","source":"* {Boolean} source - Item to compare."}],"type":"function","functionTag":"isFalse","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if the item equals false.","source":"* {Boolean} - Returns true if the item equals false.\n\t *"}},"isF32":{"category":"type","description":"Checks if an object or objects are a Float32Array.","examples":[{"tag":"example","optional":false,"description":"import { isF32, assert } from '@universalweb/acid'; assert(isF32(new Float32Array()), true);","source":"import { isF32, assert } from \"@universalweb/acid\";\nassert(isF32(new Float32Array()), true);\n"}],"name":"isF32","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isF32","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isF64":{"category":"type","description":"Checks if an object or objects are a Float64Array.","examples":[{"tag":"example","optional":false,"description":"import { isF64 } from '@universalweb/acid'; isF64(new Float64Array()); // => true","source":"import { isF64 } from \"@universalweb/acid\";\nisF64(new Float64Array());\n// => true\n"}],"name":"isF64","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isF64","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isFloat":{"category":"type","description":"Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.","examples":[{"tag":"example","optional":false,"description":"import { isFloat } from '@universalweb/acid'; isFloat(1.01); // => true","source":"import { isFloat } from \"@universalweb/acid\";\nisFloat(1.01);\n// => true\n"}],"name":"isFloat","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isFloat","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isI16":{"category":"type","description":"Checks if an object or objects are a Int16Array.","examples":[{"tag":"example","optional":false,"description":"import { isI16 } from '@universalweb/acid'; isI16(new Int16Array()); // => true","source":"import { isI16 } from \"@universalweb/acid\";\nisI16(new Int16Array());\n// => true\n"}],"name":"isI16","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isI16","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isI32":{"category":"type","description":"Checks if an object or objects are a Int32Array.","name":"isI32","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isI32","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false. import { isI32, assert } from '@universalweb/acid'; assert(isI32(new Int32Array()), true);.","source":"* {Boolean} - Returns true or false.\n\t *\n\t * import { isI32, assert } from '@universalweb/acid';\n\t * assert(isI32(new Int32Array()), true);.\n\t */"}},"isI8":{"category":"type","description":"Checks if an object or objects are a Int8Array.","examples":[{"tag":"example","optional":false,"description":"import { isInt8 } from '@universalweb/acid'; isInt8(new Int8Array()); // => true","source":"import { isInt8 } from \"@universalweb/acid\";\nisInt8(new Int8Array());\n// => true\n"}],"name":"isI8","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isI8","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isIterable":{"category":"type","description":"Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.","examples":[{"tag":"example","optional":false,"description":"import { isIterable, assert } from '@universalweb/acid'; assert(isIterable([]), true); assert(isIterable(new Int8Array()), true); assert(isIterable('test'), false);","source":"import { isIterable, assert } from \"@universalweb/acid\";\nassert(isIterable([]), true);\nassert(isIterable(new Int8Array()), true);\nassert(isIterable(\"test\"), false);\n"}],"name":"isIterable","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isIterable","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isPromise":{"category":"type","description":"Checks if an object is a promise.","examples":[{"tag":"example","optional":false,"description":"import { isPromise } from '@universalweb/acid'; isPromise(new Promise(() => {})); // => true","source":"import { isPromise } from \"@universalweb/acid\";\nisPromise(new Promise(() => {}));\n// => true\n"}],"name":"isPromise","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isPromise","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"True or false.","source":"* {Boolean} - True or false.\n\t *"}},"isKindAsync":{"category":"type","description":"Checks if an object is a kind of async object such as async function, promise, or generator.","examples":[{"tag":"example","optional":false,"description":"import { isKindAsync, assert } from '@universalweb/acid'; assert(isKindAsync(async() => {}), true);","source":"import { isKindAsync, assert } from \"@universalweb/acid\";\nassert(\n isKindAsync(async () => {}),\n true,\n);\n"}],"name":"isKindAsync","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isKindAsync","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"True or false.","source":"* {Boolean} - True or false.\n\t *"}},"isParent":{"category":"type","description":"Checks if an object is the child of another. Typically used for classes.","examples":[{"tag":"example","optional":false,"description":"import { isParent, construct, assert } from '@universalweb/acid'; class parentClass{} class otherClass{} const child1 = construct(parentClass); const child2 = construct(otherClass); assert(isParent(child1, parentClass), true); assert(isParent(child3, parentClass), false); assert(isParent(parentClass, child1), false); assert(isParent(child1, child3), false);","source":"import { isParent, construct, assert } from \"@universalweb/acid\";\nclass parentClass {}\nclass otherClass {}\nconst child1 = construct(parentClass);\nconst child2 = construct(otherClass);\nassert(isParent(child1, parentClass), true);\nassert(isParent(child3, parentClass), false);\nassert(isParent(parentClass, child1), false);\nassert(isParent(child1, child3), false);\n"}],"name":"isParent","params":[{"tag":"param","name":"sourceParent","type":"*","optional":false,"description":"- Object to be checked as the child.","source":"* {*} sourceParent - Object to be checked as the child."},{"tag":"param","name":"targetChild","type":"*","optional":false,"description":"- Object to be checked as the parent.","source":"* {*} targetChild - Object to be checked as the parent."}],"type":"function","functionTag":"isParent","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isPrimitive":{"category":"type","description":"Checks if an object is a primitive.","examples":[{"tag":"example","optional":false,"description":"import { isPrimitive, assert } from '@universalweb/acid'; assert(isPrimitive(1), true); assert(isPrimitive(() => {}), false);","source":"import { isPrimitive, assert } from \"@universalweb/acid\";\nassert(isPrimitive(1), true);\nassert(\n isPrimitive(() => {}),\n false,\n);\n"}],"name":"isPrimitive","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isPrimitive","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"True or false.","source":"* {Boolean} - True or false.\n\t *"}},"isRelated":{"category":"type","description":"Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.","examples":[{"tag":"example","optional":false,"description":"import { isRelated, construct, assert } from '@universalweb/acid'; class parentClass{} class otherClass{} const child1 = construct(parentClass); const child2 = construct(parentClass); const child3 = construct(otherClass); assert(isRelated(child1, child2), true); assert(isRelated(child1, parentClass), true); assert(isRelated(parentClass, child2), true); assert(isRelated(child1, child3), false);","source":"import { isRelated, construct, assert } from \"@universalweb/acid\";\nclass parentClass {}\nclass otherClass {}\nconst child1 = construct(parentClass);\nconst child2 = construct(parentClass);\nconst child3 = construct(otherClass);\nassert(isRelated(child1, child2), true);\nassert(isRelated(child1, parentClass), true);\nassert(isRelated(parentClass, child2), true);\nassert(isRelated(child1, child3), false);\n"}],"name":"isRelated","params":[{"tag":"param","name":"targetOne","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} targetOne - Object to be checked."},{"tag":"param","name":"targetTwo","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} targetTwo - Object to be checked."}],"type":"function","functionTag":"isRelated","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isSafeInt":{"category":"type","description":"Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.","examples":[{"tag":"example","optional":false,"description":"import { isSafeInt } from '@universalweb/acid'; isSafeInt(1.01); // => true","source":"import { isSafeInt } from \"@universalweb/acid\";\nisSafeInt(1.01);\n// => true\n"}],"name":"isSafeInt","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isSafeInt","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isTrue":{"category":"utility","description":"Check if a value equals true using strict comparison.","examples":[{"tag":"example","optional":false,"description":"import { isTrue, assert } from '@universalweb/acid'; assert(isTrue(1), false); assert(isTrue(true), true); assert(isTrue(false), false);","source":"import { isTrue, assert } from \"@universalweb/acid\";\nassert(isTrue(1), false);\nassert(isTrue(true), true);\nassert(isTrue(false), false);\n"}],"name":"isTrue","params":[{"tag":"param","name":"source","type":"Boolean","optional":false,"description":"- Item to check.","source":"* {Boolean} source - Item to check."}],"type":"function","functionTag":"isTrue","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if the item is true.","source":"* {Boolean} - Returns true if the item is true.\n\t *"}},"isU16":{"category":"type","description":"Checks if an object or objects are a Uint16Array.","examples":[{"tag":"example","optional":false,"description":"import { isU16 } from '@universalweb/acid'; isU16(new Uint16Array()); // => true","source":"import { isU16 } from \"@universalweb/acid\";\nisU16(new Uint16Array());\n// => true\n"}],"name":"isU16","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isU16","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isU32":{"category":"type","description":"Checks if an object or objects are a Uint32Array.","examples":[{"tag":"example","optional":false,"description":"import { isU32 } from '@universalweb/acid'; isU32(new Uint32Array()); // => true","source":"import { isU32 } from \"@universalweb/acid\";\nisU32(new Uint32Array());\n// => true\n"}],"name":"isU32","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isU32","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isU8":{"category":"type","description":"Checks if an object or objects are a Uint8Array.","examples":[{"tag":"example","optional":false,"description":"import { isU8 } from '@universalweb/acid'; isU8(new Uint8Array()); // => true","source":"import { isU8 } from \"@universalweb/acid\";\nisU8(new Uint8Array());\n// => true\n"}],"name":"isU8","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isU8","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isU8C":{"category":"type","description":"Checks if an object or objects are a Uint8ClampedArray.","examples":[{"tag":"example","optional":false,"description":"import { isU8C } from '@universalweb/acid'; isU8C(new Uint8ClampedArray()); // => true","source":"import { isU8C } from \"@universalweb/acid\";\nisU8C(new Uint8ClampedArray());\n// => true\n"}],"name":"isU8C","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isU8C","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isWeakMap":{"category":"type","description":"Checks if an object or objects are a WeakMap.","examples":[{"tag":"example","optional":false,"description":"import { isWeakMap } from '@universalweb/acid'; assert(isWeakMap(new WeakMap()), true);","source":"import { isWeakMap } from \"@universalweb/acid\";\nassert(isWeakMap(new WeakMap()), true);\n"}],"name":"isWeakMap","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isWeakMap","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isTruthy":{"category":"type","description":"Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.","examples":[{"tag":"example","optional":false,"description":"import { isTruthy, assert } from '@universalweb/acid'; assert(isTruthy(1), true); assert(isTruthy(0), false);","source":"import { isTruthy, assert } from \"@universalweb/acid\";\nassert(isTruthy(1), true);\nassert(isTruthy(0), false);\n"}],"name":"isTruthy","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Item to be isTruthy checked.","source":"* {*} source - Item to be isTruthy checked."},{"tag":"param","name":"returnIfTrue","type":"*","optional":true,"description":"- Item to be returned if item is isTruthy.","source":"* {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.","default":"true"}],"type":"function","functionTag":"isTruthy","returns":{"tag":"returns","name":"-","type":"Boolean|*","optional":false,"description":"Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.","source":"* {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n\t *"}},"isFalsy":{"category":"type","description":"Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.","examples":[{"tag":"example","optional":false,"description":"import { isFalsy, assert } from '@universalweb/acid'; assert(isFalsy(0), true); assert(isFalsy(1), false);","source":"import { isFalsy, assert } from \"@universalweb/acid\";\nassert(isFalsy(0), true);\nassert(isFalsy(1), false);\n"}],"name":"isFalsy","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Item to be isFalsy checked.","source":"* {*} source - Item to be isFalsy checked."},{"tag":"param","name":"returnIfTrue","type":"*","optional":true,"description":"- Item to be returned if item is isFalsy.","source":"* {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.","default":"true"}],"type":"function","functionTag":"isFalsy","returns":{"tag":"returns","name":"-","type":"Boolean|*","optional":false,"description":"Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.","source":"* {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n\t *"}},"ifValue":{"category":"utility","description":"If source has a value then assign it to an object or call a function.","examples":[{"tag":"example","optional":false,"description":"import { ifValue, assert } from '@universalweb/acid'; assert(ifValue(1, {}, 'a'), {a:1});","source":"import { ifValue, assert } from \"@universalweb/acid\";\nassert(ifValue(1, {}, \"a\"), { a: 1 });\n"}],"name":"ifValue","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- The source object to be hasValue checked.","source":"* {*} source - The source object to be hasValue checked."},{"tag":"param","name":"target","type":"Function|Object","optional":false,"description":"- The target which is either a function or object.","source":"* {Function|Object} target - The target which is either a function or object."},{"tag":"param","name":"optional","type":"*|String","optional":false,"description":"- If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).","source":"* {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target)."},{"tag":"param","name":"args","type":"Array","optional":false,"description":"- The args that would be used if the target is a function and is the params that is applied to the function.","source":"* {Array} args - The args that would be used if the target is a function and is the params that is applied to the function."}],"type":"function","functionTag":"ifValue","returns":{"tag":"returns","name":"The","type":"source","optional":false,"description":"source object if it passes the hasValue check.","source":"* {source} The source object if it passes the hasValue check.\n\t *"}},"notEqual":{"category":"utility","description":"Performs a deep comparison between two objects & determines if they're different using strict comparison.","examples":[{"tag":"example","optional":false,"description":"import { notEqual, assert } from '@universalweb/acid'; assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);","source":"import { notEqual, assert } from \"@universalweb/acid\";\nassert(notEqual({ a: [1, 2, 3] }, { a: [1, 3, 3] }), true);\n"}],"name":"notEqual","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Source object.","source":"* {*} source - Source object."},{"tag":"param","name":"target","type":"*","optional":false,"description":"- Object to be compared.","source":"* {*} target - Object to be compared."}],"type":"function","functionTag":"notEqual","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"jsonParse":{"category":"utility","description":"Parses JSON string with safety check for undefined.","examples":[{"tag":"example","optional":false,"description":"import { jsonParse, assert } from '@universalweb/acid'; assert(jsonParse('{a:1}'), {a:1});","source":"import { jsonParse, assert } from \"@universalweb/acid\";\nassert(jsonParse(\"{a:1}\"), { a: 1 });\n"}],"name":"jsonParse","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- String to be parsed.","source":"* {String} source - String to be parsed."},{"tag":"param","name":"reviver","type":"Function","optional":false,"description":"- A function that prescribes how each value originally produced by parsing is transformed before being returned.","source":"* {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned."}],"type":"function","functionTag":"jsonParse","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the parsed object.","source":"* {Object} - Returns the parsed object.\n\t *"}},"stringify":{"category":"utility","description":"Stringify an object into a JSON string.","examples":[{"tag":"example","optional":false,"description":"import { stringify, assert } from '@universalweb/acid'; assert(stringify({a:1}), '{a:1}');","source":"import { stringify, assert } from \"@universalweb/acid\";\nassert(stringify({ a: 1 }), \"{a:1}\");\n"}],"name":"stringify","params":[{"tag":"param","name":"object","type":"Object","optional":false,"description":"- Object to Stringify.","source":"* {Object} object - Object to Stringify."}],"type":"function","functionTag":"stringify","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Returns the object as a valid JSON string.","source":"* {String} - Returns the object as a valid JSON string.\n\t *"}},"assert":{"category":"utility","description":"Check if source value matches the expected value.","examples":[{"tag":"example","optional":false,"description":"import { assert } from '@universalweb/acid'; if (!assert(1,1)) { new Error('Assert Method Failed'); }","source":"import { assert } from \"@universalweb/acid\";\nif (!assert(1, 1)) {\n new Error(\"Assert Method Failed\");\n}\n"}],"name":"assert","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- The source object to compare to.","source":"* {*} source - The source object to compare to."},{"tag":"param","name":"expected","type":"*","optional":false,"description":"- The expected result that's compared to the source.","source":"* {*} expected - The expected result that's compared to the source."},{"tag":"param","name":"options","type":"*","optional":false,"description":"- Additional options for the Error instance & unit test information.","source":"* {*} options - Additional options for the Error instance & unit test information."}],"type":"function","functionTag":"assert","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns a deep clone of an object.","source":"* {Object} - Returns a deep clone of an object.\n\t *"}},"bindAll":{"category":"utility","description":"Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.","examples":[{"tag":"example","optional":false,"description":"import { assert, bindAll } from '@universalweb/acid'; const bounded = bindAll([function () { return this;}], 'Bounded'); assert(bounded[0](), 'Bounded');","source":"import { assert, bindAll } from \"@universalweb/acid\";\nconst bounded = bindAll(\n [\n function () {\n return this;\n },\n ],\n \"Bounded\",\n);\nassert(bounded[0](), \"Bounded\");\n"}],"name":"bindAll","params":[{"tag":"param","name":"collection","type":"Object|Function|Array","optional":false,"description":"- The functions to bind.","source":"* {Object|Function|Array} collection - The functions to bind."},{"tag":"param","name":"bindThis","type":"*","optional":false,"description":"- Object to be bound to functions.","source":"* {*} bindThis - Object to be bound to functions."},{"tag":"param","name":"targetAssign","type":"Object|Function|Array","optional":false,"description":"- Object to assign newly bound functions to.","source":"* {Object|Function|Array} targetAssign - Object to assign newly bound functions to."}],"type":"function","functionTag":"bindAll","returns":{"tag":"returns","name":"-","type":"Object|Function|Array","optional":false,"description":"Returns the collection of bound functions or the assign target provided.","source":"* {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n\t *"}},"clear":{"category":"utility","description":"Clears the values out of an array, buffer, and objects like Map that have a clear method.","examples":[{"tag":"example","optional":false,"description":"import { clear, assert } from '@universalweb/acid'; assert(clear(Buffer.from([1,'B', 'Cat'])), []);","source":"import { clear, assert } from \"@universalweb/acid\";\nassert(clear(Buffer.from([1, \"B\", \"Cat\"])), []);\n"}],"name":"clear","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Takes an array to be emptied.","source":"* {Array} source - Takes an array to be emptied."}],"type":"function","functionTag":"clear","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"clone":{"category":"utility","description":"Creates a structured clone of an object which is a \"structured-cloneable type\".","examples":[{"tag":"example","optional":false,"description":"import { clone, assert } from '@universalweb/acid'; assert(clone({a:{b:[2]}}), {a:{b:[2]}});","source":"import { clone, assert } from \"@universalweb/acid\";\nassert(clone({ a: { b: [2] } }), { a: { b: [2] } });\n"}],"name":"clone","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Any structured-cloneable type object.","source":"* {Object} source - Any structured-cloneable type object."}],"type":"function","functionTag":"clone","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns a deep clone of an object.","source":"* {Object} - Returns a deep clone of an object.\n\t *"}},"compact":{"category":"utility","description":"Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.","examples":[{"tag":"example","optional":false,"description":"import { compact, assert } from '@universalweb/acid'; assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);","source":"import { compact, assert } from \"@universalweb/acid\";\nassert(compact([1, \"B\", \"Cat\", false, null, 0, \"\", undefined, NaN]), [\n 1,\n \"B\",\n \"Cat\",\n]);\n"}],"name":"compact","params":[{"tag":"param","name":"source","type":"Array|Object","optional":false,"description":"- Array or Object to be compacted.","source":"* {Array|Object} source - Array or Object to be compacted."}],"type":"function","functionTag":"compact","returns":{"tag":"returns","name":"-","type":"Array|Object","optional":false,"description":"A new object or array containing the filtered values.","source":"* {Array|Object} - A new object or array containing the filtered values.\n\t *"}},"compactMap":{"category":"utility","description":"Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { compactMap, assert } from '@universalweb/acid'; assert(compactMap({a: null, b: 2, c: 3}, (item) => { return item; }), {b: 2, c: 3});","source":"import { compactMap, assert } from \"@universalweb/acid\";\nassert(\n compactMap({ a: null, b: 2, c: 3 }, (item) => {\n return item;\n }),\n { b: 2, c: 3 },\n);\n"}],"name":"compactMap","params":[{"tag":"param","name":"source","type":"Array | object | Function","optional":false,"description":"- Object that will be looped through.","source":"* {Array | object | Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type."},{"tag":"param","name":"results","type":"Object | Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object | Function} [results = {}] - Object that will be used to assign results.","default":"{}"}],"type":"function","functionTag":"compactMap","returns":{"tag":"returns","name":"-","type":"Array | object | Function","optional":false,"description":"A new object of the same calling object's type.","source":"* {Array | object | Function} - A new object of the same calling object's type.\n\t *"}},"forOfFilter":{"category":"utility","description":"Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"import { assert, forOfFilter } from '@universalweb/acid'; const source = {a: undefined, b: 2, c: 3}; const temp = forOfFilter(source, (item) => { return Boolean(item); }); assert(temp, {b: 2, c: 3});","source":"import { assert, forOfFilter } from \"@universalweb/acid\";\nconst source = { a: undefined, b: 2, c: 3 };\nconst temp = forOfFilter(source, (item) => {\n return Boolean(item);\n});\nassert(temp, { b: 2, c: 3 });\n"}],"name":"forOfFilter","params":[{"tag":"param","name":"source","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function|Class|Map|Set|Array} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"resultsObject","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be used to assign results else source is type cloned.","source":"* {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned."}],"type":"function","functionTag":"forOfFilter","returns":{"tag":"returns","name":"-","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"An object with mapped properties.","source":"* {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n\t *"}},"forOfFilterAsync":{"category":"utility","description":"Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"import { assert, forOfFilterAsync } from '@universalweb/acid'; const source = {a: undefined, b: 2, c: 3}; const temp = forOfFilterAsync(source, (item) => { return Boolean(item); }); assert(temp, {b: 2, c: 3});","source":"import { assert, forOfFilterAsync } from \"@universalweb/acid\";\nconst source = { a: undefined, b: 2, c: 3 };\nconst temp = forOfFilterAsync(source, (item) => {\n return Boolean(item);\n});\nassert(temp, { b: 2, c: 3 });\n"}],"name":"forOfFilterAsync","params":[{"tag":"param","name":"source","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function|Class|Map|Set|Array} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"resultsObject","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be used to assign results else source is type cloned.","source":"* {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned."}],"type":"function","functionTag":"forOfFilterAsync","returns":{"tag":"returns","name":"-","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"An object with mapped properties.","source":"* {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n\t *"}},"filter":{"category":"utility","description":"Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"import { filter, assert } from '@universalweb/acid'; assert(filter({a: false, b: true, c: true}, (item) => { return item; }), {b: true, c: true});","source":"import { filter, assert } from \"@universalweb/acid\";\nassert(\n filter({ a: false, b: true, c: true }, (item) => {\n return item;\n }),\n { b: true, c: true },\n);\n"}],"name":"filter","params":[{"tag":"param","name":"source","type":"Array | object | Function","optional":false,"description":"- Object that will be looped through.","source":"* {Array | object | Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type."},{"tag":"param","name":"results","type":"Object | Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object | Function} [results = {}] - Object that will be used to assign results.","default":"{}"}],"type":"function","functionTag":"filter","returns":{"tag":"returns","name":"-","type":"Array | object | Function","optional":false,"description":"A new object of the same calling object's type.","source":"* {Array | object | Function} - A new object of the same calling object's type.\n\t *"}},"flow":{"category":"utility","description":"Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.","examples":[{"tag":"example","optional":false,"description":"flow(increment, increment, deduct)(0); // => 1","source":"flow(increment, increment, deduct)(0);\n// => 1\n"}],"name":"flow","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Methods to invoke.","source":"* {Array} collection - Methods to invoke."}],"type":"function","functionTag":"flow","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new composite function.","source":"* {Function} - Returns the new composite function.\n\t *"}},"flowRight":{"category":"utility","description":"This method is like flow except that it creates a function that invokes the given functions from right to left.","examples":[{"tag":"example","optional":false,"description":"flowRight(increment, increment, deduct)(0); // => 1","source":"flowRight(increment, increment, deduct)(0);\n// => 1\n"}],"name":"flowRight","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Methods to invoke.","source":"* {Array} collection - Methods to invoke."}],"type":"function","functionTag":"flowRight","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new composite function.","source":"* {Function} - Returns the new composite function.\n\t *"}},"flowAsync":{"category":"utility","description":"Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.","examples":[{"tag":"example","optional":false,"description":"flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0); // => 2","source":"flowAsync(\n async (item) => {\n return increment(item);\n },\n async (item) => {\n return increment(item);\n },\n)(0);\n// => 2\n"}],"name":"flowAsync","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Methods to invoke.","source":"* {Array} collection - Methods to invoke."}],"type":"function","isAsync":true,"functionTag":"flowAsync","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new composite function.","source":"* {Function} - Returns the new composite function.\n\t *"}},"flowAsyncRight":{"category":"utility","description":"This method is like flow except that it creates a function that invokes the given functions from right to left.","examples":[{"tag":"example","optional":false,"description":"flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0); // => 2","source":"flowAsyncRight(\n async (item) => {\n return increment(item);\n },\n async (item) => {\n return increment(item);\n },\n)(0);\n// => 2\n"}],"name":"flowAsyncRight","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Methods to invoke.","source":"* {Array} collection - Methods to invoke."}],"type":"function","isAsync":true,"functionTag":"flowAsyncRight","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new composite function.","source":"* {Function} - Returns the new composite function.\n\t *"}},"arraysToObject":{"category":"utility","description":"Takes all but the last item in the array.","examples":[{"tag":"example","optional":false,"description":"import { arraysToObject, assert } from '@universalweb/acid'; assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});","source":"import { arraysToObject, assert } from \"@universalweb/acid\";\nassert(arraysToObject([1, 2, 3], [\"a\", \"b\", \"c\"]), { a: 1, b: 2, c: 3 });\n"}],"name":"arraysToObject","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array to have items extracted from.","source":"* {Array} source - Array to have items extracted from."},{"tag":"param","name":"properties","type":"Array","optional":false,"description":"- Array to have items extracted from.","source":"* {Array} properties - Array to have items extracted from."}],"type":"function","functionTag":"arraysToObject","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns a completely flattened array.","source":"* {Array} - Returns a completely flattened array.\n\t *"}},"has":{"category":"utility","description":"Checks if an object contains something.","examples":[{"tag":"example","optional":false,"description":"import { has, assert } from '@universalweb/acid'; assert(has('Hello World', 'Hello'), true); assert(has(['Hello', 'World'], 'hello'), true);","source":"import { has, assert } from \"@universalweb/acid\";\nassert(has(\"Hello World\", \"Hello\"), true);\nassert(has([\"Hello\", \"World\"], \"hello\"), true);\n"}],"name":"has","params":[{"tag":"param","name":"source","type":"Array|String|Object","optional":false,"description":"- Object to be checked.","source":"* {Array|String|Object} source - Object to be checked."},{"tag":"param","name":"search","type":"String|Array|Function|RegExp","optional":false,"description":"- Object that is being searched for.","source":"* {String|Array|Function|RegExp} search - Object that is being searched for."},{"tag":"param","name":"fromIndex","type":"Number","optional":false,"description":"- Index at which to start searching.","source":"* {Number} fromIndex - Index at which to start searching."}],"type":"function","functionTag":"has","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"hasDot":{"category":"utility","description":"Checks if the string has a '.'.","examples":[{"tag":"example","optional":false,"description":"import { hasDot, assert } from '@universalweb/acid'; assert(hasDot('test.js'), true);","source":"import { hasDot, assert } from \"@universalweb/acid\";\nassert(hasDot(\"test.js\"), true);\n"}],"name":"hasDot","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"hasDot","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"ifNotAssign":{"category":"utility","description":"Checks if a property on an object has a value. If not, it will assign a value.","examples":[{"tag":"example","optional":false,"description":"import { ifNotAssign, assert } from '@universalweb/acid'; assert(ifNotAssign({}, 'a', 1), {a:1});","source":"import { ifNotAssign, assert } from \"@universalweb/acid\";\nassert(ifNotAssign({}, \"a\", 1), { a: 1 });\n"}],"name":"ifNotAssign","params":[{"tag":"param","name":"rootObject","type":"Object","optional":false,"description":"- The object to check.","source":"* {Object} rootObject - The object to check."},{"tag":"param","name":"property","type":"String","optional":false,"description":"- The property name which is to be checked.","source":"* {String} property - The property name which is to be checked."},{"tag":"param","name":"equalThis","type":"*","optional":false,"description":"- The reassignment value for the property being checked.","source":"* {*} equalThis - The reassignment value for the property being checked."}],"type":"function","functionTag":"ifNotAssign","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the provided rootObject.","source":"* {Object} - Returns the provided rootObject.\n\t *"}},"interval":{"category":"function","description":"Create an interval timer.","examples":[{"tag":"example","optional":false,"description":"interval(() => {}, 100); // => 0","source":"interval(() => {}, 100);\n// => 0\n"}],"name":"interval","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be invoked.","source":"* {Function} callable - The function to be invoked."},{"tag":"param","name":"time","type":"Number","optional":false,"description":"- The time in milliseconds.","source":"* {Number} time - The time in milliseconds."}],"type":"function","functionTag":"interval","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns setInterval ID.","source":"* {Object} - Returns setInterval ID.\n\t *"}},"clearIntervals":{"category":"function","description":"Clear all active interval timers.","examples":[{"tag":"example","optional":false,"description":"clearIntervals(); // => undefined","source":"clearIntervals();\n// => undefined\n"}],"name":"clearIntervals","type":"function","functionTag":"clearIntervals","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined.\n\t *"}},"model":{"category":"utility","description":"Set & Get a model.","examples":[{"tag":"example","optional":false,"description":"model('test', {a: 1}) && model('test'); // => {a: 1}","source":"model(\"test\", { a: 1 }) && model(\"test\");\n// => {a: 1}\n"}],"name":"model","params":[{"tag":"param","name":"modelName","type":"String","optional":false,"description":"- Name of the model.","source":"* {String} modelName - Name of the model."},{"tag":"param","name":"modelValue","type":"Object","optional":false,"description":"- The model object.","source":"* {Object} modelValue - The model object."}],"type":"function","functionTag":"model","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns the associated model.","source":"* {*} - Returns the associated model."}},"pair":{"category":"utility","description":"Takes the first two arguments given and returns them inside a new array.","examples":[{"tag":"example","optional":false,"description":"import { pair, assert } from '@universalweb/acid'; assert(air(1, 2), [1, 2]);","source":"import { pair, assert } from \"@universalweb/acid\";\nassert(air(1, 2), [1, 2]);\n"}],"name":"pair","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- The source object.","source":"* {*} source - The source object."},{"tag":"param","name":"source","type":"*","optional":false,"description":"- The source object.","source":"* {*} source - The source object."}],"type":"function","functionTag":"pair","returns":{"tag":"returns","name":"The","type":"Array","optional":false,"description":"array which holds the pair.","source":"* {Array} The array which holds the pair.\n\t *"}},"concurrent":{"category":"utility","description":"Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.","examples":[{"tag":"example","optional":false,"description":"import { concurrent, assert } from '@universalweb/acid'; const tempList = []; await concurrent([1, 2], async (item) => { return item; }); assert(tempList, [1, 2]);","source":"import { concurrent, assert } from \"@universalweb/acid\";\nconst tempList = [];\nawait concurrent([1, 2], async (item) => {\n return item;\n});\nassert(tempList, [1, 2]);\n"}],"name":"concurrent","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, and array length."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"concurrent","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The array from Promise.all.","source":"* {Array} - The array from Promise.all.\n\t *"}},"concurrentStatus":{"category":"utility","description":"Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.","examples":[{"tag":"example","optional":false,"description":"import { concurrentStatus, assert } from '@universalweb/acid'; const tempList = []; await concurrentStatus([1, 2], async (item) => { return item; }); assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);","source":"import { concurrentStatus, assert } from \"@universalweb/acid\";\nconst tempList = [];\nawait concurrentStatus([1, 2], async (item) => {\n return item;\n});\nassert(tempList, [\n { status: \"fulfilled\", value: 1 },\n { status: \"fulfilled\", value: 2 },\n]);\n"}],"name":"concurrentStatus","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, and array length."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"concurrentStatus","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The array from Promise.allSettled.","source":"* {Array} - The array from Promise.allSettled.\n\t *"}},"promise":{"category":"utility","description":"A wrapper around the promise constructor.","examples":[{"tag":"example","optional":false,"description":"promise((a) => {}); // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}","source":"promise((a) => {});\n// => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n"}],"name":"promise","params":[{"tag":"param","name":"callback","type":"Function","optional":false,"description":"- Function to be called back.","source":"* {Function} callback - Function to be called back."}],"type":"function","functionTag":"promise","test":{"tag":"test","optional":false,"description":"(async () => { const result = await promise((accept) => { accept(true); }); return assert(result, true); });","source":"* \t * (async () => {\n\t * const result = await promise((accept) => {\n\t * accept(true);\n\t * });\n\t * return assert(result, true);\n\t * });"},"returns":{"tag":"returns","name":"-","type":"Promise","optional":false,"description":"A constructor with a callback function.","source":"* {Promise} - A constructor with a callback function."}},"propertyMatch":{"category":"utility","description":"Using a deep comparison it checks if properties of two objects using an array are equal.","examples":[{"tag":"example","optional":false,"description":"import { propertyMatch, assert } from '@universalweb/acid'; assert(propertyMatch({ a: 1, b: 2 }, { a: 1, b: 2 }, ['a', 'b']), true);","source":"import { propertyMatch, assert } from \"@universalweb/acid\";\nassert(propertyMatch({ a: 1, b: 2 }, { a: 1, b: 2 }, [\"a\", \"b\"]), true);\n"}],"name":"propertyMatch","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- The source object to compare.","source":"* {Object} source - The source object to compare."},{"tag":"param","name":"compared","type":"Object","optional":false,"description":"- Object to be compared to source.","source":"* {Object} compared - Object to be compared to source."},{"tag":"param","name":"properties","type":"Array","optional":false,"description":"- List of properties to compare defaults to keys(source).","source":"* {Array} properties - List of properties to compare defaults to keys(source)."}],"type":"function","functionTag":"propertyMatch","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns an array of properties.","source":"* {Array} - Returns an array of properties.\n\t *"}},"stubArray":{"category":"utility","description":"This method returns a new empty array.","examples":[{"tag":"example","optional":false,"description":"import { stubArray } from '@universalweb/acid'; stubArray(); // => []","source":"import { stubArray } from \"@universalweb/acid\";\nstubArray();\n// => []\n"}],"name":"stubArray","type":"function","functionTag":"stubArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns the new empty array.","source":"* {Array} - Returns the new empty array."}},"stubObject":{"category":"utility","description":"This method returns a new empty object.","examples":[{"tag":"example","optional":false,"description":"import { stubObject } from '@universalweb/acid'; stubObject(); // => {}","source":"import { stubObject } from \"@universalweb/acid\";\nstubObject();\n// => {}\n"}],"name":"stubObject","type":"function","functionTag":"stubObject","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the new empty object.","source":"* {Object} - Returns the new empty object.\n\t *"}},"stubString":{"category":"utility","description":"This method returns a new empty string.","examples":[{"tag":"example","optional":false,"description":"import { stubString } from '@universalweb/acid'; stubString(); // => ''","source":"import { stubString } from \"@universalweb/acid\";\nstubString();\n// => ''\n"}],"name":"stubString","type":"function","functionTag":"stubString","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Returns the new empty string.","source":"* {String} - Returns the new empty string.\n\t *"}},"timesAsync":{"category":"utility","description":"Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.","examples":[{"tag":"example","optional":false,"description":"import { timesAsync } from '@universalweb/acid'; await timesAsync(3, async (item) => { console.log(item); }); // 0 // 1 // 2 // => undefined","source":"import { timesAsync } from \"@universalweb/acid\";\nawait timesAsync(3, async (item) => {\n console.log(item);\n}); // 0 // 1 // 2\n// => undefined\n"}],"name":"timesAsync","params":[{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The amount of times to loop invoking the iteratee.","source":"* {Number} amount - The amount of times to loop invoking the iteratee."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed index and amount.","source":"* {Function} iteratee - Transformation function which is passed index and amount."}],"type":"function","isAsync":true,"functionTag":"timesAsync","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Nothing.","source":"* {undefined} - Nothing.\n\t *"}},"timesMapAsync":{"category":"array","description":"Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.","examples":[{"tag":"example","optional":false,"description":"import { timesMapAsync } from '@universalweb/acid'; await timesMapAsync(3, (item) => { return item; }); // => [0, 1, 2]","source":"import { timesMapAsync } from \"@universalweb/acid\";\nawait timesMapAsync(3, (item) => {\n return item;\n});\n// => [0, 1, 2]\n"}],"name":"timesMapAsync","params":[{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The amount of times to loop invoking the iteratee.","source":"* {Number} amount - The amount of times to loop invoking the iteratee."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed index and amount.","source":"* {Function} iteratee - Transformation function which is passed index and amount."},{"tag":"param","name":"results","type":"Array","optional":true,"description":"- Array that will have iteratee return pushed to.","source":"* {Array} [results = []] - Array that will have iteratee return pushed to.","default":"[]"}],"type":"function","isAsync":true,"functionTag":"timesMapAsync","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with iteratee's returned values.","source":"* {Array} - An array with iteratee's returned values.\n\t *"}},"toggle":{"category":"utility","description":"Performs a toggle between 2 values using a deep or strict comparison.","examples":[{"tag":"example","optional":false,"description":"import { toggle } from '@universalweb/acid'; let toggleMe = true; toggleMe = toggle(toggleMe, true, false); // => false","source":"import { toggle } from \"@universalweb/acid\";\nlet toggleMe = true;\ntoggleMe = toggle(toggleMe, true, false);\n// => false\n"}],"name":"toggle","params":[{"tag":"param","name":"value","type":"(string|number|Object|Array)","optional":false,"description":"- Strictly compared against on & off arguments.","source":"* {(string|number|Object|Array)} value - Strictly compared against on & off arguments."},{"tag":"param","name":"on","type":"(string|number|Object|Array)","optional":false,"description":"- The first object to be compared to.","source":"* {(string|number|Object|Array)} on - The first object to be compared to."},{"tag":"param","name":"off","type":"(string|number|Object|Array)","optional":false,"description":"- The second object to be compared to.","source":"* {(string|number|Object|Array)} off - The second object to be compared to."}],"type":"function","functionTag":"toggle","returns":{"tag":"returns","name":"-","type":"(string|number|Object|Array)","optional":false,"description":"The opposing value to the current.","source":"* {(string|number|Object|Array)} - The opposing value to the current.\n\t *"}},"UniqID":{"category":"utility","description":"Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.","examples":[{"tag":"example","optional":false,"description":"import { UniqID, construct, assert } from '@universalweb/acid'; const gen = construct(UniqID); assert(gen.get(), 0); assert(gen.get(), 1); gen.free(0); assert(gen.get(), 0);","source":"import { UniqID, construct, assert } from \"@universalweb/acid\";\nconst gen = construct(UniqID);\nassert(gen.get(), 0);\nassert(gen.get(), 1);\ngen.free(0);\nassert(gen.get(), 0);\n"}],"name":"UniqID","type":"class","classTag":"UniqID","returns":{"tag":"returns","name":"-","type":"UniqID","optional":false,"description":"Returns a new instance of UniqID.","source":"* {UniqID} - Returns a new instance of UniqID.\n\t *"}},"UniqID.get":{"category":"utility","description":"Generates a new ID or recycle one that is no longer used.","examples":[{"tag":"example","optional":false,"description":"import { UniqID, construct, assert } from '@universalweb/acid'; const gen = construct(UniqID); assert(gen.get(), 0);","source":"import { UniqID, construct, assert } from \"@universalweb/acid\";\nconst gen = construct(UniqID);\nassert(gen.get(), 0);\n"}],"name":"UniqID.get","type":"class","classTag":"UniqID","functionTag":"get","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns a unique id.","source":"* {Number} - Returns a unique id.\n\t\t *"}},"UniqID.free":{"category":"utility","description":"Frees an UID so that it may be recycled for later use.","examples":[{"tag":"example","optional":false,"description":"import { UniqID, construct, assert } from '@universalweb/acid'; const gen = construct(UniqID); assert(gen.get(), 0); gen.free(0); assert(gen.get(), 0);","source":"import { UniqID, construct, assert } from \"@universalweb/acid\";\nconst gen = construct(UniqID);\nassert(gen.get(), 0);\ngen.free(0);\nassert(gen.get(), 0);\n"}],"name":"UniqID.free","params":[{"tag":"param","name":"id","type":"Number","optional":false,"description":"- Number to be freed.","source":"* {Number} id - Number to be freed."}],"type":"class","classTag":"UniqID","functionTag":"free","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Nothing is returned.","source":"* {undefined} - Nothing is returned.\n\t\t *"}},"uniqID":{"category":"utility","description":"A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.","examples":[{"tag":"example","optional":false,"description":"import { uniqID, assert } from '@universalweb/acid'; assert(uniqID.get(), 0); assert(uniqID.get(), 1); uniqID.free(0); assert(uniqID.get(), 0);","source":"import { uniqID, assert } from \"@universalweb/acid\";\nassert(uniqID.get(), 0);\nassert(uniqID.get(), 1);\nuniqID.free(0);\nassert(uniqID.get(), 0);\n"}],"name":"uniqID","type":"function","functionTag":"uniqID"},"virtualStorage":{"category":"browser","description":"The virtualStorage function is a factory which wraps the VirtualStorage class constructor.","examples":[{"tag":"example","optional":false,"description":"import { virtualStorage, assert } from '@universalweb/acid'; const vStorage = virtualStorage(); vStorage.setItem('title', 'value'); assert(vStorage.getItem('title'), 'value');","source":"import { virtualStorage, assert } from \"@universalweb/acid\";\nconst vStorage = virtualStorage();\nvStorage.setItem(\"title\", \"value\");\nassert(vStorage.getItem(\"title\"), \"value\");\n"}],"name":"virtualStorage","type":"function","functionTag":"virtualStorage","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns a new VirtualStorage Object.","source":"* {*} - Returns a new VirtualStorage Object.\n\t *"}},"isAgent":{"category":"browser","description":"Checks to see of the browser agent has a string.","examples":[{"tag":"example","optional":false,"description":"isAgent('mobile'); // => false","source":"isAgent(\"mobile\");\n// => false\n"}],"name":"isAgent","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- The string to search for.","source":"* {String} source - The string to search for."}],"type":"function","functionTag":"isAgent","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false."}},"eventAdd":{"category":"browser","description":"Attaches an event listener to a node.","examples":[{"tag":"example","optional":false,"description":"eventAdd(document.body, 'click', () => {console.log('CLICKED');}); // = > document.body","source":"eventAdd(document.body, \"click\", () => {\n console.log(\"CLICKED\");\n}); // = > document.body\n"}],"name":"eventAdd","params":[{"tag":"param","name":"node","type":"Node","optional":false,"description":"- Given node.","source":"* {Node} node - Given node."},{"tag":"param","name":"eventName","type":"String","optional":false,"description":"- A string representing the event type.","source":"* {String} eventName - A string representing the event type."},{"tag":"param","name":"callback","type":"Object|Function","optional":false,"description":"- The object which receives a notification when an event of the specified type occurs.","source":"* {Object|Function} callback - The object which receives a notification when an event of the specified type occurs."},{"tag":"param","name":"useCapture","type":"Boolean","optional":false,"description":"- The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.","source":"* {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation."}],"type":"function","functionTag":"eventAdd","returns":{"tag":"returns","name":"-","type":"Node","optional":false,"description":"Returns given node.","source":"* {Node} - Returns given node.\n\t *"}},"eventRemove":{"category":"browser","description":"Attaches an event listener to a node.","examples":[{"tag":"example","optional":false,"description":"eventRemove(document.body, () => {console.log('CLICKED');}); // = > Undefined","source":"eventRemove(document.body, () => {\n console.log(\"CLICKED\");\n}); // = > Undefined\n"}],"name":"eventRemove","params":[{"tag":"param","name":"node","type":"Node","optional":false,"description":"- Given node.","source":"* {Node} node - Given node."},{"tag":"param","name":"eventName","type":"String","optional":false,"description":"- A string representing the event type.","source":"* {String} eventName - A string representing the event type."},{"tag":"param","name":"callback","type":"Object|Function","optional":false,"description":"- The object which receives a notification when an event of the specified type occurs.","source":"* {Object|Function} callback - The object which receives a notification when an event of the specified type occurs."},{"tag":"param","name":"useCapture","type":"Boolean","optional":false,"description":"- The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.","source":"* {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation."}],"type":"function","functionTag":"eventRemove","returns":{"tag":"returns","name":"-","type":"Node","optional":false,"description":"Returns given node.","source":"* {Node} - Returns given node.\n\t *"}},"isEnter":{"category":"browser","description":"Checks if the keycode of the event is strictly equal to 13.","examples":[{"tag":"example","optional":false,"description":"isEnter('click'); // => false","source":"isEnter(\"click\");\n// => false\n"}],"name":"isEnter","params":[{"tag":"param","name":"eventObject","type":"Object","optional":false,"description":"- Object to be checked.","source":"* {Object} eventObject - Object to be checked."}],"type":"function","functionTag":"isEnter","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if the keycode property of the object equals 13.","source":"* {Boolean} - Returns true if the keycode property of the object equals 13.\n\t *"}},"importjs":{"category":"browser","description":"Asynchronously import a js file and append it to the head node. If a script fails to load importjs won't reject the promise rather it'll return the error event to limit further complications & reduce code complexity.","examples":[{"tag":"example","optional":false,"description":"importjs('core.js'); importjs('core');","source":"importjs(\"core.js\");\nimportjs(\"core\");\n"}],"name":"importjs","params":[{"tag":"param","name":"url","type":"*","optional":false,"description":"- URL of the script to import. If not \".\" is found in the file name \".js\" will be appended.","source":"* {*} url - URL of the script to import. If not \".\" is found in the file name \".js\" will be appended."}],"type":"function","isAsync":true,"functionTag":"importjs","returns":{"tag":"returns","name":"-","type":"Promise","optional":false,"description":"Returns a promise which returns a \"load\" or \"error\" event associated with the script.","source":"* {Promise} - Returns a promise which returns a \"load\" or \"error\" event associated with the script.\n\t *"}},"Crate":{"category":"browser","description":"Constructs a virtual storage container with localStorage support. Crate will fallback to strictly virtual storage if localStorage isn't supported. If localStorage is supported virtual storage will be used first & only fallback to localStorage when needed. Crate is ideal as a seemless drop in replacement for localStorage when not supported or allowed.","examples":[{"tag":"example","optional":false,"description":"import { Crate, construct, assert } from '@universalweb/acid'; const storageCrate = construct(Crate); storageCrate.setItem('key', 'value'); assert(storageCrate.getItem('key'), 'value');","source":"import { Crate, construct, assert } from \"@universalweb/acid\";\nconst storageCrate = construct(Crate);\nstorageCrate.setItem(\"key\", \"value\");\nassert(storageCrate.getItem(\"key\"), \"value\");\n"}],"name":"Crate","type":"class","classTag":"Crate","returns":{"tag":"returns","name":"-","type":"Crate","optional":false,"description":"Returns a new instance of Crate.","source":"* {Crate} - Returns a new instance of Crate.\n\t *"}},"Crate.setItem":{"category":"browser","description":"Save an item to a crate.","examples":[{"tag":"example","optional":false,"description":"import { Crate, construct, assert } from '@universalweb/acid'; const storageCrate = construct(Crate); storageCrate.setItem('key', 'value'); assert(storageCrate.getItem('key'), 'value');","source":"import { Crate, construct, assert } from \"@universalweb/acid\";\nconst storageCrate = construct(Crate);\nstorageCrate.setItem(\"key\", \"value\");\nassert(storageCrate.getItem(\"key\"), \"value\");\n"}],"name":"Crate.setItem","params":[{"tag":"param","name":"key","type":"String","optional":false,"description":"- The key used to store the data.","source":"* {String} key - The key used to store the data."},{"tag":"param","name":"value","type":"*","optional":false,"description":"- If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.","source":"* {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify."}],"type":"class","classTag":"Crate","functionTag":"setItem","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined.\n\t\t *"}},"Crate.getItem":{"category":"browser","description":"Get an item from a crate.","examples":[{"tag":"example","optional":false,"description":"import { Crate, construct, assert } from '@universalweb/acid'; const storageCrate = construct(Crate); storageCrate.setItem('key', 'value'); assert(storageCrate.getItem('key'), 'value');","source":"import { Crate, construct, assert } from \"@universalweb/acid\";\nconst storageCrate = construct(Crate);\nstorageCrate.setItem(\"key\", \"value\");\nassert(storageCrate.getItem(\"key\"), \"value\");\n"}],"name":"Crate.getItem","params":[{"tag":"param","name":"key","type":"String","optional":false,"description":"- The key used to store the data.","source":"* {String} key - The key used to store the data."}],"type":"class","classTag":"Crate","functionTag":"getItem","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined.\n\t\t *"}},"Crate.clear":{"category":"browser","description":"Clears all data for the crate including all of localStorage if supported.","examples":[{"tag":"example","optional":false,"description":"import { Crate, construct, assert } from '@universalweb/acid'; const storageCrate = construct(Crate); storageCrate.setItem('key', 'value'); assert(storageCrate.getItem('key'), 'value'); storageCrate.clear(); assert(storageCrate.getItem('key'), undefined);","source":"import { Crate, construct, assert } from \"@universalweb/acid\";\nconst storageCrate = construct(Crate);\nstorageCrate.setItem(\"key\", \"value\");\nassert(storageCrate.getItem(\"key\"), \"value\");\nstorageCrate.clear();\nassert(storageCrate.getItem(\"key\"), undefined);\n"}],"name":"Crate.clear","params":[{"tag":"param","name":"key","type":"String","optional":false,"description":"- The key used to remove data.","source":"* {String} key - The key used to remove data."}],"type":"class","classTag":"Crate","functionTag":"clear","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined.\n\t\t *"}},"Crate.removeItem":{"category":"browser","description":"Remove an item from a crate.","examples":[{"tag":"example","optional":false,"description":"import { Crate, construct, assert } from '@universalweb/acid'; const storageCrate = construct(Crate); storageCrate.setItem('key', 'value'); assert(storageCrate.getItem('key'), 'value'); storageCrate.removeItem('key'); assert(storageCrate.getItem('key'), undefined);","source":"import { Crate, construct, assert } from \"@universalweb/acid\";\nconst storageCrate = construct(Crate);\nstorageCrate.setItem(\"key\", \"value\");\nassert(storageCrate.getItem(\"key\"), \"value\");\nstorageCrate.removeItem(\"key\");\nassert(storageCrate.getItem(\"key\"), undefined);\n"}],"name":"Crate.removeItem","params":[{"tag":"param","name":"key","type":"String","optional":false,"description":"- The key used to remove data.","source":"* {String} key - The key used to remove data."}],"type":"class","classTag":"Crate","functionTag":"removeItem","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined.\n\t\t *"}},"crate":{"category":"browser","description":"The crate function is a factory which wraps the Crate class constructor.","examples":[{"tag":"example","optional":false,"description":"const storageCrate = crate(); // => New Crate Object","source":"const storageCrate = crate();\n// => New Crate Object\n"}],"name":"crate","type":"function","functionTag":"crate","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns a new Crate Object.","source":"* {*} - Returns a new Crate Object.\n\t *"}}}} \ No newline at end of file +window.docMap = {"categories":[{"title":"array","items":["chunk","clearArray","cloneArray","compactMapArray","compactMapAsyncArray","difference","drop","dropRight","eachArray","eachAsyncArray","eachRight","eachRightAsync","ensureArray","everyArray","everyAsyncArray","filterArray","filterAsyncArray","first","flatten","flattenDeep","getNumberInsertIndex","inAsync","initial","intersection","invokeArray","isMatchArray","largest","last","mapArray","mapAsyncArray","mapRightArray","mapWhile","partition","range","remove","removeBy","rest","right","sample","shuffle","smallest","sortNumberAscending","sortNumberDescening","take","takeRight","timesMapAsync","toArray","unZip","union","unique","untilFalseArray","untilTrueArray","whileCompactMap","whileEachArray","whileMapArray","without","xor","zip"]},{"title":"browser","items":["Crate","Crate.clear","Crate.getItem","Crate.removeItem","Crate.setItem","crate","eventAdd","eventRemove","importjs","isAgent","isEnter","virtualStorage"]},{"title":"buffer","items":["clearBuffer","ensureBuffer"]},{"title":"class","items":["construct"]},{"title":"collection","items":["countBy","countKey","countWithoutKey","findIndex","findItem","getHighest","getLowest","groupBy","indexBy","invokeCollection","invokeCollectionAsync","pluck","sortCollectionAlphabetically","sortCollectionAlphabeticallyReverse","sortCollectionAscending","sortCollectionDescending"]},{"title":"file","items":["getFileExtension","getFilename","isFileCSS","isFileHTML","isFileJS","isFileJSON"]},{"title":"function","items":["after","apply","ary","before","chain","clearIntervals","clearTimers","curry","debounce","ifInvoke","inSync","interval","negate","noop","nthArg","once","over","overEvery","reArg","throttle","timer","wrap"]},{"title":"math","items":["add","deduct","divide","increment","multiply","randomFloat","remainder","subtract","subtractAll","subtractReverse","sumAll"]},{"title":"number","items":["isNegative","isNumberEqual","isNumberInRange","isNumberNotInRange","isPositive","isZero","randomInt"]},{"title":"object","items":["assign","compactKeys","compactMapAsyncObject","compactMapObject","defProp","eachAsyncObject","eachObject","everyAsyncObject","everyObject","filterAsyncObject","filterObject","getEntries","getPropDesc","getPropNames","hasAnyKeys","hasKeys","invert","isMatchObject","isSame","keys","mapObject","mapObjectAsync","objectSize","omit","pick","pluckObject","unZipObject","zipObject"]},{"title":"regex","items":["arrayToRegex","regexSafe"]},{"title":"string","items":["camelCase","chunkString","htmlEntities","initialString","insertInRange","kebabCase","lowerCase","rawURLDecode","replaceList","restString","rightString","sanitize","snakeCase","tokenize","truncate","truncateRight","upperCase","upperFirst","upperFirstAll","upperFirstLetter","upperFirstOnly","upperFirstOnlyAll"]},{"title":"type","items":["cloneType","getType","getTypeName","hasValue","isArguments","isArray","isArrayBuffer","isArrayLike","isAsync","isBigInt","isBoolean","isBuffer","isChild","isCloneable","isConstructor","isDate","isEmpty","isF32","isF64","isFalsy","isFloat","isFunction","isGenerator","isI16","isI32","isI8","isIterable","isKindAsync","isMap","isNotArray","isNotNumber","isNotString","isNull","isNumber","isParent","isPlainObject","isPrimitive","isPromise","isRegex","isRelated","isSafeInt","isSet","isString","isTruthy","isTypedArray","isU16","isU32","isU8","isU8C","isUndefined","isWeakMap","noValue"]},{"title":"utility","items":["UniqID","UniqID.free","UniqID.get","arraysToObject","assert","bindAll","cacheNativeMethod","calcProgress","clear","clone","compact","compactMap","concurrent","concurrentStatus","each","every","filter","flow","flowAsync","flowAsyncRight","flowRight","forOfCompactMap","forOfCompactMap","forOfCompactMapAsync","forOfCompactMapAsync","forOfEvery","forOfEveryAsync","forOfFilter","forOfFilterAsync","get","has","hasDot","hasLength","ifNotAssign","ifValue","isEqual","isFalse","isTrue","jsonParse","map","model","notEqual","pair","promise","propertyMatch","returnValue","stringify","stubArray","stubFalse","stubObject","stubString","stubTrue","times","timesAsync","timesMap","toPath","toggle","uniqID"]}],"items":{"chunk":{"category":"array","description":"Chunks an array according to a user defined number.","examples":[{"tag":"example","optional":false,"description":"import { chunk, assert } from '@universalweb/acid'; assert(chunk([1,2,3], 1), [[1],[2],[3]]);","source":"import { chunk, assert } from \"@universalweb/acid\";\nassert(chunk([1, 2, 3], 1), [[1], [2], [3]]);\n"}],"name":"chunk","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array to be chunked.","source":"* {Array} array - Array to be chunked."},{"tag":"param","name":"size","type":"Number","optional":false,"description":"- Number which determines the size of each chunk.","source":"* {Number} size - Number which determines the size of each chunk."}],"type":"function","functionTag":"chunk","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"A chunked version of the source array.","source":"* {Array} - A chunked version of the source array.\n\t *"}},"clearArray":{"category":"array","description":"Clears the values out of an array.","examples":[{"tag":"example","optional":false,"description":"import { clearArray, assert } from '@universalweb/acid'; assert(clearArray([1,'B', 'Cat']), []);","source":"import { clearArray, assert } from \"@universalweb/acid\";\nassert(clearArray([1, \"B\", \"Cat\"]), []);\n"}],"name":"clearArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Takes an array to be emptied.","source":"* {Array} source - Takes an array to be emptied."}],"type":"function","functionTag":"clearArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"cloneArray":{"category":"array","description":"Clone an array (uses .slice()) and assign the source arrays values to the new array.","examples":[{"tag":"example","optional":false,"description":"import { cloneArray, assert } from '@universalweb/acid'; assert(cloneArray([1,'B', 'Cat']), [1, 'B', 'Cat']);","source":"import { cloneArray, assert } from \"@universalweb/acid\";\nassert(cloneArray([1, \"B\", \"Cat\"]), [1, \"B\", \"Cat\"]);\n"}],"name":"cloneArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The array to be quick cloned.","source":"* {Array} source - The array to be quick cloned."}],"type":"function","functionTag":"cloneArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The newly cloned array with assigned items.","source":"* {Array} - The newly cloned array with assigned items.\n\t *"}},"isUndefined":{"category":"type","description":"Checks if the value is undefined.","examples":[{"tag":"example","optional":false,"description":"import { isUndefined, assert } from '@universalweb/acid'; assert(isUndefined(undefined), true);","source":"import { isUndefined, assert } from \"@universalweb/acid\";\nassert(isUndefined(undefined), true);\n"}],"name":"isUndefined","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isUndefined","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"hasLength":{"category":"utility","description":"Checks if the value has length greater than 0.","examples":[{"tag":"example","optional":false,"description":"import { hasLength, assert } from '@universalweb/acid'; assert(hasLength([1]), true);","source":"import { hasLength, assert } from \"@universalweb/acid\";\nassert(hasLength([1]), true);\n"}],"name":"hasLength","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"hasLength","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isNull":{"category":"type","description":"Checks if the value is null.","examples":[{"tag":"example","optional":false,"description":"import { isNull, assert } from '@universalweb/acid'; assert(isNull(null), true);","source":"import { isNull, assert } from \"@universalweb/acid\";\nassert(isNull(null), true);\n"}],"name":"isNull","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isNull","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"hasValue":{"category":"type","description":"Checks if the value is not null or undefined.","examples":[{"tag":"example","optional":false,"description":"import { hasValue, assert } from '@universalweb/acid'; assert(hasValue(1), true);","source":"import { hasValue, assert } from \"@universalweb/acid\";\nassert(hasValue(1), true);\n"}],"name":"hasValue","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"hasValue","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"returnValue":{"category":"utility","description":"A simple function which returns the value it's given.","name":"returnValue","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- The source object.","source":"* {*} source - The source object."}],"type":"function","functionTag":"returnValue","returns":{"tag":"returns","name":"The","type":"source","optional":false,"description":"source object.","source":"* {source} The source object.\n\t */"}},"eachArray":{"category":"array","description":"Iterates through the given array.","examples":[{"tag":"example","optional":false,"description":"import { eachArray, assert } from '@universalweb/acid'; const list = []; eachArray([1, 2, 3], (item, index) => { list[index] = item; }); assert(list, [1, 2, 3]);","source":"import { eachArray, assert } from \"@universalweb/acid\";\nconst list = [];\neachArray([1, 2, 3], (item, index) => {\n list[index] = item;\n});\nassert(list, [1, 2, 3]);\n"}],"name":"eachArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, array length, and additionalArg.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- Iteratee called with thisCall as this.","source":"* {*} thisCall - Iteratee called with thisCall as this."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"eachArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"compactMapArray":{"category":"array","description":"Iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.","examples":[{"tag":"example","optional":false,"description":"import { compactMapArray, assert } from '@universalweb/acid'; assert(compactMapArray([null, 2, 3], (item) => { return item; }), [2, 3]);","source":"import { compactMapArray, assert } from \"@universalweb/acid\";\nassert(\n compactMapArray([null, 2, 3], (item) => {\n return item;\n }),\n [2, 3],\n);\n"}],"name":"compactMapArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, the newly created array, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length."},{"tag":"param","name":"results","type":"Array = []","optional":false,"description":"- Array that will be used to assign results. Default value is a new empty array.","source":"* {Array = []} results - Array that will be used to assign results. Default value is a new empty array."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisCall - An object to be given each time to the iteratee."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"compactMapArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with mapped properties that are not null or undefined.","source":"* {Array} - An array with mapped properties that are not null or undefined.\n\t *"}},"eachAsyncArray":{"category":"array","description":"Asynchronously Iterates through the given array. Each async function is awaited as to ensure synchronous order.","examples":[{"tag":"example","optional":false,"description":"import { eachAsyncArray, assert } from '@universalweb/acid'; const tempList = []; await eachAsyncArray([1, 2, 3], async (item) => { tempList.push(item); }); assert(tempList, [1, 2, 3]);","source":"import { eachAsyncArray, assert } from \"@universalweb/acid\";\nconst tempList = [];\nawait eachAsyncArray([1, 2, 3], async (item) => {\n tempList.push(item);\n});\nassert(tempList, [1, 2, 3]);\n"}],"name":"eachAsyncArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, array length, and additionalArg.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- Iteratee called with thisCall as this.","source":"* {*} thisCall - Iteratee called with thisCall as this."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","isAsync":true,"functionTag":"eachAsyncArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns source the originally given array.","source":"* {Array} - Returns source the originally given array.\n\t *"}},"compactMapAsyncArray":{"category":"array","description":"Asynchronously iterates through the calling array and creates an array with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling array.","examples":[{"tag":"example","optional":false,"description":"import { compactMapAsync, assert } from '@universalweb/acid'; assert(await compactMapAsync([1, 2, 3, null], async (item) => { return item; }), [1, 2, 3]);","source":"import { compactMapAsync, assert } from \"@universalweb/acid\";\nassert(\n await compactMapAsync([1, 2, 3, null], async (item) => {\n return item;\n }),\n [1, 2, 3],\n);\n"}],"name":"compactMapAsyncArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array to be compacted.","source":"* {Array} source - Array to be compacted."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Iteratee to be performed on array.","source":"* {Function} iteratee - Iteratee to be performed on array."}],"type":"function","isAsync":true,"functionTag":"compactMapAsyncArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Array values after being put through an iterator.","source":"* {Array} - Array values after being put through an iterator.\n\t *"}},"isNegative":{"category":"number","description":"Checks if a number is negative & returns true or false.","examples":[{"tag":"example","optional":false,"description":"import { isNegative, assert } from '@universalweb/acid'; assert(isNegative(-1), true);","source":"import { isNegative, assert } from \"@universalweb/acid\";\nassert(isNegative(-1), true);\n"}],"name":"isNegative","params":[{"tag":"param","name":"source","type":"Number","optional":false,"description":"- Number to be checked.","source":"* {Number} source - Number to be checked."}],"type":"function","functionTag":"isNegative","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"range":{"category":"array","description":"Create a numbered list of integers.","examples":[{"tag":"example","optional":false,"description":"import { range, assert } from '@universalweb/acid'; assert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);","source":"import { range, assert } from \"@universalweb/acid\";\nassert(range(0, 30, 5), [0, 5, 10, 15, 20, 25]);\n"}],"name":"range","params":[{"tag":"param","name":"start","type":"Number","optional":false,"description":"- Value which determines the start of the range.","source":"* {Number} start - Value which determines the start of the range."},{"tag":"param","name":"end","type":"Number","optional":false,"description":"- Value which determines the end of the range.","source":"* {Number} end - Value which determines the end of the range."},{"tag":"param","name":"step","type":"Number","optional":false,"description":"- Value used to step between integers.","source":"* {Number} step - Value used to step between integers."}],"type":"function","functionTag":"range","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array of integers.","source":"* {Array} - An array of integers.\n\t *"}},"isArray":{"category":"type","description":"Checks if the value is an array. This references Array.isArray.","examples":[{"tag":"example","optional":false,"description":"import { isArray, assert } from '@universalweb/acid'; assert(isArray([]), true); assert(isArray(2), false);","source":"import { isArray, assert } from \"@universalweb/acid\";\nassert(isArray([]), true);\nassert(isArray(2), false);\n"}],"name":"isArray","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isArray","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isNotArray":{"category":"type","description":"Checks if the value is not an array. This references Array.isArray.","examples":[{"tag":"example","optional":false,"description":"import { isNotArray, assert } from '@universalweb/acid'; assert(isNotArray([]), false); assert(isNotArray(2), true);","source":"import { isNotArray, assert } from \"@universalweb/acid\";\nassert(isNotArray([]), false);\nassert(isNotArray(2), true);\n"}],"name":"isNotArray","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isNotArray","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"ensureArray":{"category":"array","description":"Ensures the source is an array if not the source is wrapped in a array or an empty array is returned.","examples":[{"tag":"example","optional":false,"description":"import { isArray, ensureArray, assert } from '@universalweb/acid'; assert(isArray(ensureArray('test')), ['test']);","source":"import { isArray, ensureArray, assert } from \"@universalweb/acid\";\nassert(isArray(ensureArray(\"test\")), [\"test\"]);\n"}],"name":"ensureArray","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"ensureArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns an array.","source":"* {Array} - Returns an array.\n\t *"}},"flattenDeep":{"category":"array","description":"Flattens an array to a single level.","examples":[{"tag":"example","optional":false,"description":"import { flattenDeep, assert } from '@universalweb/acid'; assert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);","source":"import { flattenDeep, assert } from \"@universalweb/acid\";\nassert(flattenDeep([1, [2, [3, [4]], 5]]), [1, 2, 3, 4, 5]);\n"}],"name":"flattenDeep","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array to flatten.","source":"* {Array} source - Array to flatten."}],"type":"function","functionTag":"flattenDeep","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns a completely flattened array.","source":"* {Array} - Returns a completely flattened array.\n\t *"}},"construct":{"category":"class","description":"A function which acts like the \"new\" operator and can pass arguments. This is a safe version of the original which will error if given undefined This is useful when working with classes and prefering to avoid the new operator and it's potential side effects.","examples":[{"tag":"example","optional":false,"description":"import { construct, assert } from '@universalweb/acid'; class test { constructor(a) { return 1; } } const newClass = construct(test, [1]); assert(test, 1);","source":"import { construct, assert } from \"@universalweb/acid\";\nclass test {\n constructor(a) {\n return 1;\n }\n}\nconst newClass = construct(test, [1]);\nassert(test, 1);\n"}],"name":"construct","params":[{"tag":"param","name":"target","type":"Function","optional":false,"description":"- The target function or class.","source":"* {Function} target - The target function or class."},{"tag":"param","name":"argumentsList","type":"Array","optional":true,"description":"- An array-like object specifying the arguments with which target should be called. Default value is a new empty array.","source":"* {Array} [argumentsList =[]] - An array-like object specifying the arguments with which target should be called. Default value is a new empty array.","default":"[]"},{"tag":"param","name":"newTarget","type":"Array","optional":false,"description":"- The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target.","source":"* {Array} newTarget - The constructor whose prototype should be used. See also the new.target operator. If newTarget is not present, its value defaults to target."}],"type":"function","functionTag":"construct","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.","source":"* {*} - A new instance of target (or newTarget, if present), initialized by target as a constructor with the given argumentsList.\n\t *"}},"difference":{"category":"array","description":"Checks for primitive differences between a source array to other arrays, then returns a new array containing those differences.","examples":[{"tag":"example","optional":false,"description":"import { difference, assert } from '@universalweb/acid'; assert(difference([1, 2, 3], [1, 2]), [3]);","source":"import { difference, assert } from \"@universalweb/acid\";\nassert(difference([1, 2, 3], [1, 2]), [3]);\n"}],"name":"difference","params":[{"tag":"param","name":"sources","type":"Array","optional":false,"description":"- Source array.","source":"* {Array} sources - Source array."},{"tag":"param","name":"compare","type":"...Array","optional":false,"description":"- Array(s) source array is compared against.","source":"* {...Array} compare - Array(s) source array is compared against."}],"type":"function","functionTag":"difference","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array which contains the differences between the source and compare array.","source":"* {Array} - An array which contains the differences between the source and compare array.\n\t *"}},"drop":{"category":"array","description":"Removes all items from an array after a specified index.","examples":[{"tag":"example","optional":false,"description":"import { drop, assert } from '@universalweb/acid'; assert(drop([1, 2, 3]), [2, 3]); assert(drop([1, 2, 3], 2), [3]);","source":"import { drop, assert } from \"@universalweb/acid\";\nassert(drop([1, 2, 3]), [2, 3]);\nassert(drop([1, 2, 3], 2), [3]);\n"}],"name":"drop","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Source array.","source":"* {Array} array - Source array."},{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- Amount of items to drop from the array.","source":"* {Number} amount - Amount of items to drop from the array."},{"tag":"param","name":"upTo","type":"Number","optional":true,"description":"- Index to stop at.","source":"* {Number} [upTo = array.length] - Index to stop at.","default":"array.length"}],"type":"function","functionTag":"drop","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with all values removed after a user defined index.","source":"* {Array} - An array with all values removed after a user defined index.\n\t *"}},"dropRight":{"category":"array","description":"Removes all items from an array before a specified index.","examples":[{"tag":"example","optional":false,"description":"import { dropRight, assert } from '@universalweb/acid'; assert(dropRight([1, 2, 3]), [1, 2]); assert(dropRight([1, 2, 3], 2), [1]);","source":"import { dropRight, assert } from \"@universalweb/acid\";\nassert(dropRight([1, 2, 3]), [1, 2]);\nassert(dropRight([1, 2, 3], 2), [1]);\n"}],"name":"dropRight","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Source array.","source":"* {Array} array - Source array."},{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- Amount of items to drop from the array.","source":"* {Number} amount - Amount of items to drop from the array."},{"tag":"param","name":"upTo","type":"Number","optional":true,"description":"- Index to stop at.","source":"* {Number} [upTo = array.length] - Index to stop at.","default":"array.length"}],"type":"function","functionTag":"dropRight","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with all values removed before a user defined index.","source":"* {Array} - An array with all values removed before a user defined index.\n\t *"}},"eachRight":{"category":"array","description":"Iterates through the given array in reverse.","examples":[{"tag":"example","optional":false,"description":"import { eachRight, assert } from '@universalweb/acid'; const tempList = []; eachRight([1, 2, 3], (item) => { tempList.push(item); }); assert(tempList, [3, 2, 1]);","source":"import { eachRight, assert } from \"@universalweb/acid\";\nconst tempList = [];\neachRight([1, 2, 3], (item) => {\n tempList.push(item);\n});\nassert(tempList, [3, 2, 1]);\n"}],"name":"eachRight","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, and array length."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"eachRight","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"eachRightAsync":{"category":"array","description":"Asynchronously Iterates through the given array in reverse. Each async function is awaited as to ensure synchronous order.","examples":[{"tag":"example","optional":false,"description":"import { eachRightAsync, assert } from '@universalweb/acid'; const tempList = []; await eachRightAsync([1, 2, 3], async (item) => { tempList.push(item); }); assert(tempList, [3, 2, 1]);","source":"import { eachRightAsync, assert } from \"@universalweb/acid\";\nconst tempList = [];\nawait eachRightAsync([1, 2, 3], async (item) => {\n tempList.push(item);\n});\nassert(tempList, [3, 2, 1]);\n"}],"name":"eachRightAsync","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, and array length."}],"type":"function","isAsync":true,"functionTag":"eachRightAsync","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"The originally given array.","source":"* {Object} - The originally given array.\n\t *"}},"everyArray":{"category":"array","description":"Iterates through the given array while the iteratee returns true else the loop exits & returns false.","examples":[{"tag":"example","optional":false,"description":"import { everyArray, assert } from '@universalweb/acid'; assert(everyArray([true, true, false], (item, index, source, sourceLength, thisBind) => { return item; }), false); assert(everyArray([true, true, true], (item, index, source, sourceLength, thisBind) => { return item; }), true);","source":"import { everyArray, assert } from \"@universalweb/acid\";\nassert(\n everyArray(\n [true, true, false],\n (item, index, source, sourceLength, thisBind) => {\n return item;\n },\n ),\n false,\n);\nassert(\n everyArray(\n [true, true, true],\n (item, index, source, sourceLength, thisBind) => {\n return item;\n },\n ),\n true,\n);\n"}],"name":"everyArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, key, calling array, and array length."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"everyArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns true if all returns are true or false if one value returns false.","source":"* {Array} - Returns true if all returns are true or false if one value returns false.\n\t *"}},"everyAsyncArray":{"category":"array","description":"Iterates through the given array while the iteratee returns true else the loop exits & returns false.","examples":[{"tag":"example","optional":false,"description":"import { everyAsyncArray, assert } from '@universalweb/acid'; assert(everyAsyncArray([true, true, false], (item, index, source, sourceLength, thisBind) => { return item; }), false); assert(everyAsyncArray([true, true, true], (item, index, source, sourceLength, thisBind) => { return item; }), true);","source":"import { everyAsyncArray, assert } from \"@universalweb/acid\";\nassert(\n everyAsyncArray(\n [true, true, false],\n (item, index, source, sourceLength, thisBind) => {\n return item;\n },\n ),\n false,\n);\nassert(\n everyAsyncArray(\n [true, true, true],\n (item, index, source, sourceLength, thisBind) => {\n return item;\n },\n ),\n true,\n);\n"}],"name":"everyAsyncArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, key, calling array, and array length."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"everyAsyncArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns true if all returns are true or false if one value returns false.","source":"* {Array} - Returns true if all returns are true or false if one value returns false.\n\t *"}},"filterArray":{"category":"array","description":"Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"import { filterArray, assert } from '@universalweb/acid'; assert(filterArray([false, true, true], (item) => { return item; }), [true, true]);","source":"import { filterArray, assert } from \"@universalweb/acid\";\nassert(\n filterArray([false, true, true], (item) => {\n return item;\n }),\n [true, true],\n);\n"}],"name":"filterArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, the newly created object, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length."},{"tag":"param","name":"results","type":"Array","optional":false,"description":"- Array that will be used to assign results.","source":"* {Array} results - Array that will be used to assign results."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"filterArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with properties that passed the test.","source":"* {Array} - An array with properties that passed the test.\n\t *"}},"filterAsyncArray":{"category":"array","description":"Iterates through the calling array and creates an array with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"import { filterAsyncArray, assert } from '@universalweb/acid'; assert(filterAsyncArray([false, true, true], (item) => { return item; }), [true, true]);","source":"import { filterAsyncArray, assert } from \"@universalweb/acid\";\nassert(\n filterAsyncArray([false, true, true], (item) => {\n return item;\n }),\n [true, true],\n);\n"}],"name":"filterAsyncArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, the newly created object, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, the newly created object, calling array, and array length."},{"tag":"param","name":"results","type":"Array","optional":false,"description":"- Array that will be used to assign results.","source":"* {Array} results - Array that will be used to assign results."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"filterAsyncArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with properties that passed the test.","source":"* {Array} - An array with properties that passed the test.\n\t *"}},"first":{"category":"array","description":"Takes the first or multiple items from an array.","examples":[{"tag":"example","optional":false,"description":"import { first, assert } from '@universalweb/acid'; assert(first([1, 2, 3]), 1);","source":"import { first, assert } from \"@universalweb/acid\";\nassert(first([1, 2, 3]), 1);\n"}],"name":"first","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array to extract from.","source":"* {Array} array - Array to extract from."},{"tag":"param","name":"upTo","type":"Number","optional":false,"description":"- Number which determines how many items after the first item are extracted from the array.","source":"* {Number} upTo - Number which determines how many items after the first item are extracted from the array."}],"type":"function","functionTag":"first","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns an array.","source":"* {Array} - Returns an array.\n\t *"}},"flatten":{"category":"array","description":"Flattens an array up to the provided level.","examples":[{"tag":"example","optional":false,"description":"import { flatten, assert } from '@universalweb/acid'; assert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);","source":"import { flatten, assert } from \"@universalweb/acid\";\nassert(flatten([1, [2, [3, [4]], 5]]), [1, 2, [3, [4]], 5]);\n"}],"name":"flatten","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array to flatten.","source":"* {Array} source - Array to flatten."},{"tag":"param","name":"level","type":"Number","optional":true,"description":"- Number which determines how deep the array nest can be.","source":"* {Number} [level = 1] - Number which determines how deep the array nest can be.","default":"1"}],"type":"function","functionTag":"flatten","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns an array.","source":"* {Array} - Returns an array.\n\t *"}},"initial":{"category":"array","description":"Takes all but the last item in the array.","examples":[{"tag":"example","optional":false,"description":"import { initial, assert } from '@universalweb/acid'; assert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);","source":"import { initial, assert } from \"@universalweb/acid\";\nassert(initial([1, 2, 3, 4, 5]), [1, 2, 3, 4]);\n"}],"name":"initial","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array to have items extracted from.","source":"* {Array} array - Array to have items extracted from."}],"type":"function","functionTag":"initial","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns a completely flattened array.","source":"* {Array} - Returns a completely flattened array.\n\t *"}},"intersection":{"category":"array","description":"Returns an new array that is the [set intersection](http://en.wikipedia.org/wiki/Intersection_(set_theory)) of the array and the input array(s).","examples":[{"tag":"example","optional":false,"description":"import { intersection, assert } from '@universalweb/acid'; assert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);","source":"import { intersection, assert } from \"@universalweb/acid\";\nassert(intersection([1, 2, 3], [2, 3, 4]), [2, 3]);\n"}],"name":"intersection","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array to compare other arrays to.","source":"* {Array} array - Array to compare other arrays to."},{"tag":"param","name":"arrays","type":"...Array","optional":false,"description":"- A variable number of arrays.","source":"* {...Array} arrays - A variable number of arrays."}],"type":"function","functionTag":"intersection","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The new array of unique values shared by all of the arrays.","source":"* {Array} - The new array of unique values shared by all of the arrays.\n\t *"}},"invokeArray":{"category":"array","description":"Invoke each function in the given array.","examples":[{"tag":"example","optional":false,"description":"import { invokeArray, assert } from '@universalweb/acid'; function test(arg){ return [this, arg]; } const results = invokeArray([test], 1, test); assert(results, [test, 1]);","source":"import { invokeArray, assert } from \"@universalweb/acid\";\nfunction test(arg) {\n return [this, arg];\n}\nconst results = invokeArray([test], 1, test);\nassert(results, [test, 1]);\n"}],"name":"invokeArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, array length, and additionalArg.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- Iteratee called with thisCall as this.","source":"* {*} thisCall - Iteratee called with thisCall as this."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"invokeArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"keys":{"category":"object","description":"Get object's keys.","examples":[{"tag":"example","optional":false,"description":"keys({a: 1, b: 2}); // => ['a', 'b']","source":"keys({ a: 1, b: 2 });\n// => ['a', 'b']\n"}],"name":"keys","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- The source object to pull keys from.","source":"* {*} source - The source object to pull keys from."}],"type":"function","functionTag":"keys","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Array of keys.","source":"* {Array} - Array of keys.\n\t *"}},"toPath":{"category":"utility","description":"Breaks up string into object chain list.","examples":[{"tag":"example","optional":false,"description":"import { toPath, assert } from '@universalweb/acid'; assert(toPath('post.like[2]'), ['post', 'like', '2']);","source":"import { toPath, assert } from \"@universalweb/acid\";\nassert(toPath(\"post.like[2]\"), [\"post\", \"like\", \"2\"]);\n"}],"name":"toPath","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- String to be broken up.","source":"* {String} source - String to be broken up."}],"type":"function","functionTag":"toPath","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Array used to go through object chain.","source":"* {Array} - Array used to go through object chain.\n\t *"}},"get":{"category":"utility","description":"Returns property on an object.","examples":[{"tag":"example","optional":false,"description":"import { get, assert } from '@universalweb/acid'; const objectTarget = { post: { like: ['a','b','c'] } }; assert(get('post.like[2]', objectTarget), 'c');","source":"import { get, assert } from \"@universalweb/acid\";\nconst objectTarget = { post: { like: [\"a\", \"b\", \"c\"] } };\nassert(get(\"post.like[2]\", objectTarget), \"c\");\n"}],"name":"get","params":[{"tag":"param","name":"propertyString","type":"String","optional":false,"description":"- String used to retrieve properties.","source":"* {String} propertyString - String used to retrieve properties."},{"tag":"param","name":"target","type":"Object","optional":false,"description":"- Object which has a property retrieved from it.","source":"* {Object} target - Object which has a property retrieved from it."}],"type":"function","functionTag":"get","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns property from the given object.","source":"* {Object} - Returns property from the given object.\n\t *"}},"hasKeys":{"category":"object","description":"Checks to see if an object has all of the given property names.","examples":[{"tag":"example","optional":false,"description":"import { hasKeys, assert } from '@universalweb/acid'; assert(hasKeys({a: {b: { c: 1}}}, 'a', 'a.b', 'a.b.c'), true);","source":"import { hasKeys, assert } from \"@universalweb/acid\";\nassert(hasKeys({ a: { b: { c: 1 } } }, \"a\", \"a.b\", \"a.b.c\"), true);\n"}],"name":"hasKeys","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Source object to check for keys.","source":"* {Object} source - Source object to check for keys."},{"tag":"param","name":"properties","type":"...String","optional":false,"description":"- List of strings to check.","source":"* {...String} properties - List of strings to check."}],"type":"function","functionTag":"hasKeys","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"hasAnyKeys":{"category":"object","description":"Checks to see if an object has any of the given property names.","examples":[{"tag":"example","optional":false,"description":"import { hasAnyKeys, assert } from '@universalweb/acid'; assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.yes'), true); assert(hasAnyKeys({a: {b: { yes : 1}}}, 'no', 'nope', 'a.b.noped'), false);","source":"import { hasAnyKeys, assert } from \"@universalweb/acid\";\nassert(hasAnyKeys({ a: { b: { yes: 1 } } }, \"no\", \"nope\", \"a.b.yes\"), true);\nassert(hasAnyKeys({ a: { b: { yes: 1 } } }, \"no\", \"nope\", \"a.b.noped\"), false);\n"}],"name":"hasAnyKeys","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Source object to check for keys.","source":"* {Object} source - Source object to check for keys."},{"tag":"param","name":"properties","type":"Array","optional":false,"description":"- List of strings to check.","source":"* {Array} properties - List of strings to check."}],"type":"function","functionTag":"hasAnyKeys","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isPlainObject":{"category":"type","description":"Checks if the value is a plain object.","examples":[{"tag":"example","optional":false,"description":"import { isPlainObject } from '@universalweb/acid'; isPlainObject({}); // => true","source":"import { isPlainObject } from \"@universalweb/acid\";\nisPlainObject({});\n// => true\n"}],"name":"isPlainObject","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isPlainObject","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isConstructor":{"category":"type","description":"Checks to see if the constructor is that of a native object.","examples":[{"tag":"example","optional":false,"description":"import { isConstructor, assert } from '@universalweb/acid'; assert(isConstructor(2, Number), true);","source":"import { isConstructor, assert } from \"@universalweb/acid\";\nassert(isConstructor(2, Number), true);\n"}],"name":"isConstructor","params":[{"tag":"param","name":"target","type":"Object","optional":false,"description":"- The object to be checked.","source":"* {Object} target - The object to be checked."},{"tag":"param","name":"source","type":"Object","optional":false,"description":"- The source constructor object.","source":"* {Object} source - The source constructor object."}],"type":"function","functionTag":"isConstructor","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the target object.","source":"* {Object} - Returns the target object.\n\t *"}},"isBuffer":{"category":"type","description":"Checks if an object or objects are a Buffer.","examples":[{"tag":"example","optional":false,"description":"import { isBuffer, assert } from '@universalweb/acid'; assert(isBuffer(Buffer.from('test')), true);","source":"import { isBuffer, assert } from \"@universalweb/acid\";\nassert(isBuffer(Buffer.from(\"test\")), true);\n"}],"name":"isBuffer","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isBuffer","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isEqual":{"category":"utility","description":"Performs a deep comparison between two objects & determines if the value is the same using strict comparison.","examples":[{"tag":"example","optional":false,"description":"import { isEqual, assert } from '@universalweb/acid'; assert(isEqual({a: [1,2,3]}, {a: [1,2,3]}), true);","source":"import { isEqual, assert } from \"@universalweb/acid\";\nassert(isEqual({ a: [1, 2, 3] }, { a: [1, 2, 3] }), true);\n"}],"name":"isEqual","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Source object.","source":"* {*} source - Source object."},{"tag":"param","name":"target","type":"*","optional":false,"description":"- Object to be compared.","source":"* {*} target - Object to be compared."}],"type":"function","functionTag":"isEqual","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isMatchArray":{"category":"array","description":"Performs a shallow strict comparison between two objects.","examples":[{"tag":"example","optional":false,"description":"import { isMatchArray, assert } from '@universalweb/acid'; assert(isMatchArray([1, 2, 3], [1, 2, 3]), true);","source":"import { isMatchArray, assert } from \"@universalweb/acid\";\nassert(isMatchArray([1, 2, 3], [1, 2, 3]), true);\n"}],"name":"isMatchArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Source object.","source":"* {Array} source - Source object."},{"tag":"param","name":"compareArray","type":"Array","optional":false,"description":"- Object to compare to source.","source":"* {Array} compareArray - Object to compare to source."}],"type":"function","functionTag":"isMatchArray","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"largest":{"category":"array","description":"Plucks the largest value from an array.","examples":[{"tag":"example","optional":false,"description":"import { largest, assert } from '@universalweb/acid'; assert(largest([1,2,3]), 3);","source":"import { largest, assert } from \"@universalweb/acid\";\nassert(largest([1, 2, 3]), 3);\n"}],"name":"largest","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array from which largest number is taken.","source":"* {Array} array - Array from which largest number is taken."}],"type":"function","functionTag":"largest","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The largest number.","source":"* {Number} - The largest number.\n\t *"}},"last":{"category":"array","description":"Extracts item(s) from an array starting from the last item in the array.","examples":[{"tag":"example","optional":false,"description":"import { last, assert } from '@universalweb/acid'; assert(last([1, 2, 3, 4, 5] , 2), [4, 5]);","source":"import { last, assert } from \"@universalweb/acid\";\nassert(last([1, 2, 3, 4, 5], 2), [4, 5]);\n"}],"name":"last","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array to have items extracted from.","source":"* {Array} array - Array to have items extracted from."},{"tag":"param","name":"indexFrom","type":"Number","optional":true,"description":"- Value which determines how many items are extracted from the array.","source":"* {Number} [indexFrom = 0] - Value which determines how many items are extracted from the array.","default":"0"}],"type":"function","functionTag":"last","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Items from the array.","source":"* {Array} - Items from the array.\n\t *"}},"mapArray":{"category":"array","description":"Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.","examples":[{"tag":"example","optional":false,"description":"import { mapArray, assert } from '@universalweb/acid'; assert(mapArray([1, 2, 3], (item) => { return item * 2; }), [2, 4, 6]);","source":"import { mapArray, assert } from \"@universalweb/acid\";\nassert(\n mapArray([1, 2, 3], (item) => {\n return item * 2;\n }),\n [2, 4, 6],\n);\n"}],"name":"mapArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, the newly created array, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length."},{"tag":"param","name":"results","type":"Array","optional":false,"description":"- Array that will be used to assign results.","source":"* {Array} results - Array that will be used to assign results."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisCall - An object to be given each time to the iteratee."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"mapArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array of the same calling array's type.","source":"* {Array} - An array of the same calling array's type.\n\t *"}},"mapAsyncArray":{"category":"array","description":"Asynchronously iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array.","examples":[{"tag":"example","optional":false,"description":"import { mapAsyncArray, assert } from '@universalweb/acid'; assert(await mapAsyncArray([1, 2, 3], async (item) => { return item * 2; }), [2, 4, 6]);","source":"import { mapAsyncArray, assert } from \"@universalweb/acid\";\nassert(\n await mapAsyncArray([1, 2, 3], async (item) => {\n return item * 2;\n }),\n [2, 4, 6],\n);\n"}],"name":"mapAsyncArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, the newly created array, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length."}],"type":"function","isAsync":true,"functionTag":"mapAsyncArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array of the same calling array's type.","source":"* {Array} - An array of the same calling array's type.\n\t *"}},"mapRightArray":{"category":"array","description":"Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array in reverse.","examples":[{"tag":"example","optional":false,"description":"import { mapRightArray, assert } from '@universalweb/acid'; assert(mapRightArray([1, 2, 3], (item) => { return item * 2; }), [6, 4, 2]);","source":"import { mapRightArray, assert } from \"@universalweb/acid\";\nassert(\n mapRightArray([1, 2, 3], (item) => {\n return item * 2;\n }),\n [6, 4, 2],\n);\n"}],"name":"mapRightArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, the newly created array, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length."},{"tag":"param","name":"results","type":"Array","optional":false,"description":"- Array that will be used to assign results. Default value is a new empty array.","source":"* {Array} results - Array that will be used to assign results. Default value is a new empty array."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"mapRightArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array of the same calling array's type.","source":"* {Array} - An array of the same calling array's type.\n\t *"}},"mapWhile":{"category":"array","description":"Iterates through the given and creates an object with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"import { mapWhile, assert } from '@universalweb/acid'; assert(mapWhile([1, 2, 0], (item) => { return Boolean(item); }), [1, 2]);","source":"import { mapWhile, assert } from \"@universalweb/acid\";\nassert(\n mapWhile([1, 2, 0], (item) => {\n return Boolean(item);\n }),\n [1, 2],\n);\n"}],"name":"mapWhile","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, the newly created array, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, the newly created array, calling array, and array length."},{"tag":"param","name":"results","type":"Array","optional":false,"description":"- Array that will be used to assign results. Default value is a new empty array.","source":"* {Array} results - Array that will be used to assign results. Default value is a new empty array."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"mapWhile","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with properties that passed the test.","source":"* {Array} - An array with properties that passed the test.\n\t *"}},"subtract":{"category":"math","description":"Subtracts the subtrahend (second argument) from the minuend (first argument).","examples":[{"tag":"example","optional":false,"description":"import { subtract, assert } from '@universalweb/acid'; assert(subtract(3, 1), 2);","source":"import { subtract, assert } from \"@universalweb/acid\";\nassert(subtract(3, 1), 2);\n"}],"name":"subtract","params":[{"tag":"param","name":"minuend","type":"Number","optional":false,"description":"- The minuend.","source":"* {Number} minuend - The minuend."},{"tag":"param","name":"subtrahend","type":"Number","optional":false,"description":"- The subtrahend.","source":"* {Number} subtrahend - The subtrahend."}],"type":"function","functionTag":"subtract","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns the difference.","source":"* {Number} - Returns the difference.\n\t *"}},"sortNumberAscending":{"category":"array","description":"Sorts an array of numbers in ascending order. Smallest to largest.","examples":[{"tag":"example","optional":false,"description":"import { sortNumberAscending, assert } from '@universalweb/acid'; assert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);","source":"import { sortNumberAscending, assert } from \"@universalweb/acid\";\nassert(sortNumberAscending([10, 0, 2, 1]), [0, 1, 2, 10]);\n"}],"name":"sortNumberAscending","params":[{"tag":"param","name":"numberList","type":"Array","optional":false,"description":"- Array of numbers.","source":"* {Array} numberList - Array of numbers."}],"type":"function","functionTag":"sortNumberAscending","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The array this method was called on.","source":"* {Array} - The array this method was called on.\n\t *"}},"partition":{"category":"array","description":"Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.","examples":[{"tag":"example","optional":false,"description":"import { partition, assert } from '@universalweb/acid'; const result = partition([ {user: 'barney', age: 36, active: false}, {user: 'fred', age: 40, active: true}, {user: 'pebbles', age: 1, active: false} ], (item) => { return item.active; }); assert(result, [{\"user\":\"fred\",\"age\":40,\"active\":true}], [{\"user\":\"barney\",\"age\":36,\"active\":false}, {\"user\":\"pebbles\",\"age\":1,\"active\":false}]);","source":"import { partition, assert } from \"@universalweb/acid\";\nconst result = partition(\n [\n { user: \"barney\", age: 36, active: false },\n { user: \"fred\", age: 40, active: true },\n { user: \"pebbles\", age: 1, active: false },\n ],\n (item) => {\n return item.active;\n },\n);\nassert(\n result,\n [{ user: \"fred\", age: 40, active: true }],\n [\n { user: \"barney\", age: 36, active: false },\n { user: \"pebbles\", age: 1, active: false },\n ],\n);\n"}],"name":"partition","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Takes an array to split.","source":"* {Array} array - Takes an array to split."},{"tag":"param","name":"predicate","type":"Function","optional":false,"description":"- Function run on each item in the array.","source":"* {Function} predicate - Function run on each item in the array."}],"type":"function","functionTag":"partition","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"One array split into two arrays.","source":"* {Array} - One array split into two arrays.\n\t *"}},"subtractReverse":{"category":"math","description":"Subtracts the subtrahend (first argument) from the minuend (second argument). The arguments are reversed compared to the subtract function.","examples":[{"tag":"example","optional":false,"description":"import { subtractReverse, assert } from '@universalweb/acid'; assert(subtractReverse(1, 3), 2);","source":"import { subtractReverse, assert } from \"@universalweb/acid\";\nassert(subtractReverse(1, 3), 2);\n"}],"name":"subtractReverse","params":[{"tag":"param","name":"minuend","type":"Number","optional":false,"description":"- The minuend.","source":"* {Number} minuend - The minuend."},{"tag":"param","name":"subtrahend","type":"Number","optional":false,"description":"- The subtrahend.","source":"* {Number} subtrahend - The subtrahend."}],"type":"function","functionTag":"subtractReverse","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns the difference.","source":"* {Number} - Returns the difference.\n\t *"}},"sortNumberDescening":{"category":"array","description":"Sorts an array of numbers in descending order. Largest to smallest.","examples":[{"tag":"example","optional":false,"description":"import { sortNumberDescening, assert } from '@universalweb/acid'; assert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);","source":"import { sortNumberDescening, assert } from \"@universalweb/acid\";\nassert(sortNumberDescening([10, 0, 2, 1]), [10, 2, 1, 0]);\n"}],"name":"sortNumberDescening","params":[{"tag":"param","name":"numberList","type":"Array","optional":false,"description":"- Array of numbers.","source":"* {Array} numberList - Array of numbers."}],"type":"function","functionTag":"sortNumberDescening","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The array this method was called on.","source":"* {Array} - The array this method was called on.\n\t *"}},"remove":{"category":"array","description":"Removes all occurrences of the passed in items from the array and returns the array. This mutates the given array. Clone the array if you desire to avoid mutation.","examples":[{"tag":"example","optional":false,"description":"remove([1, 2, 3, 3, 4, 3, 5], 1); // => [2, 3, 3, 4, 3, 5]","source":"remove([1, 2, 3, 3, 4, 3, 5], 1);\n// => [2, 3, 3, 4, 3, 5]\n"},{"tag":"example","optional":false,"description":"remove([3, 3, 4, 5], 3, 4); // => [5]","source":"remove([3, 3, 4, 5], 3, 4);\n// => [5]\n"}],"name":"remove","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array to be mutated.","source":"* {Array} array - Array to be mutated."},{"tag":"param","name":"removeThese","type":"String|Array","optional":false,"description":"- Items to remove from the array.","source":"* {String|Array} removeThese - Items to remove from the array."}],"type":"function","functionTag":"remove","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The array this method was called on.","source":"* {Array} - The array this method was called on.\n\t *"}},"removeBy":{"category":"array","description":"Removes items that pass the method's test. This mutates the given array. Clone the array if you desire to avoid mutation.","examples":[{"tag":"example","optional":false,"description":"removeBy([1, 2, 3, 3, 4, 3, 5], (item) => { return Boolean(item % 2);}); // => [2, 4]","source":"removeBy([1, 2, 3, 3, 4, 3, 5], (item) => {\n return Boolean(item % 2);\n});\n// => [2, 4]\n"}],"name":"removeBy","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array to be mutated.","source":"* {Array} source - Array to be mutated."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Function used to check object. Return true to remove the value.","source":"* {Function} iteratee - Function used to check object. Return true to remove the value."}],"type":"function","functionTag":"removeBy","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The array this method was called on.","source":"* {Array} - The array this method was called on.\n\t *"}},"rest":{"category":"array","description":"Extracts all items in array except the first and last item.","examples":[{"tag":"example","optional":false,"description":"rest([1, 2, 3, 4, 5]); // => [2, 3, 4, 5]","source":"rest([1, 2, 3, 4, 5]);\n// => [2, 3, 4, 5]\n"}],"name":"rest","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array to be sliced.","source":"* {Array} array - Array to be sliced."}],"type":"function","functionTag":"rest","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns the aggregated array.","source":"* {Array} - Returns the aggregated array.\n\t *"}},"right":{"category":"array","description":"Get the item at the supplied index starting at the end of the array.","examples":[{"tag":"example","optional":false,"description":"right([1, 2, 3, 4, 5] , 1); // => 4","source":"right([1, 2, 3, 4, 5], 1);\n// => 4\n"}],"name":"right","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array to be sliced.","source":"* {Array} source - Array to be sliced."},{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- Amount from the right.","source":"* {Number} amount - Amount from the right."}],"type":"function","functionTag":"right","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns the object at the evaluated position.","source":"* {*} - Returns the object at the evaluated position.\n\t *"}},"randomInt":{"category":"number","description":"Produces a random whole number between min (included) and max (excluded). Do not use for security or encryption.","examples":[{"tag":"example","optional":false,"description":"import { randomInt, assert } from '@universalweb/acid'; assert(randomInt(10, 0), (value) => { return value > 0 && value < 10;});","source":"import { randomInt, assert } from \"@universalweb/acid\";\nassert(randomInt(10, 0), (value) => {\n return value > 0 && value < 10;\n});\n"}],"name":"randomInt","params":[{"tag":"param","name":"max","type":"Number","optional":false,"description":"- The highest possible value for the random number.","source":"* {Number} max - The highest possible value for the random number."},{"tag":"param","name":"min","type":"Number","optional":true,"description":"- Establishes lowest possible value for the random number.","source":"* {Number} [min = 0] - Establishes lowest possible value for the random number.","default":"0"}],"type":"function","functionTag":"randomInt","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns random integer between the max and min range.","source":"* {Number} - Returns random integer between the max and min range.\n\t *"}},"toArray":{"category":"array","description":"The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object. This just has a null & undefined safety check.","examples":[{"tag":"example","optional":false,"description":"import { toArray, assert } from '@universalweb/acid'; assert(toArray(new Map([[1, 2]])), [[1, 2]]);","source":"import { toArray, assert } from \"@universalweb/acid\";\nassert(toArray(new Map([[1, 2]])), [[1, 2]]);\n"}],"name":"toArray","params":[{"tag":"param","name":"arrayLike","type":"*","optional":false,"description":"- Array like object.","source":"* {*} arrayLike - Array like object."},{"tag":"param","name":"mapFn","type":"Function","optional":false,"description":"- Function to map over the array.","source":"* {Function} mapFn - Function to map over the array."},{"tag":"param","name":"thisArg","type":"*","optional":false,"description":"- MapFn's \"this\".","source":"* {*} thisArg - MapFn's \"this\"."}],"type":"function","functionTag":"toArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"New array.","source":"* {Array} - New array.\n\t *"}},"isNumberEqual":{"category":"number","description":"Checks if two numbers are the same.","examples":[{"tag":"example","optional":false,"description":"import { isNumberEqual, assert } from '@universalweb/acid'; assert(isNumberEqual(0, 0), true);","source":"import { isNumberEqual, assert } from \"@universalweb/acid\";\nassert(isNumberEqual(0, 0), true);\n"}],"name":"isNumberEqual","params":[{"tag":"param","name":"source","type":"Number","optional":false,"description":"- Number to be checked.","source":"* {Number} source - Number to be checked."},{"tag":"param","name":"target","type":"Number","optional":false,"description":"- Number to be checked.","source":"* {Number} target - Number to be checked."}],"type":"function","functionTag":"isNumberEqual","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"shuffle":{"category":"array","description":"Shuffle an array and return a new array.","examples":[{"tag":"example","optional":false,"description":"import { shuffle, assert } from '@universalweb/acid'; assert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);","source":"import { shuffle, assert } from \"@universalweb/acid\";\nassert(shuffle([1, 2, 3, 4]), [3, 4, 2, 1]);\n"}],"name":"shuffle","params":[{"tag":"param","name":"target","type":"Array","optional":false,"description":"- Target Array to be shuffled.","source":"* {Array} target - Target Array to be shuffled."},{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The amount of times to shuffle the array.","source":"* {Number} amount - The amount of times to shuffle the array."}],"type":"function","functionTag":"shuffle","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with the shuffled results.","source":"* {Array} - An array with the shuffled results.\n\t *"}},"sample":{"category":"array","description":"Produce a random sample from the list. Pass a number to return n random elements from the list. Otherwise a single random item will be returned.","examples":[{"tag":"example","optional":false,"description":"sample([1, 2, 3, 4] , 2); // => [1, 3]","source":"sample([1, 2, 3, 4], 2);\n// => [1, 3]\n"}],"name":"sample","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The array to pull sample(s) from.","source":"* {Array} source - The array to pull sample(s) from."},{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The amount of samples to take.","source":"* {Number} amount - The amount of samples to take."}],"type":"function","functionTag":"sample","test":{"tag":"test","optional":false,"description":"(async () => { const tempResult = sample([1, 2] , 2); return assert(tempResult.includes(1) && tempResult.includes(2), true); });","source":"* \t * (async () => {\n\t * const tempResult = sample([1, 2] , 2);\n\t * return assert(tempResult.includes(1) && tempResult.includes(2), true);\n\t * });\n\t *"},"returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array of randomly pulled samples.","source":"* {Array} - An array of randomly pulled samples.\n\t *"}},"smallest":{"category":"array","description":"Plucks the smallest value from an array.","examples":[{"tag":"example","optional":false,"description":"smallest([1,2,3]); // => 1","source":"smallest([1, 2, 3]);\n// => 1\n"}],"name":"smallest","params":[{"tag":"param","name":"array","type":"Array","optional":false,"description":"- Array from which smallest number is taken.","source":"* {Array} array - Array from which smallest number is taken."}],"type":"function","functionTag":"smallest","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The smallest number.","source":"* {Number} - The smallest number.\n\t *"}},"getNumberInsertIndex":{"category":"array","description":"What index should the number be inserted at to keep a sorted array still sorted.","examples":[{"tag":"example","optional":false,"description":"import { getNumberInsertIndex, assert } from '@universalweb/acid'; assert(getNumberInsertIndex([30, 39, 50], 40), 1);","source":"import { getNumberInsertIndex, assert } from \"@universalweb/acid\";\nassert(getNumberInsertIndex([30, 39, 50], 40), 1);\n"}],"name":"getNumberInsertIndex","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array to be checked.","source":"* {Array} source - Array to be checked."},{"tag":"param","name":"target","type":"Number","optional":false,"description":"- Number to check where to be inserted.","source":"* {Number} target - Number to check where to be inserted."}],"type":"function","functionTag":"getNumberInsertIndex","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The index at which to insert.","source":"* {Number} - The index at which to insert.\n\t *"}},"take":{"category":"array","description":"Returns a shallow copy of the array up to an amount.","examples":[{"tag":"example","optional":false,"description":"import { take, assert } from '@universalweb/acid'; assert(take([1,2,3], 2), [1, 2]);","source":"import { take, assert } from \"@universalweb/acid\";\nassert(take([1, 2, 3], 2), [1, 2]);\n"}],"name":"take","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The source array to take from.","source":"* {Array} source - The source array to take from."},{"tag":"param","name":"endIndex","type":"Array","optional":true,"description":"- Zero-based index before which to end extraction.","source":"* {Array} [endIndex = 1] - Zero-based index before which to end extraction.","default":"1"}],"type":"function","functionTag":"take","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The aggregated array.","source":"* {Array} - The aggregated array.\n\t *"}},"takeRight":{"category":"array","description":"Returns a shallow copy of the array up to an amount starting from the right.","examples":[{"tag":"example","optional":false,"description":"import { takeRight, assert } from '@universalweb/acid'; assert(takeRight([1,2,3], 2), [2, 3]);","source":"import { takeRight, assert } from \"@universalweb/acid\";\nassert(takeRight([1, 2, 3], 2), [2, 3]);\n"}],"name":"takeRight","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The source array to take right from.","source":"* {Array} source - The source array to take right from."},{"tag":"param","name":"indexRight","type":"Array","optional":true,"description":"- Zero-based index from the right to begin extraction.","source":"* {Array} [indexRight = 1] - Zero-based index from the right to begin extraction.","default":"1"}],"type":"function","functionTag":"takeRight","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The aggregated array.","source":"* {Array} - The aggregated array.\n\t *"}},"unique":{"category":"array","description":"Filters the array down to unique elements.","examples":[{"tag":"example","optional":false,"description":"unique([1, 2, 2, 4]); // => [1, 2, 4]","source":"unique([1, 2, 2, 4]);\n// => [1, 2, 4]\n"}],"name":"unique","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The array to be filtered.","source":"* {Array} source - The array to be filtered."},{"tag":"param","name":"isSorted","type":"Boolean","optional":false,"description":"- Flag which means the array is already sorted.","source":"* {Boolean} isSorted - Flag which means the array is already sorted."}],"type":"function","functionTag":"unique","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The filtered array.","source":"* {Array} - The filtered array.\n\t *"}},"union":{"category":"array","description":"Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.","examples":[{"tag":"example","optional":false,"description":"union([1,2,4], [1,2,3]); // => [1, 2, 4, 3]","source":"union([1, 2, 4], [1, 2, 3]);\n// => [1, 2, 4, 3]\n"}],"name":"union","params":[{"tag":"param","name":"arrays","type":"...Array","optional":false,"description":"- The arrays to be evaluated.","source":"* {...Array} arrays - The arrays to be evaluated."}],"type":"function","functionTag":"union","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The aggregated array.","source":"* {Array} - The aggregated array.\n\t *"}},"untilFalseArray":{"category":"array","description":"Loops through an array invoking an iteratee with (value, key). If the iteratee always yields true then true is returned. If and when the iteratee yields false the loop stops & false is returned.","examples":[{"tag":"example","optional":false,"description":"import { untilFalseArray, assert } from '@universalweb/acid'; assert(untilFalseArray([true, true, false], (item) => { return item; }), false); assert(untilFalseArray([true, true, true], (item) => { return item; }), true);","source":"import { untilFalseArray, assert } from \"@universalweb/acid\";\nassert(\n untilFalseArray([true, true, false], (item) => {\n return item;\n }),\n false,\n);\nassert(\n untilFalseArray([true, true, true], (item) => {\n return item;\n }),\n true,\n);\n"}],"name":"untilFalseArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The array to iterate over.","source":"* {Array} source - The array to iterate over."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item & key and expects a boolean to be returned.","source":"* {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned."}],"type":"function","functionTag":"untilFalseArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns true if all returns are true or false if one value returns false.","source":"* {Array} - Returns true if all returns are true or false if one value returns false.\n\t *"}},"untilTrueArray":{"category":"array","description":"Loops through an array invoking an iteratee with (value, key). If the iteratee always yields false then true is returned. If and when the iteratee yields true the loop stops & false is returned.","examples":[{"tag":"example","optional":false,"description":"import { untilTrueArray, assert } from '@universalweb/acid'; assert(untilTrueArray([true], (item) => { return item; }), false); assert(untilTrueArray([true, true, true], (item) => { return item; }), true);","source":"import { untilTrueArray, assert } from \"@universalweb/acid\";\nassert(\n untilTrueArray([true], (item) => {\n return item;\n }),\n false,\n);\nassert(\n untilTrueArray([true, true, true], (item) => {\n return item;\n }),\n true,\n);\n"}],"name":"untilTrueArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The array to iterate over.","source":"* {Array} source - The array to iterate over."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item & key and expects a boolean to be returned.","source":"* {Function} iteratee - Transformation function which is passed item & key and expects a boolean to be returned."}],"type":"function","functionTag":"untilTrueArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns true if all returns are false or false if one value returns true.","source":"* {Array} - Returns true if all returns are false or false if one value returns true.\n\t *"}},"whileCompactMap":{"category":"array","description":"Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object. Re-checks the length each loop.","examples":[{"tag":"example","optional":false,"description":"import { whileCompactMap, assert } from '@universalweb/acid'; assert(whileCompactMap([1, 2, 3, false, undefined, null], (item) => { return item; }), [1, 2, 3, false]);","source":"import { whileCompactMap, assert } from \"@universalweb/acid\";\nassert(\n whileCompactMap([1, 2, 3, false, undefined, null], (item) => {\n return item;\n }),\n [1, 2, 3, false],\n);\n"}],"name":"whileCompactMap","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, and array length."},{"tag":"param","name":"results","type":"Array","optional":false,"description":"- Array that will be used to assign results. Default value is a new empty array.","source":"* {Array} results - Array that will be used to assign results. Default value is a new empty array."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"whileCompactMap","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"whileEachArray":{"category":"array","description":"Iterates through the given array but re-checks the length each loop. Usefull while mutating the same array being looped over.","examples":[{"tag":"example","optional":false,"description":"import { whileEachArray, assert } from '@universalweb/acid'; const list = []; whileEachArray([1, 2, 3], (item, index) => { list[index] = item; }); assert(list, [1, 2, 3]);","source":"import { whileEachArray, assert } from \"@universalweb/acid\";\nconst list = [];\nwhileEachArray([1, 2, 3], (item, index) => {\n list[index] = item;\n});\nassert(list, [1, 2, 3]);\n"}],"name":"whileEachArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, and array length."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"whileEachArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"whileMapArray":{"category":"array","description":"Iterates through the calling array and creates an object with the results of the iteratee on every element in the calling array. Re-checks the length each loop.","examples":[{"tag":"example","optional":false,"description":"import { whileMapArray, assert } from '@universalweb/acid'; assert(whileMapArray([1, 2, 3], (item, index, source) => { if (index === 0) { source.push(4); } return item; }), [1, 2, 3, 4]);","source":"import { whileMapArray, assert } from \"@universalweb/acid\";\nassert(\n whileMapArray([1, 2, 3], (item, index, source) => {\n if (index === 0) {\n source.push(4);\n }\n return item;\n }),\n [1, 2, 3, 4],\n);\n"}],"name":"whileMapArray","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, and array length."},{"tag":"param","name":"results","type":"Array","optional":false,"description":"- Array that will be used to assign results. Default value is a new empty array.","source":"* {Array} results - Array that will be used to assign results. Default value is a new empty array."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"whileMapArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"without":{"category":"array","description":"Returns a copy of the array with all instances of the values removed.","examples":[{"tag":"example","optional":false,"description":"import { without, assert } from '@universalweb/acid'; assert(without([1, 2, 2, 4], [4]), [1, 2, 2]);","source":"import { without, assert } from \"@universalweb/acid\";\nassert(without([1, 2, 2, 4], [4]), [1, 2, 2]);\n"}],"name":"without","params":[{"tag":"param","name":"target","type":"Array","optional":false,"description":"- The target array to be filtered.","source":"* {Array} target - The target array to be filtered."},{"tag":"param","name":"sources","type":"Array","optional":false,"description":"- Items to be removed.","source":"* {Array} sources - Items to be removed."}],"type":"function","functionTag":"without","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The target array filtered.","source":"* {Array} - The target array filtered.\n\t *"}},"xor":{"category":"array","description":"Creates an array that is the symmetric difference of the provided arrays.","examples":[{"tag":"example","optional":false,"description":"xor([2, 1], [2, 3, 5], [6]); // => [1, 3, 5, 6]","source":"xor([2, 1], [2, 3, 5], [6]);\n// => [1, 3, 5, 6]\n"}],"name":"xor","params":[{"tag":"param","name":"arrays","type":"...Array","optional":false,"description":"- The array(s) to be filtered.","source":"* {...Array} arrays - The array(s) to be filtered."}],"type":"function","functionTag":"xor","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The filtered array.","source":"* {Array} - The filtered array.\n\t *"}},"zip":{"category":"array","description":"Merges together the values of each of the arrays with the values at the corresponding position.","examples":[{"tag":"example","optional":false,"description":"zip(['a', 'b'], [1, 2], [true, false]); // => [['a', 1, true], ['b', 2, false]]","source":"zip([\"a\", \"b\"], [1, 2], [true, false]);\n// => [['a', 1, true], ['b', 2, false]]\n"}],"name":"zip","params":[{"tag":"param","name":"arrays","type":"Array","optional":false,"description":"- The arrays to process.","source":"* {Array} arrays - The arrays to process."}],"type":"function","functionTag":"zip","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns the new array of regrouped elements.","source":"* {Array} - Returns the new array of regrouped elements.\n\t *"}},"unZip":{"category":"array","description":"Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip array configuration.","examples":[{"tag":"example","optional":false,"description":"unZip([['a', 1, true], ['b', 2, false]]); // => [['a', 'b'], [1, 2], [true, false]]","source":"unZip([\n [\"a\", 1, true],\n [\"b\", 2, false],\n]);\n// => [['a', 'b'], [1, 2], [true, false]]\n"}],"name":"unZip","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- The array of grouped elements to process.","source":"* {Array} source - The array of grouped elements to process."}],"type":"function","functionTag":"unZip","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns the new array of regrouped elements.","source":"* {Array} - Returns the new array of regrouped elements.\n\t *"}},"ensureBuffer":{"category":"buffer","description":"Ensures the source is a Buffer if not the source is used to create a buffer using Buffer.from else if there's no source an empty Buffer is returned with Buffer.alloc(0). Keep in mind not all objects can be used to create a Buffer.","examples":[{"tag":"example","optional":false,"description":"import { isBuffer, ensureBuffer, assert } from '@universalweb/acid'; assert(isBuffer(ensureBuffer('test')), true);","source":"import { isBuffer, ensureBuffer, assert } from \"@universalweb/acid\";\nassert(isBuffer(ensureBuffer(\"test\")), true);\n"}],"name":"ensureBuffer","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"ensureBuffer","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns an array.","source":"* {Array} - Returns an array.\n\t *"}},"clearBuffer":{"category":"buffer","description":"Clears the values out of a buffer.","examples":[{"tag":"example","optional":false,"description":"import { clearBuffer, assert } from '@universalweb/acid'; assert(clearBuffer(Buffer.from([1,'B', 'Cat'])), Buffer.from([]));","source":"import { clearBuffer, assert } from \"@universalweb/acid\";\nassert(clearBuffer(Buffer.from([1, \"B\", \"Cat\"])), Buffer.from([]));\n"}],"name":"clearBuffer","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Takes an array to be emptied.","source":"* {Array} source - Takes an array to be emptied."}],"type":"function","functionTag":"clearBuffer","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"countBy":{"category":"collection","description":"Creates an object composed of keys generated from the results of running each element of collection through iteratee.","examples":[{"tag":"example","optional":false,"description":"import { countBy, assert } from '@universalweb/acid'; assert(countBy([{a:1}, {a:3}], (item) => { return 'a';}), {a: 2});","source":"import { countBy, assert } from \"@universalweb/acid\";\nassert(\n countBy([{ a: 1 }, { a: 3 }], (item) => {\n return \"a\";\n }),\n { a: 2 },\n);\n"}],"name":"countBy","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Array of objects.","source":"* {Array} collection - Array of objects."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- The iteratee to transform keys.","source":"* {Function} iteratee - The iteratee to transform keys."}],"type":"function","functionTag":"countBy","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the composed aggregate object.","source":"* {Object} - Returns the composed aggregate object.\n\t *"}},"countKey":{"category":"collection","description":"Count the amount of times a key is present in a collection.","examples":[{"tag":"example","optional":false,"description":"import { countKey, assert } from '@universalweb/acid'; assert(countKey([{a:1}, {a:3}], 'a'), 2);","source":"import { countKey, assert } from \"@universalweb/acid\";\nassert(countKey([{ a: 1 }, { a: 3 }], \"a\"), 2);\n"}],"name":"countKey","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Array of objects.","source":"* {Array} collection - Array of objects."},{"tag":"param","name":"propertyName","type":"Function","optional":false,"description":"- The name of the key.","source":"* {Function} propertyName - The name of the key."}],"type":"function","functionTag":"countKey","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The count.","source":"* {Number} - The count.\n\t *"}},"countWithoutKey":{"category":"collection","description":"Count the amount of times a key is not present in a collection.","examples":[{"tag":"example","optional":false,"description":"import { countWithoutKey, assert } from '@universalweb/acid'; assert(countWithoutKey([{a:1}, {a:3}], 'b'), 2);","source":"import { countWithoutKey, assert } from \"@universalweb/acid\";\nassert(countWithoutKey([{ a: 1 }, { a: 3 }], \"b\"), 2);\n"}],"name":"countWithoutKey","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Array of objects.","source":"* {Array} collection - Array of objects."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- The name of the key.","source":"* {String} propertyName - The name of the key."}],"type":"function","functionTag":"countWithoutKey","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The count.","source":"* {Number} - The count.\n\t *"}},"findIndex":{"category":"collection","description":"Finds an object in a collection by the given id and property name and returns the array index of the object.","examples":[{"tag":"example","optional":false,"description":"findIndex([{id: 1}, {id: 2}], 1); // => 0","source":"findIndex([{ id: 1 }, { id: 2 }], 1);\n// => 0\n"}],"name":"findIndex","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be checked for an item.","source":"* {Array} collection - Collection to be checked for an item."},{"tag":"param","name":"id","type":"Number|string","optional":false,"description":"- The value to look for.","source":"* {Number|string} id - The value to look for."},{"tag":"param","name":"propertyName","type":"String","optional":true,"description":"- The name of the property to compare.","source":"* {String} [propertyName = 'id'] - The name of the property to compare.","default":"'id'"}],"type":"function","functionTag":"findIndex","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The index of the object.","source":"* {Number} - The index of the object.\n\t *"}},"findItem":{"category":"collection","description":"Finds an object in a collection by the given id and property name.","examples":[{"tag":"example","optional":false,"description":"findItem([{id: 1}, {id: 2}], 1); // => {id: 1}","source":"findItem([{ id: 1 }, { id: 2 }], 1);\n// => {id: 1}\n"}],"name":"findItem","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be checked for an item.","source":"* {Array} collection - Collection to be checked for an item."},{"tag":"param","name":"id","type":"Number|string","optional":false,"description":"- The value to look for.","source":"* {Number|string} id - The value to look for."},{"tag":"param","name":"propertyName","type":"String","optional":true,"description":"- The name of the property to compare.","source":"* {String} [propertyName = 'id'] - The name of the property to compare.","default":"'id'"}],"type":"function","functionTag":"findItem","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"The found object.","source":"* {Object} - The found object.\n\t *"}},"sortCollectionDescending":{"category":"collection","description":"Sorts an array in place using a key in descending order.","examples":[{"tag":"example","optional":false,"description":"import { sortCollectionDescending, assert } from '@universalweb/acid'; const result = [{id: 1}, {id: 0}]; const collect = [{id: 0}, {id: 1}]; const prop = 'id'; assert(sortCollectionDescending(collect, prop), result);","source":"import { sortCollectionDescending, assert } from \"@universalweb/acid\";\nconst result = [{ id: 1 }, { id: 0 }];\nconst collect = [{ id: 0 }, { id: 1 }];\nconst prop = \"id\";\nassert(sortCollectionDescending(collect, prop), result);\n"}],"name":"sortCollectionDescending","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be sorted.","source":"* {Array} collection - Collection to be sorted."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- The property name to sort by based on it's value.","source":"* {String} propertyName - The property name to sort by based on it's value."},{"tag":"param","name":"ifMatch","type":"Function","optional":false,"description":"- A function which returns a number for the sort function if two object properties match.","source":"* {Function} ifMatch - A function which returns a number for the sort function if two object properties match."}],"type":"function","functionTag":"sortCollectionDescending","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The sorted array and or a clone of the array sorted.","source":"* {Array} - The sorted array and or a clone of the array sorted.\n\t *"}},"sortCollectionAlphabetically":{"category":"collection","description":"Perform alphabetical A-Z sort on a collection with the provided key name. Mutates the array.","examples":[{"tag":"example","optional":false,"description":"import { sortCollectionAlphabetically, assert } from '@universalweb/acid'; const result = [{\"letter\":\"a\"},{\"letter\":\"c\", g: 0},{\"letter\":\"c\", g: 2}, {letter:'f'}]; const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\", g: 2}, {letter:'c', g: 0}]; const prop = 'letter'; function ifMatchSort(c, n) { if (c.g < n.g) { return -1; } if (c.g > n.g) { return 1; } } assert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);","source":"import { sortCollectionAlphabetically, assert } from \"@universalweb/acid\";\nconst result = [\n { letter: \"a\" },\n { letter: \"c\", g: 0 },\n { letter: \"c\", g: 2 },\n { letter: \"f\" },\n];\nconst collect = [\n { letter: \"a\" },\n { letter: \"f\" },\n { letter: \"c\", g: 2 },\n { letter: \"c\", g: 0 },\n];\nconst prop = \"letter\";\nfunction ifMatchSort(c, n) {\n if (c.g < n.g) {\n return -1;\n }\n if (c.g > n.g) {\n return 1;\n }\n}\nassert(sortCollectionAlphabetically(collect, prop, ifMatchSort), result);\n"}],"name":"sortCollectionAlphabetically","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be sorted.","source":"* {Array} collection - Collection to be sorted."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- Name of property to compare.","source":"* {String} propertyName - Name of property to compare."},{"tag":"param","name":"ifMatch","type":"Function","optional":false,"description":"- A function which returns a number for the sort function if two object properties match.","source":"* {Function} ifMatch - A function which returns a number for the sort function if two object properties match."}],"type":"function","functionTag":"sortCollectionAlphabetically","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The sorted array.","source":"* {Array} - The sorted array.\n\t *"}},"sortCollectionAscending":{"category":"collection","description":"Sorts an array in place using a key in ascending order.","examples":[{"tag":"example","optional":false,"description":"import { sortCollectionAscending, assert } from '@universalweb/acid'; const result = [{id: 0}, {id: 1}]; const collect = [{id: 1}, {id: 0}]; const prop = 'id'; assert(sortCollectionAscending(collect, prop), result);","source":"import { sortCollectionAscending, assert } from \"@universalweb/acid\";\nconst result = [{ id: 0 }, { id: 1 }];\nconst collect = [{ id: 1 }, { id: 0 }];\nconst prop = \"id\";\nassert(sortCollectionAscending(collect, prop), result);\n"}],"name":"sortCollectionAscending","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be sorted.","source":"* {Array} collection - Collection to be sorted."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- The property name to sort by based on it's value.","source":"* {String} propertyName - The property name to sort by based on it's value."},{"tag":"param","name":"ifMatch","type":"Function","optional":false,"description":"- A function which returns a number for the sort function if two object properties match.","source":"* {Function} ifMatch - A function which returns a number for the sort function if two object properties match."}],"type":"function","functionTag":"sortCollectionAscending","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The sorted array and or a clone of the array sorted.","source":"* {Array} - The sorted array and or a clone of the array sorted.\n\t *"}},"getHighest":{"category":"collection","description":"Sorts an array in place using a key from oldest to newest and returns the oldest. Does not mutate the array.","examples":[{"tag":"example","optional":false,"description":"import { getHighest, assert } from '@universalweb/acid'; assert(getHighest([{id: 1}, {id: 0}], 'id'), {id: 0});","source":"import { getHighest, assert } from \"@universalweb/acid\";\nassert(getHighest([{ id: 1 }, { id: 0 }], \"id\"), { id: 0 });\n"}],"name":"getHighest","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be sorted.","source":"* {Array} collection - Collection to be sorted."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- The property name to sort by based on it's value.","source":"* {String} propertyName - The property name to sort by based on it's value."}],"type":"function","functionTag":"getHighest","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"The newest object in the collection.","source":"* {Object} - The newest object in the collection.\n\t *"}},"getLowest":{"category":"collection","description":"Sorts an array in place using a key from newest to oldest and returns the latest. Does not mutate the array.","examples":[{"tag":"example","optional":false,"description":"import { getLowest, assert } from '@universalweb/acid'; assert(getLowest([{id: 1}, {id: 0}], 'id'), {id: 1});","source":"import { getLowest, assert } from \"@universalweb/acid\";\nassert(getLowest([{ id: 1 }, { id: 0 }], \"id\"), { id: 1 });\n"}],"name":"getLowest","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be sorted.","source":"* {Array} collection - Collection to be sorted."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- The property name to sort by based on it's value.","source":"* {String} propertyName - The property name to sort by based on it's value."}],"type":"function","functionTag":"getLowest","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"The newest object in the collection.","source":"* {Object} - The newest object in the collection.\n\t *"}},"groupBy":{"category":"collection","description":"Creates an object composed of keys generated from the results of running each element of collection thru iteratee. The order of grouped values is determined by the order they occur in collection. The corresponding value of each key is an array of elements responsible for generating the key.","examples":[{"tag":"example","optional":false,"description":"groupBy([6.1, 4.2, 6.3], Math.floor); // => { '4': [4.2], '6': [6.1, 6.3] }","source":"groupBy([6.1, 4.2, 6.3], Math.floor);\n// => { '4': [4.2], '6': [6.1, 6.3] }\n"}],"name":"groupBy","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Array of objects.","source":"* {Array} collection - Array of objects."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- The iteratee to transform keys.","source":"* {Function} iteratee - The iteratee to transform keys."}],"type":"function","functionTag":"groupBy","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the composed aggregate object.","source":"* {Object} - Returns the composed aggregate object.\n\t *"}},"indexBy":{"category":"collection","description":"Given a list, and an iteratee function that returns a key for each element in the list (or a property name), returns an object with an index of each item. Just like groupBy, but for when you know the keys are unique.","examples":[{"tag":"example","optional":false,"description":"import { indexBy, assert } from '@universalweb/acid'; const result = { \"0\": {name: 'test', id: 0}, \"1\": {name: 'test2', id: 1}}; const indexed = indexBy([{name: 'test', id: 0}, {name: 'test2', id: 1}], 'id'); assert(indexed, result);","source":"import { indexBy, assert } from \"@universalweb/acid\";\nconst result = { 0: { name: \"test\", id: 0 }, 1: { name: \"test2\", id: 1 } };\nconst indexed = indexBy(\n [\n { name: \"test\", id: 0 },\n { name: \"test2\", id: 1 },\n ],\n \"id\",\n);\nassert(indexed, result);\n"}],"name":"indexBy","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Array of objects.","source":"* {Array} collection - Array of objects."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- The property name to index by.","source":"* {String} propertyName - The property name to index by."}],"type":"function","functionTag":"indexBy","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the composed aggregate object.","source":"* {Object} - Returns the composed aggregate object.\n\t *"}},"invokeCollection":{"category":"collection","description":"Invokes a function on the provided property name in each object in the collection.","examples":[{"tag":"example","optional":false,"description":"import { invokeCollection, assert } from '@universalweb/acid'; const results = invokeCollection([{ test(item, index) { return [item, index];} }], 'test', ['EXAMPLE']); assert(results, [['EXAMPLE', 0]]);","source":"import { invokeCollection, assert } from \"@universalweb/acid\";\nconst results = invokeCollection(\n [\n {\n test(item, index) {\n return [item, index];\n },\n },\n ],\n \"test\",\n [\"EXAMPLE\"],\n);\nassert(results, [[\"EXAMPLE\", 0]]);\n"}],"name":"invokeCollection","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection from which method will be taken.","source":"* {Array} collection - Collection from which method will be taken."},{"tag":"param","name":"property","type":"String","optional":false,"description":"- Value used to pluck method from object.","source":"* {String} property - Value used to pluck method from object."},{"tag":"param","name":"value","type":"*","optional":false,"description":"- Value to be passed to callable property.","source":"* {*} value - Value to be passed to callable property."}],"type":"function","functionTag":"invokeCollection","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns the results of the invoked method.","source":"* {Array} - Returns the results of the invoked method.\n\t *"}},"invokeCollectionAsync":{"category":"collection","description":"Asynchronously awaits & invokes a function on the provided property name in each object in the collection.","name":"invokeCollectionAsync","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection from which method will be taken.","source":"* {Array} collection - Collection from which method will be taken."},{"tag":"param","name":"property","type":"String","optional":false,"description":"- Value used to pluck method from object.","source":"* {String} property - Value used to pluck method from object."},{"tag":"param","name":"value","type":"*","optional":false,"description":"- Value to be passed to callable property.","source":"* {*} value - Value to be passed to callable property."}],"type":"function","isAsync":true,"functionTag":"invokeCollectionAsync","test":{"tag":"test","optional":false,"description":"import { invokeCollectionAsync, assert } from '@universalweb/acid'; const results = await invokeCollectionAsync([{ async test(item, index) { return [item, index];} }], 'test', ['EXAMPLE']); assert(results, [['EXAMPLE', 0]]);","source":"* \t * import { invokeCollectionAsync, assert } from '@universalweb/acid';\n\t * const results = await invokeCollectionAsync([{\n\t *\tasync test(item, index) { return [item, index];}\n\t * }], 'test', ['EXAMPLE']);\n\t * assert(results, [['EXAMPLE', 0]]);\n\t */"},"returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns the results of the invoked method.","source":"* {Array} - Returns the results of the invoked method.\n\t *"}},"isNumber":{"category":"type","description":"Checks if the value is a number.","examples":[{"tag":"example","optional":false,"description":"import { isNumber, assert } from '@universalweb/acid'; assert(isNumber(1), true);","source":"import { isNumber, assert } from \"@universalweb/acid\";\nassert(isNumber(1), true);\n"}],"name":"isNumber","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isNumber","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isNotNumber":{"category":"type","description":"Checks if the value is not a number.","examples":[{"tag":"example","optional":false,"description":"import { isNotNumber, assert } from '@universalweb/acid'; assert(isNotNumber(1), false);","source":"import { isNotNumber, assert } from \"@universalweb/acid\";\nassert(isNotNumber(1), false);\n"}],"name":"isNotNumber","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isNotNumber","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isString":{"category":"type","description":"Checks if the value is a string.","examples":[{"tag":"example","optional":false,"description":"import { isString, assert } from '@universalweb/acid'; assert(isString('hello'), true); assert(isString(1), false);","source":"import { isString, assert } from \"@universalweb/acid\";\nassert(isString(\"hello\"), true);\nassert(isString(1), false);\n"}],"name":"isString","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isString","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isNotString":{"category":"type","description":"Checks if the value is not a string.","examples":[{"tag":"example","optional":false,"description":"import { isNotString, assert } from '@universalweb/acid'; assert(isNotString(1), true); assert(isNotString('hello'), false);","source":"import { isNotString, assert } from \"@universalweb/acid\";\nassert(isNotString(1), true);\nassert(isNotString(\"hello\"), false);\n"}],"name":"isNotString","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isNotString","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"pluckObject":{"category":"object","description":"Returns an array of the plucked sources from the object. Sources are plucked in the order given by the array.","examples":[{"tag":"example","optional":false,"description":"import { pluckObject, assert } from '@universalweb/acid'; assert(pluckObject({a: 1, b:3}, ['a','b']), [1, 3]);","source":"import { pluckObject, assert } from \"@universalweb/acid\";\nassert(pluckObject({ a: 1, b: 3 }, [\"a\", \"b\"]), [1, 3]);\n"}],"name":"pluckObject","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Array used to determine what sources to be plucked.","source":"* {Object} source - Array used to determine what sources to be plucked."},{"tag":"param","name":"targets","type":"String|Array","optional":false,"description":"- Property name.","source":"* {String|Array} targets - Property name."}],"type":"function","functionTag":"pluckObject","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array of plucked sources.","source":"* {Array} - An array of plucked sources.\n\t *"}},"pluck":{"category":"collection","description":"Returns an array of the plucked values from the collection.","examples":[{"tag":"example","optional":false,"description":"import { pluck, assert } from '@universalweb/acid'; assert(pluck([{a: 1}, {a: 2}], 'a'), [1, 2]); assert(pluck([{a: 1, b:3}, {a: 1, b:3}], ['a','b']), [[1, 3], [1, 3]]);","source":"import { pluck, assert } from \"@universalweb/acid\";\nassert(pluck([{ a: 1 }, { a: 2 }], \"a\"), [1, 2]);\nassert(\n pluck(\n [\n { a: 1, b: 3 },\n { a: 1, b: 3 },\n ],\n [\"a\", \"b\"],\n ),\n [\n [1, 3],\n [1, 3],\n ],\n);\n"}],"name":"pluck","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Array used to determine what value to be plucked.","source":"* {Array} collection - Array used to determine what value to be plucked."},{"tag":"param","name":"targets","type":"(String|Number|Array.)","optional":false,"description":"- Property name.","source":"* {(String|Number|Array.)} targets - Property name."}],"type":"function","functionTag":"pluck","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array of plucked values.","source":"* {Array} - An array of plucked values.\n\t *"}},"sortCollectionAlphabeticallyReverse":{"category":"collection","description":"Perform alphabetical in reverse Z-A sort on a collection with the provided key name. Mutates the array.","examples":[{"tag":"example","optional":false,"description":"import { sortCollectionAlphabeticallyReverse, assert } from '@universalweb/acid'; const result = [{letter:'f'},{\"letter\":\"c\"}, {\"letter\":\"a\"}]; const collect = [{letter:'a'}, {letter:'f'}, {\"letter\":\"c\"}]; const prop = 'letter'; assert(sortCollectionAlphabeticallyReverse(collect, prop), result);","source":"import {\n sortCollectionAlphabeticallyReverse,\n assert,\n} from \"@universalweb/acid\";\nconst result = [{ letter: \"f\" }, { letter: \"c\" }, { letter: \"a\" }];\nconst collect = [{ letter: \"a\" }, { letter: \"f\" }, { letter: \"c\" }];\nconst prop = \"letter\";\nassert(sortCollectionAlphabeticallyReverse(collect, prop), result);\n"}],"name":"sortCollectionAlphabeticallyReverse","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Collection to be sorted.","source":"* {Array} collection - Collection to be sorted."},{"tag":"param","name":"propertyName","type":"String","optional":false,"description":"- Name of property to compare.","source":"* {String} propertyName - Name of property to compare."},{"tag":"param","name":"ifMatch","type":"Function","optional":false,"description":"- A function which returns a number for the sort function if two object properties match.","source":"* {Function} ifMatch - A function which returns a number for the sort function if two object properties match."}],"type":"function","functionTag":"sortCollectionAlphabeticallyReverse","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The sorted array.","source":"* {Array} - The sorted array.\n\t *"}},"getFileExtension":{"category":"file","description":"Return the file extension.","examples":[{"tag":"example","optional":false,"description":"import { getFileExtension, assert } from '@universalweb/acid'; assert(getFileExtension('test.js'),'js');","source":"import { getFileExtension, assert } from \"@universalweb/acid\";\nassert(getFileExtension(\"test.js\"), \"js\");\n"}],"name":"getFileExtension","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"getFileExtension","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Returns the extension.","source":"* {String} - Returns the extension.\n\t *"}},"getFilename":{"category":"file","description":"Return the file extension.","examples":[{"tag":"example","optional":false,"description":"import { getFilename, assert } from '@universalweb/acid'; assert(getFilename('./universalweb/test.js'),'test.js');","source":"import { getFilename, assert } from \"@universalweb/acid\";\nassert(getFilename(\"./universalweb/test.js\"), \"test.js\");\n"}],"name":"getFilename","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"getFilename","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Returns the extension.","source":"* {String} - Returns the extension.\n\t *"}},"isFileCSS":{"category":"file","description":"Checks if the string has a .css extension.","examples":[{"tag":"example","optional":false,"description":"import { isFileCSS, assert } from '@universalweb/acid'; assert(isFileCSS('test.css'), true);","source":"import { isFileCSS, assert } from \"@universalweb/acid\";\nassert(isFileCSS(\"test.css\"), true);\n"}],"name":"isFileCSS","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- Object to be checked.","source":"* {String} source - Object to be checked."}],"type":"function","functionTag":"isFileCSS","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isFileHTML":{"category":"file","description":"Checks if the string has a .html extension.","examples":[{"tag":"example","optional":false,"description":"import { isFileHTML, assert } from '@universalweb/acid'; assert(isFileHTML('test.html'), true);","source":"import { isFileHTML, assert } from \"@universalweb/acid\";\nassert(isFileHTML(\"test.html\"), true);\n"}],"name":"isFileHTML","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- Object to be checked.","source":"* {String} source - Object to be checked."}],"type":"function","functionTag":"isFileHTML","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isFileJS":{"category":"file","description":"Checks if the string has a .js extension.","examples":[{"tag":"example","optional":false,"description":"import { isFileJS, assert } from '@universalweb/acid'; assert(isFileJS('test.js'), true);","source":"import { isFileJS, assert } from \"@universalweb/acid\";\nassert(isFileJS(\"test.js\"), true);\n"}],"name":"isFileJS","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- Object to be checked.","source":"* {String} source - Object to be checked."}],"type":"function","functionTag":"isFileJS","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isFileJSON":{"category":"file","description":"Checks if the string has a .json extension.","examples":[{"tag":"example","optional":false,"description":"import { isFileJSON, assert } from '@universalweb/acid'; assert(isFileJSON('test.json'), true);","source":"import { isFileJSON, assert } from \"@universalweb/acid\";\nassert(isFileJSON(\"test.json\"), true);\n"}],"name":"isFileJSON","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- Object to be checked.","source":"* {String} source - Object to be checked."}],"type":"function","functionTag":"isFileJSON","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"after":{"category":"function","description":"Creates a function that executes callable, only after being called n times.","examples":[{"tag":"example","optional":false,"description":"import { after, assert } from '@universalweb/acid'; const onlyAfter = after(1, (item) => { return item;}); assert(onlyAfter(1), undefined); assert(onlyAfter(2), 2);","source":"import { after, assert } from \"@universalweb/acid\";\nconst onlyAfter = after(1, (item) => {\n return item;\n});\nassert(onlyAfter(1), undefined);\nassert(onlyAfter(2), 2);\n"}],"name":"after","params":[{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The number of calls until method is invoked.","source":"* {Number} amount - The number of calls until method is invoked."},{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be called.","source":"* {Function} callable - The function to be called."}],"type":"function","functionTag":"after","test":{"tag":"test","optional":false,"description":"(async () => { const onlyAfter = after(2, (item) => { return item;}); return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2); });","source":"* \t * (async () => {\n\t * const onlyAfter = after(2, (item) => { return item;});\n\t * return await assert(onlyAfter(1), undefined) && await assert(onlyAfter(2), 2);\n\t * });\n\t *"},"returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new pass-thru function.","source":"* {Function} - Returns the new pass-thru function.\n\t *"}},"ary":{"category":"function","description":"Creates a function that invokes callable, with up to n arguments, ignoring any additional arguments.","examples":[{"tag":"example","optional":false,"description":"import { ary, assert } from '@universalweb/acid'; assert(ary((...args) => { return args;}, 2)(1, 2, 3), [1, 2]);","source":"import { ary, assert } from \"@universalweb/acid\";\nassert(\n ary((...args) => {\n return args;\n }, 2)(1, 2, 3),\n [1, 2],\n);\n"}],"name":"ary","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to cap arguments for.","source":"* {Function} callable - The function to cap arguments for."},{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The arity cap.","source":"* {Number} amount - The arity cap."}],"type":"function","functionTag":"ary","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the new capped function.","source":"* {Object} - Returns the new capped function.\n\t *"}},"before":{"category":"function","description":"Creates a function that executes callable, only before n times.","examples":[{"tag":"example","optional":false,"description":"import { before, assert } from '@universalweb/acid'; const onlyBefore = before(3, () => { return 1;}); assert(onlyBefore(1), 1);","source":"import { before, assert } from \"@universalweb/acid\";\nconst onlyBefore = before(3, () => {\n return 1;\n});\nassert(onlyBefore(1), 1);\n"}],"name":"before","params":[{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The number of calls before n.","source":"* {Number} amount - The number of calls before n."},{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be called.","source":"* {Function} callable - The function to be called."}],"type":"function","functionTag":"before","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new pass-thru function.","source":"* {Function} - Returns the new pass-thru function.\n\t *"}},"assign":{"category":"object","description":"Copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.","examples":[{"tag":"example","optional":false,"description":"import { assign, assert } from '@universalweb/acid'; assert(assign({b: 2}, {a: 1}), {b: 2, a: 1});","source":"import { assign, assert } from \"@universalweb/acid\";\nassert(assign({ b: 2 }, { a: 1 }), { b: 2, a: 1 });\n"}],"name":"assign","params":[{"tag":"param","name":"target","type":"Object","optional":false,"description":"- The target object.","source":"* {Object} target - The target object."},{"tag":"param","name":"sources","type":"...Object","optional":false,"description":"- The source object(s).","source":"* {...Object} sources - The source object(s)."}],"type":"function","functionTag":"assign","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the target object.","source":"* {Object} - Returns the target object.\n\t *"}},"eachAsyncObject":{"category":"object","description":"Asynchronously iterates through the given object.","examples":[{"tag":"example","optional":false,"description":"import { eachAsyncObject, assert } from '@universalweb/acid'; const tempList = []; await eachAsyncObject({a: 1, b: 2, c: 3}, async (item, key) => { tempList[key] = item; }); assert(tempList, {a: 1, b: 2, c: 3});","source":"import { eachAsyncObject, assert } from \"@universalweb/acid\";\nconst tempList = [];\nawait eachAsyncObject({ a: 1, b: 2, c: 3 }, async (item, key) => {\n tempList[key] = item;\n});\nassert(tempList, { a: 1, b: 2, c: 3 });\n"}],"name":"eachAsyncObject","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg.","source":"* {Function} iteratee - Transformation function which is passed item, key, calling object, key count, array of keys, and additionalArg."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- Iteratee called with thisCall as this.","source":"* {*} thisCall - Iteratee called with thisCall as this."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"eachAsyncObject","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"Returns source.","source":"* {Object|Function} - Returns source.\n\t *"}},"eachObject":{"category":"object","description":"Iterates through the given object.","examples":[{"tag":"example","optional":false,"description":"import { eachObject, assert } from '@universalweb/acid'; assert(eachObject({a: 1, b: 2, c: 3}, (item) => { console.log(item); }), {a: 1, b: 2, c: 3});","source":"import { eachObject, assert } from \"@universalweb/acid\";\nassert(\n eachObject({ a: 1, b: 2, c: 3 }, (item) => {\n console.log(item);\n }),\n { a: 1, b: 2, c: 3 },\n);\n"}],"name":"eachObject","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, calling object, key count, and array of keys."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisCall - An object to be given each time to the iteratee."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"eachObject","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"Returns the calling object.","source":"* {Object|Function} - Returns the calling object.\n\t *"}},"isSet":{"category":"type","description":"Checks if an object(s) is a Set.","examples":[{"tag":"example","optional":false,"description":"import { isSet, assert } from '@universalweb/acid'; assert(isSet(new Set()), true);","source":"import { isSet, assert } from \"@universalweb/acid\";\nassert(isSet(new Set()), true);\n"}],"name":"isSet","params":[{"tag":"param","name":"sources","type":"...*","optional":false,"description":"- Objects to be checked.","source":"* {...*} sources - Objects to be checked."}],"type":"function","functionTag":"isSet","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isGenerator":{"category":"type","description":"Checks if an object or objects are a Int16Array.","examples":[{"tag":"example","optional":false,"description":"import { isGenerator } from '@universalweb/acid'; isGenerator(function* (){}); // => true","source":"import { isGenerator } from \"@universalweb/acid\";\nisGenerator(function* () {});\n// => true\n"}],"name":"isGenerator","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isGenerator","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isFunction":{"category":"type","description":"Checks if an object or objects are a plain object.","examples":[{"tag":"example","optional":false,"description":"import { isFunction } from '@universalweb/acid'; isFunction(() => {}); // => true","source":"import { isFunction } from \"@universalweb/acid\";\nisFunction(() => {});\n// => true\n"}],"name":"isFunction","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isFunction","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isAsync":{"category":"type","description":"Checks if an object is an async function.","examples":[{"tag":"example","optional":false,"description":"import { isAsync, assert } from '@universalweb/acid'; assert(isAsync(async() => {}), true);","source":"import { isAsync, assert } from \"@universalweb/acid\";\nassert(\n isAsync(async () => {}),\n true,\n);\n"}],"name":"isAsync","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isAsync","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"True or false.","source":"* {Boolean} - True or false.\n\t *"}},"each":{"category":"utility","description":"Iterates through the given object.","examples":[{"tag":"example","optional":false,"description":"import { each, assert } from '@universalweb/acid'; const list = {}; each({a: 1, b: 2, c: 3}, (item, key) => { list[key] = item; }); assert(list, {a: 1, b: 2, c: 3});","source":"import { each, assert } from \"@universalweb/acid\";\nconst list = {};\neach({ a: 1, b: 2, c: 3 }, (item, key) => {\n list[key] = item;\n});\nassert(list, { a: 1, b: 2, c: 3 });\n"}],"name":"each","params":[{"tag":"param","name":"source","type":"Array | object | Function","optional":false,"description":"- Object that will be looped through.","source":"* {Array | object | Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type."},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisCall - An object to be given each time to the iteratee."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"each","returns":{"tag":"returns","name":"-","type":"Array | object | Function","optional":false,"description":"The originally given object.","source":"* {Array | object | Function} - The originally given object.\n\t *"}},"chain":{"category":"function","description":"Creates a chainable set of functions.","examples":[{"tag":"example","optional":false,"description":"import { chain, assert } from '@universalweb/acid'; const chained = chain({ a(value, c) { return value + c; } }).setValue(2).a(1).done(); assert(chained, 3);","source":"import { chain, assert } from \"@universalweb/acid\";\nconst chained = chain({\n a(value, c) {\n return value + c;\n },\n})\n .setValue(2)\n .a(1)\n .done();\nassert(chained, 3);\n"}],"name":"chain","params":[{"tag":"param","name":"methods","type":"Array|Object","optional":false,"description":"- The object to take methods from.","source":"* {Array|Object} methods - The object to take methods from."}],"type":"function","functionTag":"chain","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.","source":"* {*} - Returns a function which has value, methods, add, and done. When invoking the function the argument is saved as the value property for further chaining.\n\t *"}},"curry":{"category":"function","description":"Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method length is not sufficient.","examples":[{"tag":"example","optional":false,"description":"import { curry, assert } from '@universalweb/acid'; const result = curry((a, b, c) => { return [a, b, c]; })(1)(2)(3); assert(result, [1, 2, 3]);","source":"import { curry, assert } from \"@universalweb/acid\";\nconst result = curry((a, b, c) => {\n return [a, b, c];\n})(1)(2)(3);\nassert(result, [1, 2, 3]);\n"}],"name":"curry","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to curry.","source":"* {Function} callable - The function to curry."},{"tag":"param","name":"arity","type":"Number","optional":false,"description":"- The arity of method.","source":"* {Number} arity - The arity of method."}],"type":"function","functionTag":"curry","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns the new curried function.","source":"* {*} - Returns the new curried function.\n\t *"}},"curryRight":{"description":"Creates a function that accepts arguments of method and either invokes method returning its result, if at least arity number of arguments have been provided, or returns a function that accepts the remaining method arguments, and so on. The arity of method may be specified if method.length is not sufficient. The arguments are given in reverse order.","examples":[{"tag":"example","optional":false,"description":"import { curryRight, assert } from '@universalweb/acid'; const result = curryRight((a, b, c) => { return [a, b, c]; })(1)(2)(3); assert(result, [3, 2, 1]);","source":"import { curryRight, assert } from \"@universalweb/acid\";\nconst result = curryRight((a, b, c) => {\n return [a, b, c];\n})(1)(2)(3);\nassert(result, [3, 2, 1]);\n"}],"name":"curryRight","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to curry.","source":"* {Function} callable - The function to curry."},{"tag":"param","name":"arity","type":"Number","optional":false,"description":"- The arity of method.","source":"* {Number} arity - The arity of method."}],"type":"function","functionTag":"curryRight","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns the new curried function.","source":"* {*} - Returns the new curried function.\n\t *"}},"stubTrue":{"category":"utility","description":"This method returns true.","examples":[{"tag":"example","optional":false,"description":"import { stubTrue } from '@universalweb/acid'; stubTrue(); // => true","source":"import { stubTrue } from \"@universalweb/acid\";\nstubTrue();\n// => true\n"}],"name":"stubTrue","type":"function","functionTag":"stubTrue","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true.","source":"* {Boolean} - Returns true.\n\t *"}},"stubFalse":{"category":"utility","description":"This method returns false.","examples":[{"tag":"example","optional":false,"description":"import { stubFalse } from '@universalweb/acid'; stubFalse(); // => false","source":"import { stubFalse } from \"@universalweb/acid\";\nstubFalse();\n// => false\n"}],"name":"stubFalse","type":"function","functionTag":"stubFalse","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns false.","source":"* {Boolean} - Returns false.\n\t *"}},"noop":{"category":"function","description":"This method returns undefined.","examples":[{"tag":"example","optional":false,"description":"noop(); // => undefined","source":"noop();\n// => undefined\n"}],"name":"noop","type":"function","functionTag":"noop","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined."}},"times":{"category":"utility","description":"Iterates based on the amount given invoking the iteratee with the current index as an argument.","examples":[{"tag":"example","optional":false,"description":"import { times } from '@universalweb/acid'; times(3, (item) => { console.log(item); }); // 0 // 1 // 2 // => undefined","source":"import { times } from \"@universalweb/acid\";\ntimes(3, (item) => {\n console.log(item);\n}); // 0 // 1 // 2\n// => undefined\n"}],"name":"times","params":[{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The amount of times to loop invoking the iteratee.","source":"* {Number} amount - The amount of times to loop invoking the iteratee."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed index and amount.","source":"* {Function} iteratee - Transformation function which is passed index and amount."}],"type":"function","functionTag":"times","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Nothing.","source":"* {undefined} - Nothing.\n\t *"}},"timesMap":{"category":"utility","description":"Iterates based on the amount given and maps the results returned by the iteratee each time to an array.","examples":[{"tag":"example","optional":false,"description":"import { timesMap } from '@universalweb/acid'; timesMap(3, (item) => { return item; }); // => [0, 1, 2]","source":"import { timesMap } from \"@universalweb/acid\";\ntimesMap(3, (item) => {\n return item;\n});\n// => [0, 1, 2]\n"}],"name":"timesMap","params":[{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The amount of times to loop invoking the iteratee.","source":"* {Number} amount - The amount of times to loop invoking the iteratee."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed index and amount.","source":"* {Function} iteratee - Transformation function which is passed index and amount."},{"tag":"param","name":"results","type":"Array","optional":true,"description":"- Array that will have iteratee return pushed to.","source":"* {Array} [results = []] - Array that will have iteratee return pushed to.","default":"[]"}],"type":"function","functionTag":"timesMap","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with iteratee's returned values.","source":"* {Array} - An array with iteratee's returned values.\n\t *"}},"timer":{"category":"function","description":"Timer wrapper.","examples":[{"tag":"example","optional":false,"description":"import { timer, assert } from '@universalweb/acid'; timer(() => {}, 100); // => 0","source":"import { timer, assert } from \"@universalweb/acid\";\ntimer(() => {}, 100);\n// => 0\n"}],"name":"timer","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be invoked.","source":"* {Function} callable - The function to be invoked."},{"tag":"param","name":"time","type":"Number","optional":false,"description":"- The time in milliseconds.","source":"* {Number} time - The time in milliseconds."}],"type":"function","functionTag":"timer","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns setTimeoutId ID.","source":"* {Object} - Returns setTimeoutId ID.\n\t *"}},"clearTimers":{"category":"function","description":"Clear all active timers.","examples":[{"tag":"example","optional":false,"description":"import { clearTimers, assert } from '@universalweb/acid'; clearTimers(); // => undefined","source":"import { clearTimers, assert } from \"@universalweb/acid\";\nclearTimers();\n// => undefined\n"}],"name":"clearTimers","type":"function","functionTag":"clearTimers","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined.\n\t *"}},"apply":{"category":"function","description":"Calls a target function with an optional \"this\" and optional arguments as specified. Same as Reflect.apply but with a function check.","examples":[{"tag":"example","optional":false,"description":"import { apply, assert } from '@universalweb/acid'; assert(apply(function (a) {return a;}, undefined, [2]), 2);","source":"import { apply, assert } from \"@universalweb/acid\";\nassert(\n apply(\n function (a) {\n return a;\n },\n undefined,\n [2],\n ),\n 2,\n);\n"}],"name":"apply","params":[{"tag":"param","name":"target","type":"Function","optional":false,"description":"- The target function to call.","source":"* {Function} target - The target function to call."},{"tag":"param","name":"thisArgument","type":"*","optional":false,"description":"- Array like object.","source":"* {*} thisArgument - Array like object."},{"tag":"param","name":"argumentsList","type":"Array","optional":false,"description":"- An array-like object specifying the arguments with which target should be called.","source":"* {Array} argumentsList - An array-like object specifying the arguments with which target should be called."}],"type":"function","functionTag":"apply","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"The result of calling the given target function with the specified this value and arguments.","source":"* {*} - The result of calling the given target function with the specified this value and arguments.\n\t *"}},"debounce":{"category":"function","description":"Creates a debounced function that delays invoking callable until after milliseconds have elapsed since the last time the debounced function was invoked. The debounce function has a clear method to cancel the timer.","examples":[{"tag":"example","optional":false,"description":"import { debounce, promise, assert } from '@universalweb/acid'; const promised = promise((a) => { const debounced = debounce(() => { debounced.clear(); a('debounced'); }, 0); }); assert(await promised(), 'debounced');","source":"import { debounce, promise, assert } from \"@universalweb/acid\";\nconst promised = promise((a) => {\n const debounced = debounce(() => {\n debounced.clear();\n a(\"debounced\");\n }, 0);\n});\nassert(await promised(), \"debounced\");\n"}],"name":"debounce","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be invoked.","source":"* {Function} callable - The function to be invoked."},{"tag":"param","name":"time","type":"Number","optional":false,"description":"- The time in milliseconds.","source":"* {Number} time - The time in milliseconds."}],"type":"function","functionTag":"debounce","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"The debounced function.","source":"* {Function} - The debounced function.\n\t *"}},"ifInvoke":{"category":"function","description":"Checks if the given method is a function. If it is then it invokes it with the given arguments.","examples":[{"tag":"example","optional":false,"description":"import { ifInvoke, assert } from '@universalweb/acid'; assert(ifInvoke((...args) => { return args;}, 1, 2), [1, 2]);","source":"import { ifInvoke, assert } from \"@universalweb/acid\";\nassert(\n ifInvoke(\n (...args) => {\n return args;\n },\n 1,\n 2,\n ),\n [1, 2],\n);\n"}],"name":"ifInvoke","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be invoked if possible.","source":"* {Function} callable - The function to be invoked if possible."},{"tag":"param","name":"args","type":"...Array","optional":false,"description":"- Arguments to pass to the method.","source":"* {...Array} args - Arguments to pass to the method."}],"type":"function","functionTag":"ifInvoke","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns the method invoked or undefined.","source":"* {*} - Returns the method invoked or undefined.\n\t *"}},"inAsync":{"category":"array","description":"Iterates through the given array of async function(s). Each async function is awaited as to ensure synchronous order and is given the supplied object.","examples":[{"tag":"example","optional":false,"description":"import { inAsync, assert } from '@universalweb/acid'; const list = []; await inAsync([async (firstArgument, item, index) => { list.push(index + firstArgument.a); }, async (firstArgument, item, index) => { list.push(index); }], {a:1}); assert(list, [1, 1]);","source":"import { inAsync, assert } from \"@universalweb/acid\";\nconst list = [];\nawait inAsync(\n [\n async (firstArgument, item, index) => {\n list.push(index + firstArgument.a);\n },\n async (firstArgument, item, index) => {\n list.push(index);\n },\n ],\n { a: 1 },\n);\nassert(list, [1, 1]);\n"}],"name":"inAsync","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array of async functions that will be looped through. Functions are given the supplied object, index, the calling array, and the array length.","source":"* {Array} source - Array of async functions that will be looped through.\n\t * Functions are given the supplied object, index, the calling array, and the array length."},{"tag":"param","name":"firstArgument","type":"*","optional":false,"description":"- The first argument given to each function.","source":"* {*} firstArgument - The first argument given to each function."}],"type":"function","isAsync":true,"functionTag":"inAsync","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"The originally given array.","source":"* {Object} - The originally given array.\n\t *"}},"inSync":{"category":"function","description":"Invoke an array of functions.","examples":[{"tag":"example","optional":false,"description":"inSync([() => {console.log(1);}, () => {console.log(2);}]); // 1 // 2 // => undefined","source":"inSync([\n () => {\n console.log(1);\n },\n () => {\n console.log(2);\n },\n]); // 1 // 2\n// => undefined\n"}],"name":"inSync","params":[{"tag":"param","name":"collection","type":"Array|Object|Function","optional":false,"description":"- The functions to be invoked.","source":"* {Array|Object|Function} collection - The functions to be invoked."},{"tag":"param","name":"value","type":"*","optional":false,"description":"- The object passed as an argument to each method.","source":"* {*} value - The object passed as an argument to each method."}],"type":"function","functionTag":"inSync","test":{"tag":"test","optional":false,"description":"(() => { const tempList = []; inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]); return assert(tempList, [1, 2]); });","source":"* \t * (() => {\n\t * const tempList = [];\n\t * inSync([() => {tempList.push(1);}, () => {tempList.push(2);}]);\n\t * return assert(tempList, [1, 2]);\n\t * });\n\t *"},"returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined.\n\t *"}},"negate":{"category":"function","description":"Creates a function that negates the result of the predicate callable.","examples":[{"tag":"example","optional":false,"description":"negate(() => { return false;})(); // => true","source":"negate(() => {\n return false;\n})();\n// => true\n"}],"name":"negate","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be invoked.","source":"* {Function} callable - The function to be invoked."}],"type":"function","functionTag":"negate","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns the given methods result.","source":"* {*} - Returns the given methods result.\n\t *"}},"nthArg":{"category":"function","description":"Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.","examples":[{"tag":"example","optional":false,"description":"nthArg(1)('a', 'b'); // => 'b'","source":"nthArg(1)(\"a\", \"b\");\n// => 'b'\n"}],"name":"nthArg","params":[{"tag":"param","name":"index","type":"Number","optional":true,"description":"- The index of the argument to return.","source":"* {Number} [index = 0] - The index of the argument to return.","default":"0"}],"type":"function","functionTag":"nthArg","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new pass-thru function.","source":"* {Function} - Returns the new pass-thru function.\n\t *"}},"once":{"category":"function","description":"Creates a function that is restricted to execute method once. Repeat calls to the function will return the value of the first call. The method is executed with the this binding of the created function.","examples":[{"tag":"example","optional":false,"description":"const onceOnly = once((item) => { return item;}); onceOnly(5); onceOnly(3); // => 5","source":"const onceOnly = once((item) => {\n return item;\n});\nonceOnly(5);\nonceOnly(3);\n// => 5\n"}],"name":"once","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be called.","source":"* {Function} callable - The function to be called."}],"type":"function","functionTag":"once","test":{"tag":"test","optional":false,"description":"(async () => { const onceOnly = once((item) => { return item;}); return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5); });","source":"* \t * (async () => {\n\t * const onceOnly = once((item) => { return item;});\n\t * return await assert(onceOnly(5), 5) && await assert(onceOnly(2), 5);\n\t * });\n\t *"},"returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new pass-thru function.","source":"* {Function} - Returns the new pass-thru function.\n\t *"}},"mapObjectAsync":{"category":"object","description":"Asynchronously iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { mapAsyncObject, assert } from '@universalweb/acid'; assert(await mapAsyncObject({a: 1, b: undefined, c: 3}, (item) => { return item; }), {a: 1, b: undefined, c: 3});","source":"import { mapAsyncObject, assert } from \"@universalweb/acid\";\nassert(\n await mapAsyncObject({ a: 1, b: undefined, c: 3 }, (item) => {\n return item;\n }),\n { a: 1, b: undefined, c: 3 },\n);\n"}],"name":"mapObjectAsync","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"results","type":"Object|Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object|Function} [results = {}] - Object that will be used to assign results.","default":"{}"}],"type":"function","functionTag":"mapObjectAsync","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"An object of the same calling object's type.","source":"* {Object|Function} - An object of the same calling object's type.\n\t *"}},"mapObject":{"category":"object","description":"Iterates through the calling object and creates an object with the results of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { mapObject, assert } from '@universalweb/acid'; assert(mapObject({a: 1, b: undefined, c: 3}, (item) => { return item; }), {a: 1, b: undefined, c: 3});","source":"import { mapObject, assert } from \"@universalweb/acid\";\nassert(\n mapObject({ a: 1, b: undefined, c: 3 }, (item) => {\n return item;\n }),\n { a: 1, b: undefined, c: 3 },\n);\n"}],"name":"mapObject","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"results","type":"Object|Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object|Function} [results = {}] - Object that will be used to assign results.","default":"{}"},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisCall - An object to be given each time to the iteratee."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"mapObject","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"An object of the same calling object's type.","source":"* {Object|Function} - An object of the same calling object's type.\n\t *"}},"getType":{"category":"type","description":"Returns the constructor of an object.","examples":[{"tag":"example","optional":false,"description":"import { getType, assert } from '@universalweb/acid'; assert(getType(1), true);","source":"import { getType, assert } from \"@universalweb/acid\";\nassert(getType(1), true);\n"}],"name":"getType","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"getType","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"cloneType":{"category":"type","description":"Returns a new empty object of the same type.","examples":[{"tag":"example","optional":false,"description":"import { cloneType, assert } from '@universalweb/acid'; assert(cloneType([1]), []);","source":"import { cloneType, assert } from \"@universalweb/acid\";\nassert(cloneType([1]), []);\n"}],"name":"cloneType","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"cloneType","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"forOfCompactMap":{"category":"utility","description":"Iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { assert,forOfCompactMap } from '@universalweb/acid'; const source = {a: undefined, b: 2, c: 3}; const temp = forOfCompactMap(source, (item) => { return item; }); assert(temp, {b: 2, c: 3});","source":"import { assert, forOfCompactMap } from \"@universalweb/acid\";\nconst source = { a: undefined, b: 2, c: 3 };\nconst temp = forOfCompactMap(source, (item) => {\n return item;\n});\nassert(temp, { b: 2, c: 3 });\n"}],"name":"forOfCompactMap","params":[{"tag":"param","name":"source","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function|Class|Map|Set|Array} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"resultsObject","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be used to assign results else source is type cloned.","source":"* {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned."}],"type":"function","functionTag":"forOfCompactMap","returns":{"tag":"returns","name":"-","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"An object with mapped properties that are not null or undefined.","source":"* {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n\t *"}},"forOfCompactMapAsync":{"category":"utility","description":"Asynchronously iterates (for of) through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { assert,forOfCompactMapAsync } from '@universalweb/acid'; const source = {a: undefined, b: 2, c: 3}; const temp = await forOfCompactMapAsync(source, async (item) => { return item; }); assert(temp, {b: 2, c: 3});","source":"import { assert, forOfCompactMapAsync } from \"@universalweb/acid\";\nconst source = { a: undefined, b: 2, c: 3 };\nconst temp = await forOfCompactMapAsync(source, async (item) => {\n return item;\n});\nassert(temp, { b: 2, c: 3 });\n"}],"name":"forOfCompactMapAsync","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"resultsObject","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be used to assign results else source is type cloned.","source":"* {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned."}],"type":"function","functionTag":"forOfCompactMapAsync","returns":{"tag":"returns","name":"-","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"An object with mapped properties that are not null or undefined.","source":"* {Object|Function|Class|Map|Set|Array} - An object with mapped properties that are not null or undefined.\n\t *"}},"map":{"category":"utility","description":"Iterates through the calling object and creates a new object based on the calling object's type with the results of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { map, assert } from '@universalweb/acid'; assert(map({a: 1, b: 2, c: 3}, (item) => { return item * 2; }), {a: 2, b: 4, c: 6});","source":"import { map, assert } from \"@universalweb/acid\";\nassert(\n map({ a: 1, b: 2, c: 3 }, (item) => {\n return item * 2;\n }),\n { a: 2, b: 4, c: 6 },\n);\n"}],"name":"map","params":[{"tag":"param","name":"source","type":"Array | object | Function","optional":false,"description":"- Object that will be looped through.","source":"* {Array | object | Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type."},{"tag":"param","name":"results","type":"Object | Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object | Function} [results = {}] - Object that will be used to assign results.","default":"{}"},{"tag":"param","name":"thisCall","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisCall - An object to be given each time to the iteratee."},{"tag":"param","name":"additionalArg","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} additionalArg - An object to be given each time to the iteratee."}],"type":"function","functionTag":"map","returns":{"tag":"returns","name":"-","type":"Array | object | Function","optional":false,"description":"A new object of the same calling object's type.","source":"* {Array | object | Function} - A new object of the same calling object's type.\n\t *"}},"over":{"category":"function","description":"Creates a function that invokes iteratee with the arguments it receives and returns their results.","examples":[{"tag":"example","optional":false,"description":"import { overEvery, assert } from '@universalweb/acid'; assert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);","source":"import { overEvery, assert } from \"@universalweb/acid\";\nassert(over([Math.max, Math.min])(1, 2, 3, 4), [4, 1]);\n"}],"name":"over","params":[{"tag":"param","name":"iteratees","type":"(Array.|Object.)","optional":false,"description":"- The list of functions to loop through.","source":"* {(Array.|Object.)} iteratees - The list of functions to loop through."}],"type":"function","functionTag":"over","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new over wrapped function.","source":"* {Function} - Returns the new over wrapped function.\n\t *"}},"everyAsyncObject":{"category":"object","description":"Iterates through the given object while the iteratee returns true.","examples":[{"tag":"example","optional":false,"description":"import { everyAsyncObject, assert } from '@universalweb/acid'; const result = await everyAsyncObject({a: true, b: true, c: true}, (item) => { return item; }); assert(result, true);","source":"import { everyAsyncObject, assert } from \"@universalweb/acid\";\nconst result = await everyAsyncObject({ a: true, b: true, c: true }, (item) => {\n return item;\n});\nassert(result, true);\n"}],"name":"everyAsyncObject","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Object that will be looped through.","source":"* {Object} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, key, calling array, and array length."}],"type":"function","functionTag":"everyAsyncObject","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if all values returned are true or false if one value returns false.","source":"* {Boolean} - Returns true if all values returned are true or false if one value returns false.\n\t *"}},"everyObject":{"category":"object","description":"Iterates through the given object while the iteratee returns true.","examples":[{"tag":"example","optional":false,"description":"import { everyObject, assert } from '@universalweb/acid'; const result = everyObject({a: true, b: true, c: true}, (item) => { return item; }); assert(result, true);","source":"import { everyObject, assert } from \"@universalweb/acid\";\nconst result = everyObject({ a: true, b: true, c: true }, (item) => {\n return item;\n});\nassert(result, true);\n"}],"name":"everyObject","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Object that will be looped through.","source":"* {Object} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, key, calling array, and array length."}],"type":"function","functionTag":"everyObject","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if all values returned are true or false if one value returns false.","source":"* {Boolean} - Returns true if all values returned are true or false if one value returns false.\n\t *"}},"forOfEvery":{"category":"utility","description":"Iterates (for of) through the given object while the iteratee returns true using a for of loop.","examples":[{"tag":"example","optional":false,"description":"import { every, assert } from '@universalweb/acid'; assert(forOfEvery({a: false, b: true, c: true}, (item) => { return item; }), false);","source":"import { every, assert } from \"@universalweb/acid\";\nassert(\n forOfEvery({ a: false, b: true, c: true }, (item) => {\n return item;\n }),\n false,\n);\n"}],"name":"forOfEvery","params":[{"tag":"param","name":"source","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function|Class|Map|Set|Array} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."}],"type":"function","functionTag":"forOfEvery","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if all values returned are true or false if one value returns false.","source":"* {Boolean} - Returns true if all values returned are true or false if one value returns false.\n\t *"}},"forOfEveryAsync":{"category":"utility","description":"Asynchronously iterates (for of) through the given object while the iteratee returns true using a for of loop.","examples":[{"tag":"example","optional":false,"description":"import { every, assert } from '@universalweb/acid'; assert(forOfEveryAsync({a: false, b: true, c: true}, (item) => { return item; }), false);","source":"import { every, assert } from \"@universalweb/acid\";\nassert(\n forOfEveryAsync({ a: false, b: true, c: true }, (item) => {\n return item;\n }),\n false,\n);\n"}],"name":"forOfEveryAsync","params":[{"tag":"param","name":"source","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function|Class|Map|Set|Array} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."}],"type":"function","functionTag":"forOfEveryAsync","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if all values returned are true or false if one value returns false.","source":"* {Boolean} - Returns true if all values returned are true or false if one value returns false.\n\t *"}},"every":{"category":"utility","description":"Iterates through the given object while the iteratee returns true.","examples":[{"tag":"example","optional":false,"description":"import { every, assert } from '@universalweb/acid'; assert(every({a: false, b: true, c: true}, (item) => { return item; }), false);","source":"import { every, assert } from \"@universalweb/acid\";\nassert(\n every({ a: false, b: true, c: true }, (item) => {\n return item;\n }),\n false,\n);\n"}],"name":"every","params":[{"tag":"param","name":"source","type":"Object | Array | Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object | Array | Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, key, calling array, and array length."}],"type":"function","functionTag":"every","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if all values returned are true or false if one value returns false.","source":"* {Boolean} - Returns true if all values returned are true or false if one value returns false.\n\t *"}},"overEvery":{"category":"function","description":"Creates a function that checks if all of the predicates return truthy when invoked with the arguments it receives.","examples":[{"tag":"example","optional":false,"description":"import { overEvery, assert } from '@universalweb/acid'; assert(overEvery([Boolean, isFinite])('1'), true);","source":"import { overEvery, assert } from \"@universalweb/acid\";\nassert(overEvery([Boolean, isFinite])(\"1\"), true);\n"}],"name":"overEvery","params":[{"tag":"param","name":"predicates","type":"(Array.|Object.)","optional":false,"description":"- The list of functions to loop through.","source":"* {(Array.|Object.)} predicates - The list of functions to loop through."}],"type":"function","functionTag":"overEvery","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new overEvery wrapped function.","source":"* {Function} - Returns the new overEvery wrapped function.\n\t *"}},"reArg":{"category":"function","description":"Creates a function that invokes method with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.","examples":[{"tag":"example","optional":false,"description":"reArg((a, b, c) => { return [a, b, c]; }, [1,2,0])(1,2,3); // => [2, 3, 1]","source":"reArg(\n (a, b, c) => {\n return [a, b, c];\n },\n [1, 2, 0],\n)(1, 2, 3);\n// => [2, 3, 1]\n"}],"name":"reArg","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be invoked.","source":"* {Function} callable - The function to be invoked."},{"tag":"param","name":"indexes","type":"Array","optional":false,"description":"- The arranged argument indexes.","source":"* {Array} indexes - The arranged argument indexes."}],"type":"function","functionTag":"reArg","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new function.","source":"* {Function} - Returns the new function.\n\t *"}},"throttle":{"category":"function","description":"Creates a throttled function that only invokes callable at most once per every milliseconds. The throttle function has a clear method to cancel the timer.","examples":[{"tag":"example","optional":false,"description":"const throttled = throttle(() => { console.log('throttle'); }, 0)(); throttled(); // 'throttle'","source":"const throttled = throttle(() => {\n console.log(\"throttle\");\n}, 0)();\nthrottled(); // 'throttle'\n"}],"name":"throttle","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be invoked.","source":"* {Function} callable - The function to be invoked."},{"tag":"param","name":"time","type":"Number","optional":false,"description":"- The time in milliseconds.","source":"* {Number} time - The time in milliseconds."}],"type":"function","functionTag":"throttle","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"The throttled function.","source":"* {Function} - The throttled function.\n\t *"}},"wrap":{"category":"function","description":"Creates a function that provides value to wrapper as its first argument. The wrapper function is given two arguments the value and the provided argument from the newly created function.","examples":[{"tag":"example","optional":false,"description":"wrap('Lucy', (firstName, lastName) => { return `My name is ${firstName} ${lastName}.`; })('Diamonds'); // => 'My name is Lucy Diamonds.'","source":"wrap(\"Lucy\", (firstName, lastName) => {\n return `My name is ${firstName} ${lastName}.`;\n})(\"Diamonds\");\n// => 'My name is Lucy Diamonds.'\n"}],"name":"wrap","params":[{"tag":"param","name":"value","type":"*","optional":false,"description":"- The value to wrap.","source":"* {*} value - The value to wrap."},{"tag":"param","name":"wrapper","type":"Function","optional":false,"description":"- The wrapper function.","source":"* {Function} wrapper - The wrapper function."}],"type":"function","functionTag":"wrap","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"The new function.","source":"* {Function} - The new function.\n\t *"}},"cacheNativeMethod":{"category":"utility","description":"Caches a prototype method.","examples":[{"tag":"example","optional":false,"description":"import { cacheNativeMethod, assert } from '@universalweb/acid'; assert(cacheNativeMethod(Array.prototype.push)([], 1), 1);","source":"import { cacheNativeMethod, assert } from \"@universalweb/acid\";\nassert(cacheNativeMethod(Array.prototype.push)([], 1), 1);\n"}],"name":"cacheNativeMethod","params":[{"tag":"param","name":"method","type":"Function","optional":false,"description":"- Prototype method.","source":"* {Function} method - Prototype method."}],"type":"function","functionTag":"cacheNativeMethod","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Cached method.","source":"* {Function} - Cached method.\n\t *"}},"getPropNames":{"category":"object","description":"Returns an array of all properties (enumerable or not) found directly upon a given object.","examples":[{"tag":"example","optional":false,"description":"import { getPropNames, assert } from '@universalweb/acid'; assert(getPropNames({ 0: 'a', 1: 'b', 2: 'c' }), ['0', '1', '2']);","source":"import { getPropNames, assert } from \"@universalweb/acid\";\nassert(getPropNames({ 0: \"a\", 1: \"b\", 2: \"c\" }), [\"0\", \"1\", \"2\"]);\n"}],"name":"getPropNames","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- The object whose enumerable and non-enumerable own properties are to be returned.","source":"* {Object} source - The object whose enumerable and non-enumerable own properties are to be returned."}],"type":"function","functionTag":"getPropNames","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"An array of strings that correspond to the properties found directly upon the given object.","source":"* {Object} - An array of strings that correspond to the properties found directly upon the given object.\n\t *"}},"getPropDesc":{"category":"object","description":"Returns a property descriptor for an own property (that is, one directly present on an object and not in the object's prototype chain) of a given object.","examples":[{"tag":"example","optional":false,"description":"getPropDesc({ bar: 42 }, 'bar'); // => { configurable: true, enumerable: true, value: 42, writable: true }","source":"getPropDesc({ bar: 42 }, \"bar\");\n// => { configurable: true, enumerable: true, value: 42, writable: true }\n"}],"name":"getPropDesc","params":[{"tag":"param","name":"target","type":"Object","optional":false,"description":"- The target object.","source":"* {Object} target - The target object."},{"tag":"param","name":"property","type":"String","optional":false,"description":"- The name of the property whose description is to be retrieved.","source":"* {String} property - The name of the property whose description is to be retrieved."}],"type":"function","functionTag":"getPropDesc","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"A property descriptor of the given property if it exists on the object, undefined otherwise.","source":"* {Object} - A property descriptor of the given property if it exists on the object, undefined otherwise.\n\t *"}},"defProp":{"category":"object","description":"Defines a new property directly on an object, or modifies an existing property on an object, and returns the object.","examples":[{"tag":"example","optional":false,"description":"defProp({}, 'key', { enumerable: false, configurable: false, writable: false, value: 'static' }).key; // => 'static'","source":"defProp({}, \"key\", {\n enumerable: false,\n configurable: false,\n writable: false,\n value: \"static\",\n}).key;\n// => 'static'\n"}],"name":"defProp","params":[{"tag":"param","name":"target","type":"Object","optional":false,"description":"- The object on which to define the property.","source":"* {Object} target - The object on which to define the property."},{"tag":"param","name":"property","type":"String","optional":false,"description":"- The name of the property whose description is to be retrieved.","source":"* {String} property - The name of the property whose description is to be retrieved."},{"tag":"param","name":"descriptor","type":"Object","optional":false,"description":"- The descriptor for the property being defined or modified.","source":"* {Object} descriptor - The descriptor for the property being defined or modified."}],"type":"function","functionTag":"defProp","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"The object that was passed to the function.","source":"* {Object} - The object that was passed to the function.\n\t *"}},"isSame":{"category":"object","description":"Determines whether two values are the same value.","examples":[{"tag":"example","optional":false,"description":"import { isSame, assert } from '@universalweb/acid'; assert(isSame('foo', 'foo'), true);","source":"import { isSame, assert } from \"@universalweb/acid\";\nassert(isSame(\"foo\", \"foo\"), true);\n"}],"name":"isSame","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Value to compare to.","source":"* {*} source - Value to compare to."},{"tag":"param","name":"target","type":"*","optional":false,"description":"- A value to compare.","source":"* {*} target - A value to compare."}],"type":"function","functionTag":"isSame","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"A Boolean indicating whether or not the two arguments are the same value.","source":"* {Boolean} - A Boolean indicating whether or not the two arguments are the same value.\n\t *"}},"add":{"category":"math","description":"Adds two numbers.","examples":[{"tag":"example","optional":false,"description":"import { add, assert } from '@universalweb/acid'; assert(add(1, 1), 2);","source":"import { add, assert } from \"@universalweb/acid\";\nassert(add(1, 1), 2);\n"}],"name":"add","params":[{"tag":"param","name":"augend","type":"Number","optional":false,"description":"- First number.","source":"* {Number} augend - First number."},{"tag":"param","name":"addend","type":"Number","optional":false,"description":"- Second number which is being added to another (augend).","source":"* {Number} addend - Second number which is being added to another (augend)."}],"type":"function","functionTag":"add","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns the sum of the arguments.","source":"* {Number} - Returns the sum of the arguments.\n\t *"}},"deduct":{"category":"math","description":"Decrements a number.","examples":[{"tag":"example","optional":false,"description":"import { multiply, assert } from '@universalweb/acid'; assert(multiply(10, 5), 50); deduct(10); // => 9","source":"import { multiply, assert } from \"@universalweb/acid\";\nassert(multiply(10, 5), 50);\ndeduct(10);\n// => 9\n"}],"name":"deduct","params":[{"tag":"param","name":"number","type":"Number","optional":false,"description":"- First number.","source":"* {Number} number - First number."}],"type":"function","functionTag":"deduct","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns a decremented version of the number.","source":"* {Number} - Returns a decremented version of the number.\n\t *"}},"divide":{"category":"math","description":"Divides two numbers.","examples":[{"tag":"example","optional":false,"description":"import { divide, assert } from '@universalweb/acid'; assert(divide(10, 5), 2);","source":"import { divide, assert } from \"@universalweb/acid\";\nassert(divide(10, 5), 2);\n"}],"name":"divide","params":[{"tag":"param","name":"number","type":"Number","optional":false,"description":"- First number.","source":"* {Number} number - First number."},{"tag":"param","name":"value","type":"Number","optional":false,"description":"- Second number.","source":"* {Number} value - Second number."}],"type":"function","functionTag":"divide","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns the quotient of the arguments.","source":"* {Number} - Returns the quotient of the arguments.\n\t *"}},"increment":{"category":"math","description":"Increments a number.","examples":[{"tag":"example","optional":false,"description":"import { multiply, assert } from '@universalweb/acid'; assert(multiply(10, 5), 50); increment(10); // => 11","source":"import { multiply, assert } from \"@universalweb/acid\";\nassert(multiply(10, 5), 50);\nincrement(10);\n// => 11\n"}],"name":"increment","params":[{"tag":"param","name":"number","type":"Number","optional":false,"description":"- First number.","source":"* {Number} number - First number."}],"type":"function","functionTag":"increment","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns an incremented version of the number.","source":"* {Number} - Returns an incremented version of the number.\n\t *"}},"multiply":{"category":"math","description":"Multiplies two numbers.","examples":[{"tag":"example","optional":false,"description":"import { multiply, assert } from '@universalweb/acid'; assert(multiply(10, 5), 50);","source":"import { multiply, assert } from \"@universalweb/acid\";\nassert(multiply(10, 5), 50);\n"}],"name":"multiply","params":[{"tag":"param","name":"number","type":"Number","optional":false,"description":"- First number.","source":"* {Number} number - First number."},{"tag":"param","name":"value","type":"Number","optional":false,"description":"- Second number.","source":"* {Number} value - Second number."}],"type":"function","functionTag":"multiply","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns the product of the arguments.","source":"* {Number} - Returns the product of the arguments.\n\t *"}},"calcProgress":{"category":"utility","description":"Calculate the progress from a given total and current amount.","examples":[{"tag":"example","optional":false,"description":"import { calcProgress, assert } from '@universalweb/acid'; assert(calcProgress(100, 1), 1);","source":"import { calcProgress, assert } from \"@universalweb/acid\";\nassert(calcProgress(100, 1), 1);\n"}],"name":"calcProgress","params":[{"tag":"param","name":"total","type":"Number","optional":false,"description":"- The total amount.","source":"* {Number} total - The total amount."},{"tag":"param","name":"currentAmount","type":"Number","optional":false,"description":"- The current amount.","source":"* {Number} currentAmount - The current amount."}],"type":"function","functionTag":"calcProgress","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The progress as a percentage.","source":"* {Number} - The progress as a percentage.\n\t *"}},"randomFloat":{"category":"math","description":"Produces a random floating-point number between min (included) and max (excluded). Do not use for security or encryption.","examples":[{"tag":"example","optional":false,"description":"import { randomFloat, assert } from '@universalweb/acid'; assert(randomFloat(10, 0), (value) => { return value > 0 && value < 10;}); // => 9.1","source":"import { randomFloat, assert } from \"@universalweb/acid\";\nassert(randomFloat(10, 0), (value) => {\n return value > 0 && value < 10;\n});\n// => 9.1\n"}],"name":"randomFloat","params":[{"tag":"param","name":"max","type":"Number","optional":false,"description":"- Establishes highest possible value for the random number.","source":"* {Number} max - Establishes highest possible value for the random number."},{"tag":"param","name":"min","type":"Number","optional":true,"description":"- Establishes lowest possible value for the random number.","source":"* {Number} [min = 0] - Establishes lowest possible value for the random number.","default":"0"}],"type":"function","functionTag":"randomFloat","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns random integer between the max and min range.","source":"* {Number} - Returns random integer between the max and min range.\n\t *"}},"remainder":{"category":"math","description":"Extracts the remainder between two numbers.","examples":[{"tag":"example","optional":false,"description":"import { multiply, assert } from '@universalweb/acid'; assert(multiply(10, 5), 50); remainder(10, 6); // => 4","source":"import { multiply, assert } from \"@universalweb/acid\";\nassert(multiply(10, 5), 50);\nremainder(10, 6);\n// => 4\n"}],"name":"remainder","params":[{"tag":"param","name":"number","type":"Number","optional":false,"description":"- First number.","source":"* {Number} number - First number."},{"tag":"param","name":"value","type":"Number","optional":false,"description":"- Second number.","source":"* {Number} value - Second number."}],"type":"function","functionTag":"remainder","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns the remainder of the arguments.","source":"* {Number} - Returns the remainder of the arguments.\n\t *"}},"subtractAll":{"category":"math","description":"Subtract all numbers in the array starting from left to right & return the difference.","examples":[{"tag":"example","optional":false,"description":"import { subtractAll, assert } from '@universalweb/acid'; assert(subtractAll([10, 1, 2, 3]), 5);","source":"import { subtractAll, assert } from \"@universalweb/acid\";\nassert(subtractAll([10, 1, 2, 3]), 5);\n"}],"name":"subtractAll","params":[{"tag":"param","name":"source","type":"Number[]","optional":false,"description":"- Array of numbers.","source":"* {Number[]} source - Array of numbers."}],"type":"function","functionTag":"subtractAll","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns the final difference.","source":"* {Number} - Returns the final difference.\n\t *"}},"sumAll":{"category":"math","description":"Sum all numbers in a given array.","examples":[{"tag":"example","optional":false,"description":"import { sumAll, assert } from '@universalweb/acid'; assert(sumAll([10, 1, 2, 3]), 5);","source":"import { sumAll, assert } from \"@universalweb/acid\";\nassert(sumAll([10, 1, 2, 3]), 5);\n"}],"name":"sumAll","params":[{"tag":"param","name":"source","type":"Number[]","optional":false,"description":"- Array of numbers.","source":"* {Number[]} source - Array of numbers."}],"type":"function","functionTag":"sumAll","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns a single number.","source":"* {Number} - Returns a single number.\n\t *"}},"isNumberInRange":{"category":"number","description":"Checks if a number is within a range.","examples":[{"tag":"example","optional":false,"description":"import { isNumberInRange, assert } from '@universalweb/acid'; assert(isNumberInRange(1, 0, 2), true); assert(isNumberInRange(1, 2, 5), false);","source":"import { isNumberInRange, assert } from \"@universalweb/acid\";\nassert(isNumberInRange(1, 0, 2), true);\nassert(isNumberInRange(1, 2, 5), false);\n"}],"name":"isNumberInRange","params":[{"tag":"param","name":"source","type":"Number","optional":false,"description":"- Number to be checked.","source":"* {Number} source - Number to be checked."},{"tag":"param","name":"start","type":"Number","optional":false,"description":"- Beginning of range.","source":"* {Number} start - Beginning of range."},{"tag":"param","name":"end","type":"Number","optional":false,"description":"- End of range.","source":"* {Number} end - End of range."}],"type":"function","functionTag":"isNumberInRange","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isNumberNotInRange":{"category":"number","description":"Checks if a number is within a range.","examples":[{"tag":"example","optional":false,"description":"import { isNumberNotInRange, assert } from '@universalweb/acid'; assert(isNumberNotInRange(1, 0, 2), false); assert(isNumberNotInRange(1, 2, 5), true);","source":"import { isNumberNotInRange, assert } from \"@universalweb/acid\";\nassert(isNumberNotInRange(1, 0, 2), false);\nassert(isNumberNotInRange(1, 2, 5), true);\n"}],"name":"isNumberNotInRange","params":[{"tag":"param","name":"source","type":"Number","optional":false,"description":"- Number to be checked.","source":"* {Number} source - Number to be checked."},{"tag":"param","name":"start","type":"Number","optional":false,"description":"- Beginning of range.","source":"* {Number} start - Beginning of range."},{"tag":"param","name":"end","type":"Number","optional":false,"description":"- End of range.","source":"* {Number} end - End of range."}],"type":"function","functionTag":"isNumberNotInRange","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isPositive":{"category":"number","description":"Checks if a number is negative & returns true or false.","examples":[{"tag":"example","optional":false,"description":"import { isPositive, assert } from '@universalweb/acid'; assert(isPositive(1), true);","source":"import { isPositive, assert } from \"@universalweb/acid\";\nassert(isPositive(1), true);\n"}],"name":"isPositive","params":[{"tag":"param","name":"source","type":"Number","optional":false,"description":"- Number to be checked.","source":"* {Number} source - Number to be checked."}],"type":"function","functionTag":"isPositive","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isZero":{"category":"number","description":"Strictly checks if a number is zero.","examples":[{"tag":"example","optional":false,"description":"import { isZero, assert } from '@universalweb/acid'; assert(isZero(0), true);","source":"import { isZero, assert } from \"@universalweb/acid\";\nassert(isZero(0), true);\n"}],"name":"isZero","params":[{"tag":"param","name":"source","type":"Number","optional":false,"description":"- Number to be checked.","source":"* {Number} source - Number to be checked."}],"type":"function","functionTag":"isZero","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"getEntries":{"category":"object","description":"Return turns an array of arrays of key & value pairs. The first element in each key & value pair is the property key, and the second element is the associated value. If source is null or undefined it will not crash or error.","examples":[{"tag":"example","optional":false,"description":"import { getEntries, assert } from '@universalweb/acid'; assert(getEntries({b: 2, a: 1}), [['b', 2],['a', 1]]);","source":"import { getEntries, assert } from \"@universalweb/acid\";\nassert(getEntries({ b: 2, a: 1 }), [\n [\"b\", 2],\n [\"a\", 1],\n]);\n"}],"name":"getEntries","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- The source object.","source":"* {Object} source - The source object."}],"type":"function","functionTag":"getEntries","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns the Object.entries of the source object.","source":"* {Array} - Returns the Object.entries of the source object.\n\t *"}},"compactKeys":{"category":"object","description":"Extracts all keys from an object whose values are not null or undefined.","examples":[{"tag":"example","optional":false,"description":"import { compactKeys, assert } from '@universalweb/acid'; assert(compactKeys({a: 1, b: 0, c: undefined, d: false, e: null}), ['a', 'b', 'd']);","source":"import { compactKeys, assert } from \"@universalweb/acid\";\nassert(compactKeys({ a: 1, b: 0, c: undefined, d: false, e: null }), [\n \"a\",\n \"b\",\n \"d\",\n]);\n"}],"name":"compactKeys","params":[{"tag":"param","name":"object","type":"Object","optional":false,"description":"- Object from which keys are extracted.","source":"* {Object} object - Object from which keys are extracted."}],"type":"function","functionTag":"compactKeys","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns an array of key values.","source":"* {Array} - Returns an array of key values.\n\t *"}},"compactMapAsyncObject":{"category":"object","description":"Asynchronously iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { compactMapAsyncObject, assert } from '@universalweb/acid'; assert(await compactMapAsyncObject({a: 1, b: undefined, c: 3}, (item) => { return item; }), {a: 1, c: 3});","source":"import { compactMapAsyncObject, assert } from \"@universalweb/acid\";\nassert(\n await compactMapAsyncObject({ a: 1, b: undefined, c: 3 }, (item) => {\n return item;\n }),\n { a: 1, c: 3 },\n);\n"}],"name":"compactMapAsyncObject","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"results","type":"Object|Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object|Function} [results = {}] - Object that will be used to assign results.","default":"{}"}],"type":"function","functionTag":"compactMapAsyncObject","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"An object with mapped properties that are not null or undefined.","source":"* {Object|Function} - An object with mapped properties that are not null or undefined.\n\t *"}},"compactMapObject":{"category":"object","description":"Iterates through the calling object and creates an object with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { compactMapObject, assert } from '@universalweb/acid'; assert(compactMapObject({a: 1, b: undefined, c: 3}, (item) => { return item; }), {a: 1, c: 3});","source":"import { compactMapObject, assert } from \"@universalweb/acid\";\nassert(\n compactMapObject({ a: 1, b: undefined, c: 3 }, (item) => {\n return item;\n }),\n { a: 1, c: 3 },\n);\n"}],"name":"compactMapObject","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"results","type":"Object|Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object|Function} [results = {}] - Object that will be used to assign results.","default":"{}"}],"type":"function","functionTag":"compactMapObject","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"An object with mapped properties that are not null or undefined.","source":"* {Object|Function} - An object with mapped properties that are not null or undefined.\n\t *"}},"filterObject":{"category":"object","description":"Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"filterObject({a: false, b: true, c: true}, (item) => { return item; }); // => {b: true, c: true}","source":"filterObject({ a: false, b: true, c: true }, (item) => {\n return item;\n});\n// => {b: true, c: true}\n"}],"name":"filterObject","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"results","type":"Object|Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object|Function} [results = {}] - Object that will be used to assign results.","default":"{}"}],"type":"function","functionTag":"filterObject","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"An object with properties that passed the test.","source":"* {Object|Function} - An object with properties that passed the test.\n\t *"}},"filterAsyncObject":{"category":"object","description":"Iterates through the calling object and creates an object with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"filterAsyncObject({a: false, b: true, c: true}, (item) => { return item; }); // => {b: true, c: true}","source":"filterAsyncObject({ a: false, b: true, c: true }, (item) => {\n return item;\n});\n// => {b: true, c: true}\n"}],"name":"filterAsyncObject","params":[{"tag":"param","name":"source","type":"Object|Function","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"results","type":"Object|Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object|Function} [results = {}] - Object that will be used to assign results.","default":"{}"}],"type":"function","functionTag":"filterAsyncObject","returns":{"tag":"returns","name":"-","type":"Object|Function","optional":false,"description":"An object with properties that passed the test.","source":"* {Object|Function} - An object with properties that passed the test.\n\t *"}},"invert":{"category":"object","description":"Creates an inverted version of a given object by switching it's keys and values.","examples":[{"tag":"example","optional":false,"description":"import { invert, assert } from '@universalweb/acid'; assert(invert({a:1}), {1:'a'});","source":"import { invert, assert } from \"@universalweb/acid\";\nassert(invert({ a: 1 }), { 1: \"a\" });\n"}],"name":"invert","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Object to be inverted.","source":"* {Object} source - Object to be inverted."},{"tag":"param","name":"target","type":"Array","optional":true,"description":"- Empty object to be populated with inverted values from source.","source":"* {Array} [target = {}] - Empty object to be populated with inverted values from source.","default":"{}"}],"type":"function","functionTag":"invert","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns object with keys and values switched.","source":"* {Object} - Returns object with keys and values switched.\n\t *"}},"isMatchObject":{"category":"object","description":"Performs a shallow strict comparison between two objects.","examples":[{"tag":"example","optional":false,"description":"import { assert, isMatchObject } from '@universalweb/acid'; assert(isMatchObject({a: 1}, {a: 1}), true);","source":"import { assert, isMatchObject } from \"@universalweb/acid\";\nassert(isMatchObject({ a: 1 }, { a: 1 }), true);\n"}],"name":"isMatchObject","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Source object.","source":"* {Object} source - Source object."},{"tag":"param","name":"target","type":"Object","optional":false,"description":"- Object to compare to source.","source":"* {Object} target - Object to compare to source."}],"type":"function","functionTag":"isMatchObject","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isRegex":{"category":"type","description":"Checks if the value is a RegExp.","examples":[{"tag":"example","optional":false,"description":"import { isRegex, assert } from '@universalweb/acid'; assert(isRegex(/test/), true);","source":"import { isRegex, assert } from \"@universalweb/acid\";\nassert(isRegex(/test/), true);\n"}],"name":"isRegex","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isRegex","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"regexSafe":{"category":"regex","description":"Returns a regex safe special characters escaped version of a string.","examples":[{"tag":"example","optional":false,"description":"import { regexSafe, assert } from '@universalweb/acid'; assert(regexSafe(/.+/), '\\/\\.\\+\\/');","source":"import { regexSafe, assert } from \"@universalweb/acid\";\nassert(regexSafe(/.+/), \"/.+/\");\n"}],"name":"regexSafe","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- String to make safe.","source":"* {Object} source - String to make safe."}],"type":"function","functionTag":"regexSafe","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns a regex safe version of the string.","source":"* {Object} - Returns a regex safe version of the string.\n\t *"}},"arrayToRegex":{"category":"regex","description":"Convert array of strings to regex.","examples":[{"tag":"example","optional":false,"description":"import { arrayToRegex, assert } from '@universalweb/acid'; assert(String(arrayToRegex(['a','b'])), String(/a|b/));","source":"import { arrayToRegex, assert } from \"@universalweb/acid\";\nassert(String(arrayToRegex([\"a\", \"b\"])), String(/a|b/));\n"}],"name":"arrayToRegex","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Array of strings.","source":"* {Object} source - Array of strings."}],"type":"function","functionTag":"arrayToRegex","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns a regex safe version of the string.","source":"* {Object} - Returns a regex safe version of the string.\n\t *"}},"omit":{"category":"object","description":"Returns a clone of the given object without the given properties.","examples":[{"tag":"example","optional":false,"description":"import { omit, assert } from '@universalweb/acid'; assert(omit({a:1, b:2}, ['a']), {b:2}); assert(omit({a:1, b:2}, 'a'), {b:2}); assert(omit({1:'test', b:2}, 1), {b:2});","source":"import { omit, assert } from \"@universalweb/acid\";\nassert(omit({ a: 1, b: 2 }, [\"a\"]), { b: 2 });\nassert(omit({ a: 1, b: 2 }, \"a\"), { b: 2 });\nassert(omit({ 1: \"test\", b: 2 }, 1), { b: 2 });\n"}],"name":"omit","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Object from which keys are extracted.","source":"* {Object} source - Object from which keys are extracted."},{"tag":"param","name":"blacklist","type":"Array|RegExp|String","optional":false,"description":"- List of property keys to omit from the returned object.","source":"* {Array|RegExp|String} blacklist - List of property keys to omit from the returned object."}],"type":"function","functionTag":"omit","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"A new object with the removed.","source":"* {Object} - A new object with the removed.\n\t *"}},"pick":{"category":"object","description":"Returns a clone of the source object with the plucked properties.","examples":[{"tag":"example","optional":false,"description":"pick({a:1, b:2, c:3}, ['a','b']); // => {a:1, b:2}","source":"pick({ a: 1, b: 2, c: 3 }, [\"a\", \"b\"]);\n// => {a:1, b:2}\n"}],"name":"pick","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Object to be cloned.","source":"* {Object} source - Object to be cloned."},{"tag":"param","name":"whitelist","type":"Array","optional":false,"description":"- Array of property names used to determine what values to pluck.","source":"* {Array} whitelist - Array of property names used to determine what values to pluck."},{"tag":"param","name":"target","type":"Object","optional":true,"description":"- Object to be populated with plucked values.","source":"* {Object} [target = {}] - Object to be populated with plucked values.","default":"{}"}],"type":"function","functionTag":"pick","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"A new object with plucked properties.","source":"* {Object} - A new object with plucked properties.\n\t *"}},"objectSize":{"category":"object","description":"Returns the amount of keys on the object.","examples":[{"tag":"example","optional":false,"description":"objectSize({ 0: 'a', 1: 'b', 2: 'c' }); // => 3","source":"objectSize({ 0: \"a\", 1: \"b\", 2: \"c\" });\n// => 3\n"}],"name":"objectSize","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- The source object.","source":"* {Object} source - The source object."}],"type":"function","functionTag":"objectSize","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"The amount of keys.","source":"* {Number} - The amount of keys.\n\t *"}},"zipObject":{"category":"object","description":"Creates an object from two arrays, one of property identifiers and one of corresponding values.","examples":[{"tag":"example","optional":false,"description":"zipObject(['a', 'b'], [1, 2]); // => { 'a': 1, 'b': 2 }","source":"zipObject([\"a\", \"b\"], [1, 2]);\n// => { 'a': 1, 'b': 2 }\n"}],"name":"zipObject","params":[{"tag":"param","name":"properties","type":"Array","optional":false,"description":"- The property identifiers.","source":"* {Array} properties - The property identifiers."},{"tag":"param","name":"values","type":"Array","optional":false,"description":"- The property values.","source":"* {Array} values - The property values."}],"type":"function","functionTag":"zipObject","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the new object.","source":"* {Object} - Returns the new object.\n\t *"}},"unZipObject":{"category":"object","description":"Takes an array of grouped elements and creates an array regrouping the elements to their pre-zip object configuration.","examples":[{"tag":"example","optional":false,"description":"unZipObject({ 'a': 1, 'b': 2 }); // => [['a', 'b'], [1, 2]]","source":"unZipObject({ a: 1, b: 2 });\n// => [['a', 'b'], [1, 2]]\n"}],"name":"unZipObject","params":[{"tag":"param","name":"object","type":"Object","optional":false,"description":"- The object to process.","source":"* {Object} object - The object to process."}],"type":"function","functionTag":"unZipObject","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns two arrays one of keys and the other of values inside a single array.","source":"* {Array} - Returns two arrays one of keys and the other of values inside a single array.\n\t *"}},"camelCase":{"category":"string","description":"Converts a string into Camel case format.","examples":[{"tag":"example","optional":false,"description":"import { camelCase, assert } from '@universalweb/acid'; assert(camelCase('camel case'), 'camelCase');","source":"import { camelCase, assert } from \"@universalweb/acid\";\nassert(camelCase(\"camel case\"), \"camelCase\");\n"}],"name":"camelCase","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- String to be converted into Camel case.","source":"* {String} source - String to be converted into Camel case."}],"type":"function","functionTag":"camelCase","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Converted string in Camel case.","source":"* {String} - Converted string in Camel case.\n\t *"}},"kebabCase":{"category":"string","description":"Converts a string into single space sepperated words in Kebab case.","examples":[{"tag":"example","optional":false,"description":"import { kebabCase, assert } from '@universalweb/acid'; assert(kebabCase('kebab case'), 'kebab-case');","source":"import { kebabCase, assert } from \"@universalweb/acid\";\nassert(kebabCase(\"kebab case\"), \"kebab-case\");\n"}],"name":"kebabCase","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- String to be converted into Kebab case.","source":"* {String} source - String to be converted into Kebab case."}],"type":"function","functionTag":"kebabCase","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Converted string in Kebab case.","source":"* {String} - Converted string in Kebab case.\n\t *"}},"snakeCase":{"category":"string","description":"Converts a string into single space sepperated words in snake case.","examples":[{"tag":"example","optional":false,"description":"import { snakeCase, assert } from '@universalweb/acid'; assert(snakeCase('snake case'), 'snake_case');","source":"import { snakeCase, assert } from \"@universalweb/acid\";\nassert(snakeCase(\"snake case\"), \"snake_case\");\n"}],"name":"snakeCase","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- String to be converted into snake case.","source":"* {String} source - String to be converted into snake case."}],"type":"function","functionTag":"snakeCase","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Converted string in Snake case.","source":"* {String} - Converted string in Snake case.\n\t *"}},"upperCase":{"category":"string","description":"Converts a string into single space sepperated words in uppercase.","examples":[{"tag":"example","optional":false,"description":"import { upperCase, assert } from '@universalweb/acid'; assert(upperCase('upper-case'), 'UPPER CASE'); assert(upperCase('upper_case'), 'UPPER CASE');","source":"import { upperCase, assert } from \"@universalweb/acid\";\nassert(upperCase(\"upper-case\"), \"UPPER CASE\");\nassert(upperCase(\"upper_case\"), \"UPPER CASE\");\n"}],"name":"upperCase","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- String to be converted into upper case.","source":"* {String} source - String to be converted into upper case."}],"type":"function","functionTag":"upperCase","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Converted string in upper case.","source":"* {String} - Converted string in upper case.\n\t *"}},"lowerCase":{"category":"string","description":"Converts a string into single space sepperated words in lowerCase.","examples":[{"tag":"example","optional":false,"description":"import { lowerCase, assert } from '@universalweb/acid'; assert(lowerCase('lower-CASE'), 'lower case');","source":"import { lowerCase, assert } from \"@universalweb/acid\";\nassert(lowerCase(\"lower-CASE\"), \"lower case\");\n"}],"name":"lowerCase","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- String to be converted into upper case.","source":"* {String} source - String to be converted into upper case."}],"type":"function","functionTag":"lowerCase","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Converted string in upper case.","source":"* {String} - Converted string in upper case.\n\t *"}},"insertInRange":{"category":"string","description":"Inserts text into a string at a given position.","examples":[{"tag":"example","optional":false,"description":"import { insertInRange, assert } from '@universalweb/acid'; assert(insertInRange('A from Lucy.', 1, ' tab'), 'A tab from Lucy.');","source":"import { insertInRange, assert } from \"@universalweb/acid\";\nassert(insertInRange(\"A from Lucy.\", 1, \" tab\"), \"A tab from Lucy.\");\n"}],"name":"insertInRange","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to insert the text into.","source":"* {String} string - String to insert the text into."},{"tag":"param","name":"index","type":"Number","optional":false,"description":"- Point of insertion.","source":"* {Number} index - Point of insertion."},{"tag":"param","name":"text","type":"String","optional":false,"description":"- The string to be inserted.","source":"* {String} text - The string to be inserted."}],"type":"function","functionTag":"insertInRange","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"The string with the text inserted at the given point.","source":"* {String} - The string with the text inserted at the given point.\n\t *"}},"rightString":{"category":"string","description":"Plucks a letter using the index starting from the right.","examples":[{"tag":"example","optional":false,"description":"import { rightString, assert } from '@universalweb/acid'; assert(rightString('rightString'), 'g'); assert(rightString('rightString', 2), 'n');","source":"import { rightString, assert } from \"@universalweb/acid\";\nassert(rightString(\"rightString\"), \"g\");\nassert(rightString(\"rightString\", 2), \"n\");\n"}],"name":"rightString","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to extract the letter from.","source":"* {String} string - String to extract the letter from."},{"tag":"param","name":"index","type":"Number","optional":true,"description":"- The starting position.","source":"* {Number} [index=1] - The starting position.","default":"1"}],"type":"function","functionTag":"rightString","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"A letter at the given index.","source":"* {String} - A letter at the given index.\n\t *"}},"chunkString":{"category":"string","description":"Splits up a string into chunks.","examples":[{"tag":"example","optional":false,"description":"import { chunkString, assert } from '@universalweb/acid'; assert(chunkString('chunk', 2), ['ch', 'un', 'k']);","source":"import { chunkString, assert } from \"@universalweb/acid\";\nassert(chunkString(\"chunk\", 2), [\"ch\", \"un\", \"k\"]);\n"}],"name":"chunkString","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to chunked.","source":"* {String} string - String to chunked."},{"tag":"param","name":"size","type":"Number","optional":true,"description":"- The max string length per chunk.","source":"* {Number} [size] - The max string length per chunk."}],"type":"function","functionTag":"chunkString","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with strings that are <= size parameter.","source":"* {Array} - An array with strings that are <= size parameter.\n\t *"}},"initialString":{"category":"string","description":"Truncates everything before the index starting from the right.","examples":[{"tag":"example","optional":false,"description":"import { initialString, assert } from '@universalweb/acid'; assert(initialString('initialString', 2), 'initialStri');","source":"import { initialString, assert } from \"@universalweb/acid\";\nassert(initialString(\"initialString\", 2), \"initialStri\");\n"}],"name":"initialString","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to extract the initial letters from.","source":"* {String} string - String to extract the initial letters from."},{"tag":"param","name":"index","type":"Number","optional":true,"description":"- Starting point from the right.","source":"* {Number} [index=1] - Starting point from the right.","default":"1"}],"type":"function","functionTag":"initialString","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"A string with the characters before the index starting from the right.","source":"* {String} - A string with the characters before the index starting from the right.\n\t *"}},"restString":{"category":"string","description":"Truncates everything after a index.","examples":[{"tag":"example","optional":false,"description":"import { restString, assert } from '@universalweb/acid'; assert(restString('restString', 2), 'stString');","source":"import { restString, assert } from \"@universalweb/acid\";\nassert(restString(\"restString\", 2), \"stString\");\n"}],"name":"restString","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to extract the rest of the letters from.","source":"* {String} string - String to extract the rest of the letters from."},{"tag":"param","name":"index","type":"Number","optional":true,"description":"- Starting point.","source":"* {Number} [index=1] - Starting point.","default":"1"}],"type":"function","functionTag":"restString","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"A string without the characters up-to to the index.","source":"* {String} - A string without the characters up-to to the index.\n\t *"}},"replaceList":{"category":"string","description":"Replaces all occurrences of strings in an array with a value.","examples":[{"tag":"example","optional":false,"description":"import { replaceList, assert } from '@universalweb/acid'; assert(replaceList('user name was user.', ['user'], 'this'), 'this name was this.');","source":"import { replaceList, assert } from \"@universalweb/acid\";\nassert(\n replaceList(\"user name was user.\", [\"user\"], \"this\"),\n \"this name was this.\",\n);\n"}],"name":"replaceList","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be replaced.","source":"* {String} string - String to be replaced."},{"tag":"param","name":"words","type":"Array","optional":false,"description":"- Strings to replace.","source":"* {Array} words - Strings to replace."},{"tag":"param","name":"value","type":"String","optional":false,"description":"- The match replacement.","source":"* {String} value - The match replacement."}],"type":"function","functionTag":"replaceList","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"The string with the replacement.","source":"* {String} - The string with the replacement.\n\t *"}},"truncate":{"category":"string","description":"Truncates the string, accounting for word placement and character count.","examples":[{"tag":"example","optional":false,"description":"import { truncate, assert } from '@universalweb/acid'; assert(truncate('Where is Lucy?', 2), 'Where is');","source":"import { truncate, assert } from \"@universalweb/acid\";\nassert(truncate(\"Where is Lucy?\", 2), \"Where is\");\n"}],"name":"truncate","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be truncated.","source":"* {String} string - String to be truncated."},{"tag":"param","name":"maxLength","type":"Number","optional":false,"description":"- The desired max length of the string.","source":"* {Number} maxLength - The desired max length of the string."}],"type":"function","functionTag":"truncate","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"The mutated string.","source":"* {String} - The mutated string.\n\t *"}},"truncateRight":{"category":"string","description":"Truncates the string, accounting for word placement and character count from the right.","examples":[{"tag":"example","optional":false,"description":"import { truncateRight, assert } from '@universalweb/acid'; assert(truncateRight('Where is Lucy?', 6), 'Lucy?');","source":"import { truncateRight, assert } from \"@universalweb/acid\";\nassert(truncateRight(\"Where is Lucy?\", 6), \"Lucy?\");\n"}],"name":"truncateRight","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be truncated.","source":"* {String} string - String to be truncated."},{"tag":"param","name":"maxLength","type":"Number","optional":false,"description":"- The desired max length of the string.","source":"* {Number} maxLength - The desired max length of the string."}],"type":"function","functionTag":"truncateRight","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"The mutated string.","source":"* {String} - The mutated string.\n\t *"}},"rawURLDecode":{"category":"string","description":"Raw URL decoder.","examples":[{"tag":"example","optional":false,"description":"import { rawURLDecode, assert } from '@universalweb/acid'; assert(rawURLDecode('Lucy%20saw%20diamonds%20in%20the%20sky.'), 'Lucy saw diamonds in the sky.');","source":"import { rawURLDecode, assert } from \"@universalweb/acid\";\nassert(\n rawURLDecode(\"Lucy%20saw%20diamonds%20in%20the%20sky.\"),\n \"Lucy saw diamonds in the sky.\",\n);\n"}],"name":"rawURLDecode","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be replaced.","source":"* {String} string - String to be replaced."}],"type":"function","functionTag":"rawURLDecode","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Converted string into the decoded URI Component .","source":"* {String} - Converted string into the decoded URI Component .\n\t *"}},"htmlEntities":{"category":"string","description":"Replaced sensitive characters with their matching html entity.","examples":[{"tag":"example","optional":false,"description":"import { htmlEntities, assert } from '@universalweb/acid'; assert(htmlEntities(``), `<script>console.log('Lucy & diamonds.')</script>`);","source":"import { htmlEntities, assert } from \"@universalweb/acid\";\nassert(\n htmlEntities(``),\n `<script>console.log('Lucy & diamonds.')</script>`,\n);\n"}],"name":"htmlEntities","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be replaced.","source":"* {String} string - String to be replaced."}],"type":"function","functionTag":"htmlEntities","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Replaced string.","source":"* {String} - Replaced string.\n\t *"}},"sanitize":{"category":"string","description":"Executes rawURLDecode followd by htmlEntities methods on a string.","examples":[{"tag":"example","optional":false,"description":"import { sanitize, assert } from '@universalweb/acid'; assert(sanitize(``),`<script>console.log('Lucy & diamonds.')</script>`);","source":"import { sanitize, assert } from \"@universalweb/acid\";\nassert(\n sanitize(``),\n `<script>console.log('Lucy & diamonds.')</script>`,\n);\n"}],"name":"sanitize","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be replaced.","source":"* {String} string - String to be replaced."}],"type":"function","functionTag":"sanitize","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Replaced string.","source":"* {String} - Replaced string.\n\t *"}},"tokenize":{"category":"string","description":"Break string by non-white space characters matches.","examples":[{"tag":"example","optional":false,"description":"import { tokenize, assert } from '@universalweb/acid'; assert(tokenize('I am Lucy!'), [\"I\", \"am\", \"Acid!\"]);","source":"import { tokenize, assert } from \"@universalweb/acid\";\nassert(tokenize(\"I am Lucy!\"), [\"I\", \"am\", \"Acid!\"]);\n"}],"name":"tokenize","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be broken up.","source":"* {String} string - String to be broken up."}],"type":"function","functionTag":"tokenize","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Array of words without white space characters.","source":"* {Array} - Array of words without white space characters.\n\t *"}},"words":{"description":"Break string into word matches.","examples":[{"tag":"example","optional":false,"description":"import { words, assert } from '@universalweb/acid'; assert(words('I am Acid!'), [\"I\", \"am\", \"Acid\"]);","source":"import { words, assert } from \"@universalweb/acid\";\nassert(words(\"I am Acid!\"), [\"I\", \"am\", \"Acid\"]);\n"}],"name":"words","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be broken up.","source":"* {String} string - String to be broken up."}],"type":"function","functionTag":"words","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Array of words with word characters only.","source":"* {Array} - Array of words with word characters only.\n\t *"}},"upperFirstLetter":{"category":"string","description":"Returns the first letter capitalized.","examples":[{"tag":"example","optional":false,"description":"import { upperFirstLetter, assert } from '@universalweb/acid'; assert(upperFirstLetter('upper'), 'U');","source":"import { upperFirstLetter, assert } from \"@universalweb/acid\";\nassert(upperFirstLetter(\"upper\"), \"U\");\n"}],"name":"upperFirstLetter","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to extract first letter from.","source":"* {String} string - String to extract first letter from."}],"type":"function","functionTag":"upperFirstLetter","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"An upper case letter.","source":"* {String} - An upper case letter.\n\t *"}},"upperFirst":{"category":"string","description":"Capitalizes the first letter.","examples":[{"tag":"example","optional":false,"description":"import { upperFirst, assert } from '@universalweb/acid'; assert(upperFirstLetter('upper'), 'U'); upperFirst('upper'); // => 'Upper'","source":"import { upperFirst, assert } from \"@universalweb/acid\";\nassert(upperFirstLetter(\"upper\"), \"U\");\nupperFirst(\"upper\");\n// => 'Upper'\n"}],"name":"upperFirst","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be mutated.","source":"* {String} string - String to be mutated."}],"type":"function","functionTag":"upperFirst","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"String with first letter capitalized.","source":"* {String} - String with first letter capitalized.\n\t *"}},"upperFirstOnly":{"category":"string","description":"Capitalize first letter and lower case the rest.","examples":[{"tag":"example","optional":false,"description":"import { upperFirstOnly, assert } from '@universalweb/acid'; assert(upperFirstOnly('upper'), 'Upper');","source":"import { upperFirstOnly, assert } from \"@universalweb/acid\";\nassert(upperFirstOnly(\"upper\"), \"Upper\");\n"}],"name":"upperFirstOnly","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be mutated.","source":"* {String} string - String to be mutated."}],"type":"function","functionTag":"upperFirstOnly","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"String with first letter capitalized.","source":"* {String} - String with first letter capitalized.\n\t *"}},"upperFirstAll":{"category":"string","description":"Capitalize all first letters.","examples":[{"tag":"example","optional":false,"description":"import { upperFirstAll, assert } from '@universalweb/acid'; assert(upperFirstAll('uPPer'), 'UPPer');","source":"import { upperFirstAll, assert } from \"@universalweb/acid\";\nassert(upperFirstAll(\"uPPer\"), \"UPPer\");\n"}],"name":"upperFirstAll","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be mutated.","source":"* {String} string - String to be mutated."}],"type":"function","functionTag":"upperFirstAll","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"String with all first letters capitalized.","source":"* {String} - String with all first letters capitalized.\n\t *"}},"upperFirstOnlyAll":{"category":"string","description":"Capitalize all first letters and lower case the rest.","examples":[{"tag":"example","optional":false,"description":"import { upperFirstOnlyAll, assert } from '@universalweb/acid'; assert(upperFirstOnlyAll('this is'), 'This Is');","source":"import { upperFirstOnlyAll, assert } from \"@universalweb/acid\";\nassert(upperFirstOnlyAll(\"this is\"), \"This Is\");\n"}],"name":"upperFirstOnlyAll","params":[{"tag":"param","name":"string","type":"String","optional":false,"description":"- String to be mutated.","source":"* {String} string - String to be mutated."}],"type":"function","functionTag":"upperFirstOnlyAll","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"String with all first letters capitalized.","source":"* {String} - String with all first letters capitalized.\n\t *"}},"getTypeName":{"category":"type","description":"Returns the constructor name of an object.","examples":[{"tag":"example","optional":false,"description":"import { getTypeName, assert } from '@universalweb/acid'; assert(getTypeName(1), true);","source":"import { getTypeName, assert } from \"@universalweb/acid\";\nassert(getTypeName(1), true);\n"}],"name":"getTypeName","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"getTypeName","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isArguments":{"category":"type","description":"Checks if the value is an Arguments object.","examples":[{"tag":"example","optional":false,"description":"import { isArguments, assert } from '@universalweb/acid'; assert(isArguments((function() { return arguments;})()), true); assert(isArguments([]), false);","source":"import { isArguments, assert } from \"@universalweb/acid\";\nassert(\n isArguments(\n (function () {\n return arguments;\n })(),\n ),\n true,\n);\nassert(isArguments([]), false);\n"}],"name":"isArguments","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isArguments","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"noValue":{"category":"type","description":"Checks if an object is null or undefined.","examples":[{"tag":"example","optional":false,"description":"import { noValue, assert } from '@universalweb/acid'; assert(noValue(null), true); assert(noValue(undefined), true); assert(noValue(1), false); assert(noValue(0), false);","source":"import { noValue, assert } from \"@universalweb/acid\";\nassert(noValue(null), true);\nassert(noValue(undefined), true);\nassert(noValue(1), false);\nassert(noValue(0), false);\n"}],"name":"noValue","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"noValue","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isMap":{"category":"type","description":"Checks if an object or objects are a Map.","examples":[{"tag":"example","optional":false,"description":"import { isMap } from '@universalweb/acid'; isMap(new Map()); // => true","source":"import { isMap } from \"@universalweb/acid\";\nisMap(new Map());\n// => true\n"}],"name":"isMap","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isMap","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isTypedArray":{"category":"type","description":"Checks if an object is a TypedArray. A TypedArray object is an array-like view of an underlying binary data buffer.","examples":[{"tag":"example","optional":false,"description":"import { isTypedArray, assert } from '@universalweb/acid'; assert(isTypedArray([]), false); assert(isTypedArray(new Int8Array()), true);","source":"import { isTypedArray, assert } from \"@universalweb/acid\";\nassert(isTypedArray([]), false);\nassert(isTypedArray(new Int8Array()), true);\n"}],"name":"isTypedArray","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isTypedArray","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isArrayLike":{"category":"type","description":"Checks if an object has a .length property that's greater than or equal to 0 & is not a function. If strict is enabled it will check to see if there is an item returned in range of the number returned bu the length property.","examples":[{"tag":"example","optional":false,"description":"import { isArrayLike, assert } from '@universalweb/acid'; assert(isArrayLike([]), true); assert(isArrayLike(2), false);","source":"import { isArrayLike, assert } from \"@universalweb/acid\";\nassert(isArrayLike([]), true);\nassert(isArrayLike(2), false);\n"}],"name":"isArrayLike","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."},{"tag":"param","name":"strictFlag","type":"*","optional":false,"description":"- Strict flag to also check to see if keys are whole intigers greater than or equal to 0.","source":"* {*} strictFlag - Strict flag to also check to see if keys are whole intigers greater than or equal to 0."}],"type":"function","functionTag":"isArrayLike","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isBigInt":{"category":"type","description":"Checks if an object or objects are a BigInt.","examples":[{"tag":"example","optional":false,"description":"import { isBigInt, assert } from '@universalweb/acid'; assert(isBigInt(BigInt(123)), true);","source":"import { isBigInt, assert } from \"@universalweb/acid\";\nassert(isBigInt(BigInt(123)), true);\n"}],"name":"isBigInt","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isBigInt","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isBoolean":{"category":"type","description":"Checks if the value is a Boolean.","examples":[{"tag":"example","optional":false,"description":"import { isBoolean } from '@universalweb/acid'; isBoolean(true); // => true","source":"import { isBoolean } from \"@universalweb/acid\";\nisBoolean(true);\n// => true\n"}],"name":"isBoolean","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isBoolean","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isArrayBuffer":{"category":"type","description":"Checks if an object or objects are a ArrayBuffer.","examples":[{"tag":"example","optional":false,"description":"import { isArrayBuffer, assert } from '@universalweb/acid'; assert(isArrayBuffer(new ArrayBuffer()), true);","source":"import { isArrayBuffer, assert } from \"@universalweb/acid\";\nassert(isArrayBuffer(new ArrayBuffer()), true);\n"}],"name":"isArrayBuffer","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isArrayBuffer","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isChild":{"category":"type","description":"Checks if an object is the child of another. Typically used for classes.","examples":[{"tag":"example","optional":false,"description":"import { isChild, construct, assert } from '@universalweb/acid'; class Grandparent{} class Parent extends Grandparent{} class Child extends Parent{} const child = construct(Child); assert(isChild(Child, Grandparent), true); assert(isChild(Child, Parent), false); assert(isChild(Parent, Grandparent), false); assert(isChild(child1, child3), false);","source":"import { isChild, construct, assert } from \"@universalweb/acid\";\nclass Grandparent {}\nclass Parent extends Grandparent {}\nclass Child extends Parent {}\nconst child = construct(Child);\nassert(isChild(Child, Grandparent), true);\nassert(isChild(Child, Parent), false);\nassert(isChild(Parent, Grandparent), false);\nassert(isChild(child1, child3), false);\n"}],"name":"isChild","params":[{"tag":"param","name":"sourceChild","type":"*","optional":false,"description":"- Object to be checked as the child.","source":"* {*} sourceChild - Object to be checked as the child."},{"tag":"param","name":"targetParent","type":"*","optional":false,"description":"- Object to be checked as the parent.","source":"* {*} targetParent - Object to be checked as the parent."}],"type":"function","functionTag":"isChild","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isCloneable":{"category":"type","description":"Checks if an object or objects are a structured-cloneable type.","examples":[{"tag":"example","optional":false,"description":"import { isCloneable, assert } from '@universalweb/acid'; assert(isCloneable(function (){}), false);","source":"import { isCloneable, assert } from \"@universalweb/acid\";\nassert(\n isCloneable(function () {}),\n false,\n);\n"}],"name":"isCloneable","params":[{"tag":"param","name":"source","type":"...*","optional":false,"description":"- Object to be checked.","source":"* {...*} source - Object to be checked."}],"type":"function","functionTag":"isCloneable","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isDate":{"category":"type","description":"Checks if the value is a Date.","examples":[{"tag":"example","optional":false,"description":"import { isDate, assert } from '@universalweb/acid'; assert(isDate(new Date()), true);","source":"import { isDate, assert } from \"@universalweb/acid\";\nassert(isDate(new Date()), true);\n"}],"name":"isDate","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isDate","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isEmpty":{"category":"type","description":"Checks if the value is empty.","examples":[{"tag":"example","optional":false,"description":"import { isEmpty, assert } from '@universalweb/acid'; assert(isEmpty([]), true);","source":"import { isEmpty, assert } from \"@universalweb/acid\";\nassert(isEmpty([]), true);\n"}],"name":"isEmpty","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isEmpty","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isFalse":{"category":"utility","description":"Check if a value equals false using strict comparison.","examples":[{"tag":"example","optional":false,"description":"import { isFalse, assert } from '@universalweb/acid'; assert(isFalse(1), false); assert(isFalse(true), false); assert(isFalse(false), true);","source":"import { isFalse, assert } from \"@universalweb/acid\";\nassert(isFalse(1), false);\nassert(isFalse(true), false);\nassert(isFalse(false), true);\n"}],"name":"isFalse","params":[{"tag":"param","name":"source","type":"Boolean","optional":false,"description":"- Item to compare.","source":"* {Boolean} source - Item to compare."}],"type":"function","functionTag":"isFalse","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if the item equals false.","source":"* {Boolean} - Returns true if the item equals false.\n\t *"}},"isF32":{"category":"type","description":"Checks if an object or objects are a Float32Array.","examples":[{"tag":"example","optional":false,"description":"import { isF32, assert } from '@universalweb/acid'; assert(isF32(new Float32Array()), true);","source":"import { isF32, assert } from \"@universalweb/acid\";\nassert(isF32(new Float32Array()), true);\n"}],"name":"isF32","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isF32","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isF64":{"category":"type","description":"Checks if an object or objects are a Float64Array.","examples":[{"tag":"example","optional":false,"description":"import { isF64 } from '@universalweb/acid'; isF64(new Float64Array()); // => true","source":"import { isF64 } from \"@universalweb/acid\";\nisF64(new Float64Array());\n// => true\n"}],"name":"isF64","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isF64","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isFloat":{"category":"type","description":"Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.","examples":[{"tag":"example","optional":false,"description":"import { isFloat } from '@universalweb/acid'; isFloat(1.01); // => true","source":"import { isFloat } from \"@universalweb/acid\";\nisFloat(1.01);\n// => true\n"}],"name":"isFloat","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isFloat","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isI16":{"category":"type","description":"Checks if an object or objects are a Int16Array.","examples":[{"tag":"example","optional":false,"description":"import { isI16 } from '@universalweb/acid'; isI16(new Int16Array()); // => true","source":"import { isI16 } from \"@universalweb/acid\";\nisI16(new Int16Array());\n// => true\n"}],"name":"isI16","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isI16","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isI32":{"category":"type","description":"Checks if an object or objects are a Int32Array.","name":"isI32","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isI32","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false. import { isI32, assert } from '@universalweb/acid'; assert(isI32(new Int32Array()), true);.","source":"* {Boolean} - Returns true or false.\n\t *\n\t * import { isI32, assert } from '@universalweb/acid';\n\t * assert(isI32(new Int32Array()), true);.\n\t */"}},"isI8":{"category":"type","description":"Checks if an object or objects are a Int8Array.","examples":[{"tag":"example","optional":false,"description":"import { isInt8 } from '@universalweb/acid'; isInt8(new Int8Array()); // => true","source":"import { isInt8 } from \"@universalweb/acid\";\nisInt8(new Int8Array());\n// => true\n"}],"name":"isI8","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isI8","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isIterable":{"category":"type","description":"Checks if the object has inherited properties from the built-in Iterator class and which implements the Symbol.iterator interface. Built-in Iterators: String, Array, TypedArray, Map, Set, and Segments.","examples":[{"tag":"example","optional":false,"description":"import { isIterable, assert } from '@universalweb/acid'; assert(isIterable([]), true); assert(isIterable(new Int8Array()), true); assert(isIterable('test'), false);","source":"import { isIterable, assert } from \"@universalweb/acid\";\nassert(isIterable([]), true);\nassert(isIterable(new Int8Array()), true);\nassert(isIterable(\"test\"), false);\n"}],"name":"isIterable","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isIterable","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isPromise":{"category":"type","description":"Checks if an object is a promise.","examples":[{"tag":"example","optional":false,"description":"import { isPromise } from '@universalweb/acid'; isPromise(new Promise(() => {})); // => true","source":"import { isPromise } from \"@universalweb/acid\";\nisPromise(new Promise(() => {}));\n// => true\n"}],"name":"isPromise","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isPromise","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"True or false.","source":"* {Boolean} - True or false.\n\t *"}},"isKindAsync":{"category":"type","description":"Checks if an object is a kind of async object such as async function, promise, or generator.","examples":[{"tag":"example","optional":false,"description":"import { isKindAsync, assert } from '@universalweb/acid'; assert(isKindAsync(async() => {}), true);","source":"import { isKindAsync, assert } from \"@universalweb/acid\";\nassert(\n isKindAsync(async () => {}),\n true,\n);\n"}],"name":"isKindAsync","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isKindAsync","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"True or false.","source":"* {Boolean} - True or false.\n\t *"}},"isParent":{"category":"type","description":"Checks if an object is the child of another. Typically used for classes.","examples":[{"tag":"example","optional":false,"description":"import { isParent, construct, assert } from '@universalweb/acid'; class parentClass{} class otherClass{} const child1 = construct(parentClass); const child2 = construct(otherClass); assert(isParent(child1, parentClass), true); assert(isParent(child3, parentClass), false); assert(isParent(parentClass, child1), false); assert(isParent(child1, child3), false);","source":"import { isParent, construct, assert } from \"@universalweb/acid\";\nclass parentClass {}\nclass otherClass {}\nconst child1 = construct(parentClass);\nconst child2 = construct(otherClass);\nassert(isParent(child1, parentClass), true);\nassert(isParent(child3, parentClass), false);\nassert(isParent(parentClass, child1), false);\nassert(isParent(child1, child3), false);\n"}],"name":"isParent","params":[{"tag":"param","name":"sourceParent","type":"*","optional":false,"description":"- Object to be checked as the child.","source":"* {*} sourceParent - Object to be checked as the child."},{"tag":"param","name":"targetChild","type":"*","optional":false,"description":"- Object to be checked as the parent.","source":"* {*} targetChild - Object to be checked as the parent."}],"type":"function","functionTag":"isParent","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isPrimitive":{"category":"type","description":"Checks if an object is a primitive.","examples":[{"tag":"example","optional":false,"description":"import { isPrimitive, assert } from '@universalweb/acid'; assert(isPrimitive(1), true); assert(isPrimitive(() => {}), false);","source":"import { isPrimitive, assert } from \"@universalweb/acid\";\nassert(isPrimitive(1), true);\nassert(\n isPrimitive(() => {}),\n false,\n);\n"}],"name":"isPrimitive","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isPrimitive","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"True or false.","source":"* {Boolean} - True or false.\n\t *"}},"isRelated":{"category":"type","description":"Checks if objects are related to each other using instanceof. There is no required order for arguments given it will check all available ways.","examples":[{"tag":"example","optional":false,"description":"import { isRelated, construct, assert } from '@universalweb/acid'; class parentClass{} class otherClass{} const child1 = construct(parentClass); const child2 = construct(parentClass); const child3 = construct(otherClass); assert(isRelated(child1, child2), true); assert(isRelated(child1, parentClass), true); assert(isRelated(parentClass, child2), true); assert(isRelated(child1, child3), false);","source":"import { isRelated, construct, assert } from \"@universalweb/acid\";\nclass parentClass {}\nclass otherClass {}\nconst child1 = construct(parentClass);\nconst child2 = construct(parentClass);\nconst child3 = construct(otherClass);\nassert(isRelated(child1, child2), true);\nassert(isRelated(child1, parentClass), true);\nassert(isRelated(parentClass, child2), true);\nassert(isRelated(child1, child3), false);\n"}],"name":"isRelated","params":[{"tag":"param","name":"targetOne","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} targetOne - Object to be checked."},{"tag":"param","name":"targetTwo","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} targetTwo - Object to be checked."}],"type":"function","functionTag":"isRelated","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isSafeInt":{"category":"type","description":"Checks if the value (typically a number) as a string has a decimal point. Alias of Number.isInteger.","examples":[{"tag":"example","optional":false,"description":"import { isSafeInt } from '@universalweb/acid'; isSafeInt(1.01); // => true","source":"import { isSafeInt } from \"@universalweb/acid\";\nisSafeInt(1.01);\n// => true\n"}],"name":"isSafeInt","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isSafeInt","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isTrue":{"category":"utility","description":"Check if a value equals true using strict comparison.","examples":[{"tag":"example","optional":false,"description":"import { isTrue, assert } from '@universalweb/acid'; assert(isTrue(1), false); assert(isTrue(true), true); assert(isTrue(false), false);","source":"import { isTrue, assert } from \"@universalweb/acid\";\nassert(isTrue(1), false);\nassert(isTrue(true), true);\nassert(isTrue(false), false);\n"}],"name":"isTrue","params":[{"tag":"param","name":"source","type":"Boolean","optional":false,"description":"- Item to check.","source":"* {Boolean} source - Item to check."}],"type":"function","functionTag":"isTrue","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if the item is true.","source":"* {Boolean} - Returns true if the item is true.\n\t *"}},"isU16":{"category":"type","description":"Checks if an object or objects are a Uint16Array.","examples":[{"tag":"example","optional":false,"description":"import { isU16 } from '@universalweb/acid'; isU16(new Uint16Array()); // => true","source":"import { isU16 } from \"@universalweb/acid\";\nisU16(new Uint16Array());\n// => true\n"}],"name":"isU16","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isU16","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isU32":{"category":"type","description":"Checks if an object or objects are a Uint32Array.","examples":[{"tag":"example","optional":false,"description":"import { isU32 } from '@universalweb/acid'; isU32(new Uint32Array()); // => true","source":"import { isU32 } from \"@universalweb/acid\";\nisU32(new Uint32Array());\n// => true\n"}],"name":"isU32","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isU32","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isU8":{"category":"type","description":"Checks if an object or objects are a Uint8Array.","examples":[{"tag":"example","optional":false,"description":"import { isU8 } from '@universalweb/acid'; isU8(new Uint8Array()); // => true","source":"import { isU8 } from \"@universalweb/acid\";\nisU8(new Uint8Array());\n// => true\n"}],"name":"isU8","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isU8","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isU8C":{"category":"type","description":"Checks if an object or objects are a Uint8ClampedArray.","examples":[{"tag":"example","optional":false,"description":"import { isU8C } from '@universalweb/acid'; isU8C(new Uint8ClampedArray()); // => true","source":"import { isU8C } from \"@universalweb/acid\";\nisU8C(new Uint8ClampedArray());\n// => true\n"}],"name":"isU8C","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isU8C","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isWeakMap":{"category":"type","description":"Checks if an object or objects are a WeakMap.","examples":[{"tag":"example","optional":false,"description":"import { isWeakMap } from '@universalweb/acid'; assert(isWeakMap(new WeakMap()), true);","source":"import { isWeakMap } from \"@universalweb/acid\";\nassert(isWeakMap(new WeakMap()), true);\n"}],"name":"isWeakMap","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"isWeakMap","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"isTruthy":{"category":"type","description":"Check if a value is isTruthy which is anything but false, null, 0, \"\", undefined, and NaN.","examples":[{"tag":"example","optional":false,"description":"import { isTruthy, assert } from '@universalweb/acid'; assert(isTruthy(1), true); assert(isTruthy(0), false);","source":"import { isTruthy, assert } from \"@universalweb/acid\";\nassert(isTruthy(1), true);\nassert(isTruthy(0), false);\n"}],"name":"isTruthy","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Item to be isTruthy checked.","source":"* {*} source - Item to be isTruthy checked."},{"tag":"param","name":"returnIfTrue","type":"*","optional":true,"description":"- Item to be returned if item is isTruthy.","source":"* {*} [returnIfTrue = true] - Item to be returned if item is isTruthy.","default":"true"}],"type":"function","functionTag":"isTruthy","returns":{"tag":"returns","name":"-","type":"Boolean|*","optional":false,"description":"Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.","source":"* {Boolean|*} - Returns true if the item is isTruthy or returnIfTrue if provided otherwise returns false.\n\t *"}},"isFalsy":{"category":"type","description":"Check if a value is isFalsy which are false, null, 0, \"\", undefined, and NaN.","examples":[{"tag":"example","optional":false,"description":"import { isFalsy, assert } from '@universalweb/acid'; assert(isFalsy(0), true); assert(isFalsy(1), false);","source":"import { isFalsy, assert } from \"@universalweb/acid\";\nassert(isFalsy(0), true);\nassert(isFalsy(1), false);\n"}],"name":"isFalsy","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Item to be isFalsy checked.","source":"* {*} source - Item to be isFalsy checked."},{"tag":"param","name":"returnIfTrue","type":"*","optional":true,"description":"- Item to be returned if item is isFalsy.","source":"* {*} [returnIfTrue = true] - Item to be returned if item is isFalsy.","default":"true"}],"type":"function","functionTag":"isFalsy","returns":{"tag":"returns","name":"-","type":"Boolean|*","optional":false,"description":"Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.","source":"* {Boolean|*} - Returns true if the item is isFalsy or returnIfTrue if provided otherwise returns false.\n\t *"}},"ifValue":{"category":"utility","description":"If source has a value then assign it to an object or call a function.","examples":[{"tag":"example","optional":false,"description":"import { ifValue, assert } from '@universalweb/acid'; assert(ifValue(1, {}, 'a'), {a:1});","source":"import { ifValue, assert } from \"@universalweb/acid\";\nassert(ifValue(1, {}, \"a\"), { a: 1 });\n"}],"name":"ifValue","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- The source object to be hasValue checked.","source":"* {*} source - The source object to be hasValue checked."},{"tag":"param","name":"target","type":"Function|Object","optional":false,"description":"- The target which is either a function or object.","source":"* {Function|Object} target - The target which is either a function or object."},{"tag":"param","name":"optional","type":"*|String","optional":false,"description":"- If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target).","source":"* {*|String} optional - If target is a plain object then it must be a string and is used to assign the property name. Else it's used as the this for the provided function (target)."},{"tag":"param","name":"args","type":"Array","optional":false,"description":"- The args that would be used if the target is a function and is the params that is applied to the function.","source":"* {Array} args - The args that would be used if the target is a function and is the params that is applied to the function."}],"type":"function","functionTag":"ifValue","returns":{"tag":"returns","name":"The","type":"source","optional":false,"description":"source object if it passes the hasValue check.","source":"* {source} The source object if it passes the hasValue check.\n\t *"}},"notEqual":{"category":"utility","description":"Performs a deep comparison between two objects & determines if they're different using strict comparison.","examples":[{"tag":"example","optional":false,"description":"import { notEqual, assert } from '@universalweb/acid'; assert(notEqual({a: [1,2,3]}, {a: [1,3,3]}), true);","source":"import { notEqual, assert } from \"@universalweb/acid\";\nassert(notEqual({ a: [1, 2, 3] }, { a: [1, 3, 3] }), true);\n"}],"name":"notEqual","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Source object.","source":"* {*} source - Source object."},{"tag":"param","name":"target","type":"*","optional":false,"description":"- Object to be compared.","source":"* {*} target - Object to be compared."}],"type":"function","functionTag":"notEqual","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"jsonParse":{"category":"utility","description":"Parses JSON string with safety check for undefined.","examples":[{"tag":"example","optional":false,"description":"import { jsonParse, assert } from '@universalweb/acid'; assert(jsonParse('{a:1}'), {a:1});","source":"import { jsonParse, assert } from \"@universalweb/acid\";\nassert(jsonParse(\"{a:1}\"), { a: 1 });\n"}],"name":"jsonParse","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- String to be parsed.","source":"* {String} source - String to be parsed."},{"tag":"param","name":"reviver","type":"Function","optional":false,"description":"- A function that prescribes how each value originally produced by parsing is transformed before being returned.","source":"* {Function} reviver - A function that prescribes how each value originally produced by parsing is transformed before being returned."}],"type":"function","functionTag":"jsonParse","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the parsed object.","source":"* {Object} - Returns the parsed object.\n\t *"}},"stringify":{"category":"utility","description":"Stringify an object into a JSON string.","examples":[{"tag":"example","optional":false,"description":"import { stringify, assert } from '@universalweb/acid'; assert(stringify({a:1}), '{a:1}');","source":"import { stringify, assert } from \"@universalweb/acid\";\nassert(stringify({ a: 1 }), \"{a:1}\");\n"}],"name":"stringify","params":[{"tag":"param","name":"object","type":"Object","optional":false,"description":"- Object to Stringify.","source":"* {Object} object - Object to Stringify."}],"type":"function","functionTag":"stringify","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Returns the object as a valid JSON string.","source":"* {String} - Returns the object as a valid JSON string.\n\t *"}},"assert":{"category":"utility","description":"Check if source value matches the expected value.","examples":[{"tag":"example","optional":false,"description":"import { assert } from '@universalweb/acid'; if (!assert(1,1)) { new Error('Assert Method Failed'); }","source":"import { assert } from \"@universalweb/acid\";\nif (!assert(1, 1)) {\n new Error(\"Assert Method Failed\");\n}\n"}],"name":"assert","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- The source object to compare to.","source":"* {*} source - The source object to compare to."},{"tag":"param","name":"expected","type":"*","optional":false,"description":"- The expected result that's compared to the source.","source":"* {*} expected - The expected result that's compared to the source."},{"tag":"param","name":"options","type":"*","optional":false,"description":"- Additional options for the Error instance & unit test information.","source":"* {*} options - Additional options for the Error instance & unit test information."}],"type":"function","functionTag":"assert","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns a deep clone of an object.","source":"* {Object} - Returns a deep clone of an object.\n\t *"}},"bindAll":{"category":"utility","description":"Loops through an object or an array and binds the given object to all functions encountered. Optionally accepts an object which to assign the newly bound functions to.","examples":[{"tag":"example","optional":false,"description":"import { assert, bindAll } from '@universalweb/acid'; const bounded = bindAll([function () { return this;}], 'Bounded'); assert(bounded[0](), 'Bounded');","source":"import { assert, bindAll } from \"@universalweb/acid\";\nconst bounded = bindAll(\n [\n function () {\n return this;\n },\n ],\n \"Bounded\",\n);\nassert(bounded[0](), \"Bounded\");\n"}],"name":"bindAll","params":[{"tag":"param","name":"collection","type":"Object|Function|Array","optional":false,"description":"- The functions to bind.","source":"* {Object|Function|Array} collection - The functions to bind."},{"tag":"param","name":"bindThis","type":"*","optional":false,"description":"- Object to be bound to functions.","source":"* {*} bindThis - Object to be bound to functions."},{"tag":"param","name":"targetAssign","type":"Object|Function|Array","optional":false,"description":"- Object to assign newly bound functions to.","source":"* {Object|Function|Array} targetAssign - Object to assign newly bound functions to."}],"type":"function","functionTag":"bindAll","returns":{"tag":"returns","name":"-","type":"Object|Function|Array","optional":false,"description":"Returns the collection of bound functions or the assign target provided.","source":"* {Object|Function|Array} - Returns the collection of bound functions or the assign target provided.\n\t *"}},"clear":{"category":"utility","description":"Clears the values out of an array, buffer, and objects like Map that have a clear method.","examples":[{"tag":"example","optional":false,"description":"import { clear, assert } from '@universalweb/acid'; assert(clear(Buffer.from([1,'B', 'Cat'])), []);","source":"import { clear, assert } from \"@universalweb/acid\";\nassert(clear(Buffer.from([1, \"B\", \"Cat\"])), []);\n"}],"name":"clear","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Takes an array to be emptied.","source":"* {Array} source - Takes an array to be emptied."}],"type":"function","functionTag":"clear","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The originally given array.","source":"* {Array} - The originally given array.\n\t *"}},"clone":{"category":"utility","description":"Creates a structured clone of an object which is a \"structured-cloneable type\".","examples":[{"tag":"example","optional":false,"description":"import { clone, assert } from '@universalweb/acid'; assert(clone({a:{b:[2]}}), {a:{b:[2]}});","source":"import { clone, assert } from \"@universalweb/acid\";\nassert(clone({ a: { b: [2] } }), { a: { b: [2] } });\n"}],"name":"clone","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- Any structured-cloneable type object.","source":"* {Object} source - Any structured-cloneable type object."}],"type":"function","functionTag":"clone","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns a deep clone of an object.","source":"* {Object} - Returns a deep clone of an object.\n\t *"}},"compact":{"category":"utility","description":"Creates an array with all isFalsy values removed. The values false, null, 0, \"\", undefined, and NaN are isFalsy.","examples":[{"tag":"example","optional":false,"description":"import { compact, assert } from '@universalweb/acid'; assert(compact([1,'B', 'Cat', false, null, 0 , '', undefined, NaN]), [1, 'B', 'Cat']);","source":"import { compact, assert } from \"@universalweb/acid\";\nassert(compact([1, \"B\", \"Cat\", false, null, 0, \"\", undefined, NaN]), [\n 1,\n \"B\",\n \"Cat\",\n]);\n"}],"name":"compact","params":[{"tag":"param","name":"source","type":"Array|Object","optional":false,"description":"- Array or Object to be compacted.","source":"* {Array|Object} source - Array or Object to be compacted."}],"type":"function","functionTag":"compact","returns":{"tag":"returns","name":"-","type":"Array|Object","optional":false,"description":"A new object or array containing the filtered values.","source":"* {Array|Object} - A new object or array containing the filtered values.\n\t *"}},"compactMap":{"category":"utility","description":"Iterates through the calling object and creates a new object based on the calling object's type with the results, (excludes results which are null or undefined), of the iteratee on every element in the calling object.","examples":[{"tag":"example","optional":false,"description":"import { compactMap, assert } from '@universalweb/acid'; assert(compactMap({a: null, b: 2, c: 3}, (item) => { return item; }), {b: 2, c: 3});","source":"import { compactMap, assert } from \"@universalweb/acid\";\nassert(\n compactMap({ a: null, b: 2, c: 3 }, (item) => {\n return item;\n }),\n { b: 2, c: 3 },\n);\n"}],"name":"compactMap","params":[{"tag":"param","name":"source","type":"Array | object | Function","optional":false,"description":"- Object that will be looped through.","source":"* {Array | object | Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type."},{"tag":"param","name":"results","type":"Object | Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object | Function} [results = {}] - Object that will be used to assign results.","default":"{}"}],"type":"function","functionTag":"compactMap","returns":{"tag":"returns","name":"-","type":"Array | object | Function","optional":false,"description":"A new object of the same calling object's type.","source":"* {Array | object | Function} - A new object of the same calling object's type.\n\t *"}},"forOfFilter":{"category":"utility","description":"Iterates (for of) through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"import { assert, forOfFilter } from '@universalweb/acid'; const source = {a: undefined, b: 2, c: 3}; const temp = forOfFilter(source, (item) => { return Boolean(item); }); assert(temp, {b: 2, c: 3});","source":"import { assert, forOfFilter } from \"@universalweb/acid\";\nconst source = { a: undefined, b: 2, c: 3 };\nconst temp = forOfFilter(source, (item) => {\n return Boolean(item);\n});\nassert(temp, { b: 2, c: 3 });\n"}],"name":"forOfFilter","params":[{"tag":"param","name":"source","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function|Class|Map|Set|Array} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"resultsObject","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be used to assign results else source is type cloned.","source":"* {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned."}],"type":"function","functionTag":"forOfFilter","returns":{"tag":"returns","name":"-","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"An object with mapped properties.","source":"* {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n\t *"}},"forOfFilterAsync":{"category":"utility","description":"Asynchronously iterates (for of)through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"import { assert, forOfFilterAsync } from '@universalweb/acid'; const source = {a: undefined, b: 2, c: 3}; const temp = forOfFilterAsync(source, (item) => { return Boolean(item); }); assert(temp, {b: 2, c: 3});","source":"import { assert, forOfFilterAsync } from \"@universalweb/acid\";\nconst source = { a: undefined, b: 2, c: 3 };\nconst temp = forOfFilterAsync(source, (item) => {\n return Boolean(item);\n});\nassert(temp, { b: 2, c: 3 });\n"}],"name":"forOfFilterAsync","params":[{"tag":"param","name":"source","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be looped through.","source":"* {Object|Function|Class|Map|Set|Array} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created object, calling object, key count, and array of keys."},{"tag":"param","name":"resultsObject","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"- Object that will be used to assign results else source is type cloned.","source":"* {Object|Function|Class|Map|Set|Array} resultsObject - Object that will be used to assign results else source is type cloned."}],"type":"function","functionTag":"forOfFilterAsync","returns":{"tag":"returns","name":"-","type":"Object|Function|Class|Map|Set|Array","optional":false,"description":"An object with mapped properties.","source":"* {Object|Function|Class|Map|Set|Array} - An object with mapped properties.\n\t *"}},"filter":{"category":"utility","description":"Iterates through the calling object and creates a new object of the same calling object's type with all elements that pass the test implemented by the iteratee.","examples":[{"tag":"example","optional":false,"description":"import { filter, assert } from '@universalweb/acid'; assert(filter({a: false, b: true, c: true}, (item) => { return item; }), {b: true, c: true});","source":"import { filter, assert } from \"@universalweb/acid\";\nassert(\n filter({ a: false, b: true, c: true }, (item) => {\n return item;\n }),\n { b: true, c: true },\n);\n"}],"name":"filter","params":[{"tag":"param","name":"source","type":"Array | object | Function","optional":false,"description":"- Object that will be looped through.","source":"* {Array | object | Function} source - Object that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type.","source":"* {Function} iteratee - Transformation function which is passed item, key, the newly created map object and arguments unique to mapArray or mapObject depending on the object type."},{"tag":"param","name":"results","type":"Object | Function","optional":true,"description":"- Object that will be used to assign results.","source":"* {Object | Function} [results = {}] - Object that will be used to assign results.","default":"{}"}],"type":"function","functionTag":"filter","returns":{"tag":"returns","name":"-","type":"Array | object | Function","optional":false,"description":"A new object of the same calling object's type.","source":"* {Array | object | Function} - A new object of the same calling object's type.\n\t *"}},"flow":{"category":"utility","description":"Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.","examples":[{"tag":"example","optional":false,"description":"flow(increment, increment, deduct)(0); // => 1","source":"flow(increment, increment, deduct)(0);\n// => 1\n"}],"name":"flow","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Methods to invoke.","source":"* {Array} collection - Methods to invoke."}],"type":"function","functionTag":"flow","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new composite function.","source":"* {Function} - Returns the new composite function.\n\t *"}},"flowRight":{"category":"utility","description":"This method is like flow except that it creates a function that invokes the given functions from right to left.","examples":[{"tag":"example","optional":false,"description":"flowRight(increment, increment, deduct)(0); // => 1","source":"flowRight(increment, increment, deduct)(0);\n// => 1\n"}],"name":"flowRight","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Methods to invoke.","source":"* {Array} collection - Methods to invoke."}],"type":"function","functionTag":"flowRight","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new composite function.","source":"* {Function} - Returns the new composite function.\n\t *"}},"flowAsync":{"category":"utility","description":"Creates a function that returns the result of invoking the given functions, where each successive invocation is supplied the return value of the previous.","examples":[{"tag":"example","optional":false,"description":"flowAsync(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0); // => 2","source":"flowAsync(\n async (item) => {\n return increment(item);\n },\n async (item) => {\n return increment(item);\n },\n)(0);\n// => 2\n"}],"name":"flowAsync","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Methods to invoke.","source":"* {Array} collection - Methods to invoke."}],"type":"function","isAsync":true,"functionTag":"flowAsync","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new composite function.","source":"* {Function} - Returns the new composite function.\n\t *"}},"flowAsyncRight":{"category":"utility","description":"This method is like flow except that it creates a function that invokes the given functions from right to left.","examples":[{"tag":"example","optional":false,"description":"flowAsyncRight(async (item) => {return increment(item);}, async (item) => {return increment(item);})(0); // => 2","source":"flowAsyncRight(\n async (item) => {\n return increment(item);\n },\n async (item) => {\n return increment(item);\n },\n)(0);\n// => 2\n"}],"name":"flowAsyncRight","params":[{"tag":"param","name":"collection","type":"Array","optional":false,"description":"- Methods to invoke.","source":"* {Array} collection - Methods to invoke."}],"type":"function","isAsync":true,"functionTag":"flowAsyncRight","returns":{"tag":"returns","name":"-","type":"Function","optional":false,"description":"Returns the new composite function.","source":"* {Function} - Returns the new composite function.\n\t *"}},"arraysToObject":{"category":"utility","description":"Takes all but the last item in the array.","examples":[{"tag":"example","optional":false,"description":"import { arraysToObject, assert } from '@universalweb/acid'; assert(arraysToObject([1, 2, 3], ['a', 'b', 'c']), {a:1, b:2, c: 3});","source":"import { arraysToObject, assert } from \"@universalweb/acid\";\nassert(arraysToObject([1, 2, 3], [\"a\", \"b\", \"c\"]), { a: 1, b: 2, c: 3 });\n"}],"name":"arraysToObject","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array to have items extracted from.","source":"* {Array} source - Array to have items extracted from."},{"tag":"param","name":"properties","type":"Array","optional":false,"description":"- Array to have items extracted from.","source":"* {Array} properties - Array to have items extracted from."}],"type":"function","functionTag":"arraysToObject","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns a completely flattened array.","source":"* {Array} - Returns a completely flattened array.\n\t *"}},"has":{"category":"utility","description":"Checks if an object contains something.","examples":[{"tag":"example","optional":false,"description":"import { has, assert } from '@universalweb/acid'; assert(has('Hello World', 'Hello'), true); assert(has(['Hello', 'World'], 'hello'), true);","source":"import { has, assert } from \"@universalweb/acid\";\nassert(has(\"Hello World\", \"Hello\"), true);\nassert(has([\"Hello\", \"World\"], \"hello\"), true);\n"}],"name":"has","params":[{"tag":"param","name":"source","type":"Array|String|Object","optional":false,"description":"- Object to be checked.","source":"* {Array|String|Object} source - Object to be checked."},{"tag":"param","name":"search","type":"String|Array|Function|RegExp","optional":false,"description":"- Object that is being searched for.","source":"* {String|Array|Function|RegExp} search - Object that is being searched for."},{"tag":"param","name":"fromIndex","type":"Number","optional":false,"description":"- Index at which to start searching.","source":"* {Number} fromIndex - Index at which to start searching."}],"type":"function","functionTag":"has","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"hasDot":{"category":"utility","description":"Checks if the string has a '.'.","examples":[{"tag":"example","optional":false,"description":"import { hasDot, assert } from '@universalweb/acid'; assert(hasDot('test.js'), true);","source":"import { hasDot, assert } from \"@universalweb/acid\";\nassert(hasDot(\"test.js\"), true);\n"}],"name":"hasDot","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- Object to be checked.","source":"* {*} source - Object to be checked."}],"type":"function","functionTag":"hasDot","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false.\n\t *"}},"ifNotAssign":{"category":"utility","description":"Checks if a property on an object has a value. If not, it will assign a value.","examples":[{"tag":"example","optional":false,"description":"import { ifNotAssign, assert } from '@universalweb/acid'; assert(ifNotAssign({}, 'a', 1), {a:1});","source":"import { ifNotAssign, assert } from \"@universalweb/acid\";\nassert(ifNotAssign({}, \"a\", 1), { a: 1 });\n"}],"name":"ifNotAssign","params":[{"tag":"param","name":"rootObject","type":"Object","optional":false,"description":"- The object to check.","source":"* {Object} rootObject - The object to check."},{"tag":"param","name":"property","type":"String","optional":false,"description":"- The property name which is to be checked.","source":"* {String} property - The property name which is to be checked."},{"tag":"param","name":"equalThis","type":"*","optional":false,"description":"- The reassignment value for the property being checked.","source":"* {*} equalThis - The reassignment value for the property being checked."}],"type":"function","functionTag":"ifNotAssign","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the provided rootObject.","source":"* {Object} - Returns the provided rootObject.\n\t *"}},"interval":{"category":"function","description":"Create an interval timer.","examples":[{"tag":"example","optional":false,"description":"interval(() => {}, 100); // => 0","source":"interval(() => {}, 100);\n// => 0\n"}],"name":"interval","params":[{"tag":"param","name":"callable","type":"Function","optional":false,"description":"- The function to be invoked.","source":"* {Function} callable - The function to be invoked."},{"tag":"param","name":"time","type":"Number","optional":false,"description":"- The time in milliseconds.","source":"* {Number} time - The time in milliseconds."}],"type":"function","functionTag":"interval","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns setInterval ID.","source":"* {Object} - Returns setInterval ID.\n\t *"}},"clearIntervals":{"category":"function","description":"Clear all active interval timers.","examples":[{"tag":"example","optional":false,"description":"clearIntervals(); // => undefined","source":"clearIntervals();\n// => undefined\n"}],"name":"clearIntervals","type":"function","functionTag":"clearIntervals","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined.\n\t *"}},"model":{"category":"utility","description":"Set & Get a model.","examples":[{"tag":"example","optional":false,"description":"model('test', {a: 1}) && model('test'); // => {a: 1}","source":"model(\"test\", { a: 1 }) && model(\"test\");\n// => {a: 1}\n"}],"name":"model","params":[{"tag":"param","name":"modelName","type":"String","optional":false,"description":"- Name of the model.","source":"* {String} modelName - Name of the model."},{"tag":"param","name":"modelValue","type":"Object","optional":false,"description":"- The model object.","source":"* {Object} modelValue - The model object."}],"type":"function","functionTag":"model","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns the associated model.","source":"* {*} - Returns the associated model."}},"pair":{"category":"utility","description":"Takes the first two arguments given and returns them inside a new array.","examples":[{"tag":"example","optional":false,"description":"import { pair, assert } from '@universalweb/acid'; assert(air(1, 2), [1, 2]);","source":"import { pair, assert } from \"@universalweb/acid\";\nassert(air(1, 2), [1, 2]);\n"}],"name":"pair","params":[{"tag":"param","name":"source","type":"*","optional":false,"description":"- The source object.","source":"* {*} source - The source object."},{"tag":"param","name":"source","type":"*","optional":false,"description":"- The source object.","source":"* {*} source - The source object."}],"type":"function","functionTag":"pair","returns":{"tag":"returns","name":"The","type":"Array","optional":false,"description":"array which holds the pair.","source":"* {Array} The array which holds the pair.\n\t *"}},"concurrent":{"category":"utility","description":"Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.all on the queue returning the values from each promise. Does not await on the async iteratee.","examples":[{"tag":"example","optional":false,"description":"import { concurrent, assert } from '@universalweb/acid'; const tempList = []; await concurrent([1, 2], async (item) => { return item; }); assert(tempList, [1, 2]);","source":"import { concurrent, assert } from \"@universalweb/acid\";\nconst tempList = [];\nawait concurrent([1, 2], async (item) => {\n return item;\n});\nassert(tempList, [1, 2]);\n"}],"name":"concurrent","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, and array length."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"concurrent","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The array from Promise.all.","source":"* {Array} - The array from Promise.all.\n\t *"}},"concurrentStatus":{"category":"utility","description":"Iterates through an array, invokes the async iteratee, and adds the promises to a queue. Then uses & returns the Promise.allSettled on the queue returning the values from each promise. Does not await on the async iteratee.","examples":[{"tag":"example","optional":false,"description":"import { concurrentStatus, assert } from '@universalweb/acid'; const tempList = []; await concurrentStatus([1, 2], async (item) => { return item; }); assert(tempList, [{status: 'fulfilled', value: 1}, {status: 'fulfilled', value: 2}]);","source":"import { concurrentStatus, assert } from \"@universalweb/acid\";\nconst tempList = [];\nawait concurrentStatus([1, 2], async (item) => {\n return item;\n});\nassert(tempList, [\n { status: \"fulfilled\", value: 1 },\n { status: \"fulfilled\", value: 2 },\n]);\n"}],"name":"concurrentStatus","params":[{"tag":"param","name":"source","type":"Array","optional":false,"description":"- Array that will be looped through.","source":"* {Array} source - Array that will be looped through."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed item, index, calling array, and array length.","source":"* {Function} iteratee - Transformation function which is passed item, index, calling array, and array length."},{"tag":"param","name":"thisBind","type":"*","optional":false,"description":"- An object to be given each time to the iteratee.","source":"* {*} thisBind - An object to be given each time to the iteratee."}],"type":"function","functionTag":"concurrentStatus","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"The array from Promise.allSettled.","source":"* {Array} - The array from Promise.allSettled.\n\t *"}},"promise":{"category":"utility","description":"A wrapper around the promise constructor.","examples":[{"tag":"example","optional":false,"description":"promise((a) => {}); // => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}","source":"promise((a) => {});\n// => Promise {[[PromiseStatus]]: \"pending\", [[PromiseValue]]: undefined}\n"}],"name":"promise","params":[{"tag":"param","name":"callback","type":"Function","optional":false,"description":"- Function to be called back.","source":"* {Function} callback - Function to be called back."}],"type":"function","functionTag":"promise","test":{"tag":"test","optional":false,"description":"(async () => { const result = await promise((accept) => { accept(true); }); return assert(result, true); });","source":"* \t * (async () => {\n\t * const result = await promise((accept) => {\n\t * accept(true);\n\t * });\n\t * return assert(result, true);\n\t * });"},"returns":{"tag":"returns","name":"-","type":"Promise","optional":false,"description":"A constructor with a callback function.","source":"* {Promise} - A constructor with a callback function."}},"propertyMatch":{"category":"utility","description":"Using a deep comparison it checks if properties of two objects using an array are equal.","examples":[{"tag":"example","optional":false,"description":"import { propertyMatch, assert } from '@universalweb/acid'; assert(propertyMatch({ a: 1, b: 2 }, { a: 1, b: 2 }, ['a', 'b']), true);","source":"import { propertyMatch, assert } from \"@universalweb/acid\";\nassert(propertyMatch({ a: 1, b: 2 }, { a: 1, b: 2 }, [\"a\", \"b\"]), true);\n"}],"name":"propertyMatch","params":[{"tag":"param","name":"source","type":"Object","optional":false,"description":"- The source object to compare.","source":"* {Object} source - The source object to compare."},{"tag":"param","name":"compared","type":"Object","optional":false,"description":"- Object to be compared to source.","source":"* {Object} compared - Object to be compared to source."},{"tag":"param","name":"properties","type":"Array","optional":false,"description":"- List of properties to compare defaults to keys(source).","source":"* {Array} properties - List of properties to compare defaults to keys(source)."}],"type":"function","functionTag":"propertyMatch","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns an array of properties.","source":"* {Array} - Returns an array of properties.\n\t *"}},"stubArray":{"category":"utility","description":"This method returns a new empty array.","examples":[{"tag":"example","optional":false,"description":"import { stubArray } from '@universalweb/acid'; stubArray(); // => []","source":"import { stubArray } from \"@universalweb/acid\";\nstubArray();\n// => []\n"}],"name":"stubArray","type":"function","functionTag":"stubArray","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"Returns the new empty array.","source":"* {Array} - Returns the new empty array."}},"stubObject":{"category":"utility","description":"This method returns a new empty object.","examples":[{"tag":"example","optional":false,"description":"import { stubObject } from '@universalweb/acid'; stubObject(); // => {}","source":"import { stubObject } from \"@universalweb/acid\";\nstubObject();\n// => {}\n"}],"name":"stubObject","type":"function","functionTag":"stubObject","returns":{"tag":"returns","name":"-","type":"Object","optional":false,"description":"Returns the new empty object.","source":"* {Object} - Returns the new empty object.\n\t *"}},"stubString":{"category":"utility","description":"This method returns a new empty string.","examples":[{"tag":"example","optional":false,"description":"import { stubString } from '@universalweb/acid'; stubString(); // => ''","source":"import { stubString } from \"@universalweb/acid\";\nstubString();\n// => ''\n"}],"name":"stubString","type":"function","functionTag":"stubString","returns":{"tag":"returns","name":"-","type":"String","optional":false,"description":"Returns the new empty string.","source":"* {String} - Returns the new empty string.\n\t *"}},"timesAsync":{"category":"utility","description":"Asynchronously iterates based on the amount given awaiting on the iteratee with the current index as an argument.","examples":[{"tag":"example","optional":false,"description":"import { timesAsync } from '@universalweb/acid'; await timesAsync(3, async (item) => { console.log(item); }); // 0 // 1 // 2 // => undefined","source":"import { timesAsync } from \"@universalweb/acid\";\nawait timesAsync(3, async (item) => {\n console.log(item);\n}); // 0 // 1 // 2\n// => undefined\n"}],"name":"timesAsync","params":[{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The amount of times to loop invoking the iteratee.","source":"* {Number} amount - The amount of times to loop invoking the iteratee."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed index and amount.","source":"* {Function} iteratee - Transformation function which is passed index and amount."}],"type":"function","isAsync":true,"functionTag":"timesAsync","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Nothing.","source":"* {undefined} - Nothing.\n\t *"}},"timesMapAsync":{"category":"array","description":"Asynchronously iterates based on the amount given and maps the results awaited on by the iteratee each time to an array.","examples":[{"tag":"example","optional":false,"description":"import { timesMapAsync } from '@universalweb/acid'; await timesMapAsync(3, (item) => { return item; }); // => [0, 1, 2]","source":"import { timesMapAsync } from \"@universalweb/acid\";\nawait timesMapAsync(3, (item) => {\n return item;\n});\n// => [0, 1, 2]\n"}],"name":"timesMapAsync","params":[{"tag":"param","name":"amount","type":"Number","optional":false,"description":"- The amount of times to loop invoking the iteratee.","source":"* {Number} amount - The amount of times to loop invoking the iteratee."},{"tag":"param","name":"iteratee","type":"Function","optional":false,"description":"- Transformation function which is passed index and amount.","source":"* {Function} iteratee - Transformation function which is passed index and amount."},{"tag":"param","name":"results","type":"Array","optional":true,"description":"- Array that will have iteratee return pushed to.","source":"* {Array} [results = []] - Array that will have iteratee return pushed to.","default":"[]"}],"type":"function","isAsync":true,"functionTag":"timesMapAsync","returns":{"tag":"returns","name":"-","type":"Array","optional":false,"description":"An array with iteratee's returned values.","source":"* {Array} - An array with iteratee's returned values.\n\t *"}},"toggle":{"category":"utility","description":"Performs a toggle between 2 values using a deep or strict comparison.","examples":[{"tag":"example","optional":false,"description":"import { toggle } from '@universalweb/acid'; let toggleMe = true; toggleMe = toggle(toggleMe, true, false); // => false","source":"import { toggle } from \"@universalweb/acid\";\nlet toggleMe = true;\ntoggleMe = toggle(toggleMe, true, false);\n// => false\n"}],"name":"toggle","params":[{"tag":"param","name":"value","type":"(string|number|Object|Array)","optional":false,"description":"- Strictly compared against on & off arguments.","source":"* {(string|number|Object|Array)} value - Strictly compared against on & off arguments."},{"tag":"param","name":"on","type":"(string|number|Object|Array)","optional":false,"description":"- The first object to be compared to.","source":"* {(string|number|Object|Array)} on - The first object to be compared to."},{"tag":"param","name":"off","type":"(string|number|Object|Array)","optional":false,"description":"- The second object to be compared to.","source":"* {(string|number|Object|Array)} off - The second object to be compared to."}],"type":"function","functionTag":"toggle","returns":{"tag":"returns","name":"-","type":"(string|number|Object|Array)","optional":false,"description":"The opposing value to the current.","source":"* {(string|number|Object|Array)} - The opposing value to the current.\n\t *"}},"UniqID":{"category":"utility","description":"Creates a unique numerical recyclable ID generator. The IDs are numerically ascending however freed ids are recycled when available.","examples":[{"tag":"example","optional":false,"description":"import { UniqID, construct, assert } from '@universalweb/acid'; const gen = construct(UniqID); assert(gen.get(), 0); assert(gen.get(), 1); gen.free(0); assert(gen.get(), 0);","source":"import { UniqID, construct, assert } from \"@universalweb/acid\";\nconst gen = construct(UniqID);\nassert(gen.get(), 0);\nassert(gen.get(), 1);\ngen.free(0);\nassert(gen.get(), 0);\n"}],"name":"UniqID","type":"class","classTag":"UniqID","returns":{"tag":"returns","name":"-","type":"UniqID","optional":false,"description":"Returns a new instance of UniqID.","source":"* {UniqID} - Returns a new instance of UniqID.\n\t *"}},"UniqID.get":{"category":"utility","description":"Generates a new ID or recycle one that is no longer used.","examples":[{"tag":"example","optional":false,"description":"import { UniqID, construct, assert } from '@universalweb/acid'; const gen = construct(UniqID); assert(gen.get(), 0);","source":"import { UniqID, construct, assert } from \"@universalweb/acid\";\nconst gen = construct(UniqID);\nassert(gen.get(), 0);\n"}],"name":"UniqID.get","type":"class","classTag":"UniqID","functionTag":"get","returns":{"tag":"returns","name":"-","type":"Number","optional":false,"description":"Returns a unique id.","source":"* {Number} - Returns a unique id.\n\t\t *"}},"UniqID.free":{"category":"utility","description":"Frees an UID so that it may be recycled for later use.","examples":[{"tag":"example","optional":false,"description":"import { UniqID, construct, assert } from '@universalweb/acid'; const gen = construct(UniqID); assert(gen.get(), 0); gen.free(0); assert(gen.get(), 0);","source":"import { UniqID, construct, assert } from \"@universalweb/acid\";\nconst gen = construct(UniqID);\nassert(gen.get(), 0);\ngen.free(0);\nassert(gen.get(), 0);\n"}],"name":"UniqID.free","params":[{"tag":"param","name":"id","type":"Number","optional":false,"description":"- Number to be freed.","source":"* {Number} id - Number to be freed."}],"type":"class","classTag":"UniqID","functionTag":"free","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Nothing is returned.","source":"* {undefined} - Nothing is returned.\n\t\t *"}},"uniqID":{"category":"utility","description":"A built in constructed instance of UniqID. Creates a unique numerical recyclable ID. The IDs are numerically ascending however freed ids are recycled when available.","examples":[{"tag":"example","optional":false,"description":"import { uniqID, assert } from '@universalweb/acid'; assert(uniqID.get(), 0); assert(uniqID.get(), 1); uniqID.free(0); assert(uniqID.get(), 0);","source":"import { uniqID, assert } from \"@universalweb/acid\";\nassert(uniqID.get(), 0);\nassert(uniqID.get(), 1);\nuniqID.free(0);\nassert(uniqID.get(), 0);\n"}],"name":"uniqID","type":"function","functionTag":"uniqID"},"virtualStorage":{"category":"browser","description":"The virtualStorage function is a factory which wraps the VirtualStorage class constructor.","examples":[{"tag":"example","optional":false,"description":"import { virtualStorage, assert } from '@universalweb/acid'; const vStorage = virtualStorage(); vStorage.setItem('title', 'value'); assert(vStorage.getItem('title'), 'value');","source":"import { virtualStorage, assert } from \"@universalweb/acid\";\nconst vStorage = virtualStorage();\nvStorage.setItem(\"title\", \"value\");\nassert(vStorage.getItem(\"title\"), \"value\");\n"}],"name":"virtualStorage","type":"function","functionTag":"virtualStorage","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns a new VirtualStorage Object.","source":"* {*} - Returns a new VirtualStorage Object.\n\t *"}},"isAgent":{"category":"browser","description":"Checks to see of the browser agent has a string.","examples":[{"tag":"example","optional":false,"description":"isAgent('mobile'); // => false","source":"isAgent(\"mobile\");\n// => false\n"}],"name":"isAgent","params":[{"tag":"param","name":"source","type":"String","optional":false,"description":"- The string to search for.","source":"* {String} source - The string to search for."}],"type":"function","functionTag":"isAgent","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true or false.","source":"* {Boolean} - Returns true or false."}},"eventAdd":{"category":"browser","description":"Attaches an event listener to a node.","examples":[{"tag":"example","optional":false,"description":"eventAdd(document.body, 'click', () => {console.log('CLICKED');}); // = > document.body","source":"eventAdd(document.body, \"click\", () => {\n console.log(\"CLICKED\");\n}); // = > document.body\n"}],"name":"eventAdd","params":[{"tag":"param","name":"node","type":"Node","optional":false,"description":"- Given node.","source":"* {Node} node - Given node."},{"tag":"param","name":"eventName","type":"String","optional":false,"description":"- A string representing the event type.","source":"* {String} eventName - A string representing the event type."},{"tag":"param","name":"callback","type":"Object|Function","optional":false,"description":"- The object which receives a notification when an event of the specified type occurs.","source":"* {Object|Function} callback - The object which receives a notification when an event of the specified type occurs."},{"tag":"param","name":"useCapture","type":"Boolean","optional":false,"description":"- The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.","source":"* {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation."}],"type":"function","functionTag":"eventAdd","returns":{"tag":"returns","name":"-","type":"Node","optional":false,"description":"Returns given node.","source":"* {Node} - Returns given node.\n\t *"}},"eventRemove":{"category":"browser","description":"Attaches an event listener to a node.","examples":[{"tag":"example","optional":false,"description":"eventRemove(document.body, () => {console.log('CLICKED');}); // = > Undefined","source":"eventRemove(document.body, () => {\n console.log(\"CLICKED\");\n}); // = > Undefined\n"}],"name":"eventRemove","params":[{"tag":"param","name":"node","type":"Node","optional":false,"description":"- Given node.","source":"* {Node} node - Given node."},{"tag":"param","name":"eventName","type":"String","optional":false,"description":"- A string representing the event type.","source":"* {String} eventName - A string representing the event type."},{"tag":"param","name":"callback","type":"Object|Function","optional":false,"description":"- The object which receives a notification when an event of the specified type occurs.","source":"* {Object|Function} callback - The object which receives a notification when an event of the specified type occurs."},{"tag":"param","name":"useCapture","type":"Boolean","optional":false,"description":"- The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation.","source":"* {Boolean} useCapture - The default value is false, which will use the bubbling propagation, when the value is set to true, the event uses the capturing propagation."}],"type":"function","functionTag":"eventRemove","returns":{"tag":"returns","name":"-","type":"Node","optional":false,"description":"Returns given node.","source":"* {Node} - Returns given node.\n\t *"}},"isEnter":{"category":"browser","description":"Checks if the keycode of the event is strictly equal to 13.","examples":[{"tag":"example","optional":false,"description":"isEnter('click'); // => false","source":"isEnter(\"click\");\n// => false\n"}],"name":"isEnter","params":[{"tag":"param","name":"eventObject","type":"Object","optional":false,"description":"- Object to be checked.","source":"* {Object} eventObject - Object to be checked."}],"type":"function","functionTag":"isEnter","returns":{"tag":"returns","name":"-","type":"Boolean","optional":false,"description":"Returns true if the keycode property of the object equals 13.","source":"* {Boolean} - Returns true if the keycode property of the object equals 13.\n\t *"}},"importjs":{"category":"browser","description":"Asynchronously import a js file and append it to the head node. If a script fails to load importjs won't reject the promise rather it'll return the error event to limit further complications & reduce code complexity.","examples":[{"tag":"example","optional":false,"description":"importjs('core.js'); importjs('core');","source":"importjs(\"core.js\");\nimportjs(\"core\");\n"}],"name":"importjs","params":[{"tag":"param","name":"url","type":"*","optional":false,"description":"- URL of the script to import. If not \".\" is found in the file name \".js\" will be appended.","source":"* {*} url - URL of the script to import. If not \".\" is found in the file name \".js\" will be appended."}],"type":"function","isAsync":true,"functionTag":"importjs","returns":{"tag":"returns","name":"-","type":"Promise","optional":false,"description":"Returns a promise which returns a \"load\" or \"error\" event associated with the script.","source":"* {Promise} - Returns a promise which returns a \"load\" or \"error\" event associated with the script.\n\t *"}},"Crate":{"category":"browser","description":"Constructs a virtual storage container with localStorage support. Crate will fallback to strictly virtual storage if localStorage isn't supported. If localStorage is supported virtual storage will be used first & only fallback to localStorage when needed. Crate is ideal as a seemless drop in replacement for localStorage when not supported or allowed.","examples":[{"tag":"example","optional":false,"description":"import { Crate, construct, assert } from '@universalweb/acid'; const storageCrate = construct(Crate); storageCrate.setItem('key', 'value'); assert(storageCrate.getItem('key'), 'value');","source":"import { Crate, construct, assert } from \"@universalweb/acid\";\nconst storageCrate = construct(Crate);\nstorageCrate.setItem(\"key\", \"value\");\nassert(storageCrate.getItem(\"key\"), \"value\");\n"}],"name":"Crate","type":"class","classTag":"Crate","returns":{"tag":"returns","name":"-","type":"Crate","optional":false,"description":"Returns a new instance of Crate.","source":"* {Crate} - Returns a new instance of Crate.\n\t *"}},"Crate.setItem":{"category":"browser","description":"Save an item to a crate.","examples":[{"tag":"example","optional":false,"description":"import { Crate, construct, assert } from '@universalweb/acid'; const storageCrate = construct(Crate); storageCrate.setItem('key', 'value'); assert(storageCrate.getItem('key'), 'value');","source":"import { Crate, construct, assert } from \"@universalweb/acid\";\nconst storageCrate = construct(Crate);\nstorageCrate.setItem(\"key\", \"value\");\nassert(storageCrate.getItem(\"key\"), \"value\");\n"}],"name":"Crate.setItem","params":[{"tag":"param","name":"key","type":"String","optional":false,"description":"- The key used to store the data.","source":"* {String} key - The key used to store the data."},{"tag":"param","name":"value","type":"*","optional":false,"description":"- If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify.","source":"* {*} value - If saving to localStorage, & the object isn't a string it will be converted to a string using JSON.stringify."}],"type":"class","classTag":"Crate","functionTag":"setItem","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined.\n\t\t *"}},"Crate.getItem":{"category":"browser","description":"Get an item from a crate.","examples":[{"tag":"example","optional":false,"description":"import { Crate, construct, assert } from '@universalweb/acid'; const storageCrate = construct(Crate); storageCrate.setItem('key', 'value'); assert(storageCrate.getItem('key'), 'value');","source":"import { Crate, construct, assert } from \"@universalweb/acid\";\nconst storageCrate = construct(Crate);\nstorageCrate.setItem(\"key\", \"value\");\nassert(storageCrate.getItem(\"key\"), \"value\");\n"}],"name":"Crate.getItem","params":[{"tag":"param","name":"key","type":"String","optional":false,"description":"- The key used to store the data.","source":"* {String} key - The key used to store the data."}],"type":"class","classTag":"Crate","functionTag":"getItem","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined.\n\t\t *"}},"Crate.clear":{"category":"browser","description":"Clears all data for the crate including all of localStorage if supported.","examples":[{"tag":"example","optional":false,"description":"import { Crate, construct, assert } from '@universalweb/acid'; const storageCrate = construct(Crate); storageCrate.setItem('key', 'value'); assert(storageCrate.getItem('key'), 'value'); storageCrate.clear(); assert(storageCrate.getItem('key'), undefined);","source":"import { Crate, construct, assert } from \"@universalweb/acid\";\nconst storageCrate = construct(Crate);\nstorageCrate.setItem(\"key\", \"value\");\nassert(storageCrate.getItem(\"key\"), \"value\");\nstorageCrate.clear();\nassert(storageCrate.getItem(\"key\"), undefined);\n"}],"name":"Crate.clear","params":[{"tag":"param","name":"key","type":"String","optional":false,"description":"- The key used to remove data.","source":"* {String} key - The key used to remove data."}],"type":"class","classTag":"Crate","functionTag":"clear","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined.\n\t\t *"}},"Crate.removeItem":{"category":"browser","description":"Remove an item from a crate.","examples":[{"tag":"example","optional":false,"description":"import { Crate, construct, assert } from '@universalweb/acid'; const storageCrate = construct(Crate); storageCrate.setItem('key', 'value'); assert(storageCrate.getItem('key'), 'value'); storageCrate.removeItem('key'); assert(storageCrate.getItem('key'), undefined);","source":"import { Crate, construct, assert } from \"@universalweb/acid\";\nconst storageCrate = construct(Crate);\nstorageCrate.setItem(\"key\", \"value\");\nassert(storageCrate.getItem(\"key\"), \"value\");\nstorageCrate.removeItem(\"key\");\nassert(storageCrate.getItem(\"key\"), undefined);\n"}],"name":"Crate.removeItem","params":[{"tag":"param","name":"key","type":"String","optional":false,"description":"- The key used to remove data.","source":"* {String} key - The key used to remove data."}],"type":"class","classTag":"Crate","functionTag":"removeItem","returns":{"tag":"returns","name":"-","type":"undefined","optional":false,"description":"Returns undefined.","source":"* {undefined} - Returns undefined.\n\t\t *"}},"crate":{"category":"browser","description":"The crate function is a factory which wraps the Crate class constructor.","examples":[{"tag":"example","optional":false,"description":"const storageCrate = crate(); // => New Crate Object","source":"const storageCrate = crate();\n// => New Crate Object\n"}],"name":"crate","type":"function","functionTag":"crate","returns":{"tag":"returns","name":"-","type":"*","optional":false,"description":"Returns a new Crate Object.","source":"* {*} - Returns a new Crate Object.\n\t *"}}}} \ No newline at end of file diff --git a/eslint.config.js b/eslint.config.js index 76b05557..cacabf81 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -22,7 +22,7 @@ const globalsArray = [globals.browser, globals.commonjs, globals.node, globals.s globalsArray.forEach(addGlobals); Object.assign(globalsObject, customGlobals); export default [{ - ignores: ['node_modules/*', '.eslintignore', '**/*.mjs'], + ignores: ['acid.js', 'bundle.js', '/build/**', '**.min.js', 'node_modules/*', '.eslintignore', '**/*.mjs'], files: ['**/*.js'], languageOptions: { parser: babelParser, diff --git a/github/basic.js b/github/basic.js index 5c60b6b5..94a02001 100644 --- a/github/basic.js +++ b/github/basic.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function r(t){return void 0===t}function e(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!r(t)&&!o(t)}function c(t){return t}function u(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const a=n.call(e,t,c,r,u,s,o);i(a)&&r.push(a)})):u(t,((t,c,u,s)=>{const a=n(t,c,r,u,s,e,o);i(a)&&r.push(a)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const c=await n(t,e,r,o);i(c)&&r.push(c)})),r}const{sign:l}=Math;function h(t){return-1===l(t)}function p(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function y(t,n){return t.forEach(n),t}const d=Array.isArray;function m(t){return d(t)&&t||i(t)&&[t]||[]}function A(t){return t.flat(1/0)}const b=Reflect.construct;function w(t,n=[],r){const e=d(n)?n:[n];return r?b(t,e,r):b(t,e)}function v(...t){const n=w(Map),r=[];return u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function C(t,n=1,r=t.length){return t.splice(n,r)}function O(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function I(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function j(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function M(t,n,r=[],e){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const S=Object.keys;function R(t){if(t)return S(t)}const x=/\.|\[/,B=/]/g,N="";function T(t){return t.replace(B,N).split(x)}function U(t,n){if(!n)return!1;let r=n;return j(d(t)?t:T(t),(t=>(r=r[t],i(r)))),r}const P=Object.hasOwn;function k(t,...n){if(t)return j(n,(n=>{const r=T(n);if(1===r.length)return P(t,n);{const n=r.pop(),e=U(r,t);return!!e&&P(e,n)}}))}const $=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function D(t,n){return t?.constructor===n||!1}function L(t){return n=>D(n,t)}function q(t){return t?.constructor?.name}function V(t){return n=>q(n)===t||!1}function K(t){return function(n,...r){return r?t(n)&&j(r,t):t(n)}}const Z=V("Buffer"),_=K(Z),z=(t,n)=>{if(t===n)return!0;if(_(t))return t.equals(n);if(t.toString()===n.toString())if($(t)){const r=R(t);if(k(n,r))return j(r,(r=>z(t[r],n[r])))}else if(d(t)&&t.length===n.length)return j(t,((t,r)=>z(t,n[r])));return!1};const W=Math.max;function G(t,n,r=[],e,o){return i(e)?u(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):u(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function J(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function H(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function rt(t,n,r){if(i(t))return nt(t,n,r)}function et(t,n=t.length){if(t.length<=1)return rt(t);const r=rt(t);let e,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",r){return t.sort(((t,e)=>ft(t,e,n,r)))}function ht(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function pt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}const yt=V("Number"),dt=K(yt);const mt=L(String);function At(t,n){if(t)return mt(n)?t[n]:G(n,(n=>t[n]))}function bt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),Ot=wt(/\.js$/),It=wt(/\.json$/);const jt=Object.assign;function Ft(t,...n){if(i(t))return jt(t,...n)}const Et=async(t,n,r,e)=>{if(!t)return;const o=R(t);return i(r)?await a(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await a(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function Mt(t,n,r,e){if(!t)return;const o=R(t);return i(r)?u(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):u(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const St=V("Set"),Rt=K(St);function xt(t,n){if(Rt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Bt=V("GeneratorFunction"),Nt=K(Bt);async function Tt(t,n,r){if(Rt(t)){for(const r of t)await n(r,t);return t}if(Nt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const Ut=t=>!!i(t)&&t instanceof Function,Pt=V("AsyncFunction"),kt=K(Pt);function $t(t,n,r,e,o,c){return(u,s,a,f,l)=>{let h;const p=kt(s);if(i(u)&&s)return h=d(u)?p?n:t:$(u)||Ut(u)?p?e:r:o?p?c:o:Nt(u)?c:p?e:r,h(u,s,a,f,l)}}const Dt=$t(u,a,Mt,Et,xt,Tt);class Lt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Dt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,Vt=!1,Kt=()=>{};function Zt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const zt=w(_t);function Wt(t,n){return zt.set(t,n)}const Gt=Reflect.apply;function Jt(t,n,r){if(Ut(t))return Gt(t,n,r)}async function Ht(t,n,r={}){if(t)return await Et(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function Qt(t,n,r={},e,o){if(t)return i(e)?Mt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):Mt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function Xt(t){return t?.constructor}function Yt(t,n=[]){const r=Xt(t);return r===Function&&"function"===r.name?function(){}:w(r,n)}function tn(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Ut(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function nn(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const rn=$t(G,J,Qt,Ht,tn,nn);async function en(t,n){if(!t)return;return F(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function on(t,n){if(!t)return;return j(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function cn(t,n=c){if(d(t)||Rt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function un(t,n=c,r){if(Nt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(d(t)||Rt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const sn=$t(j,F,on,en,cn,un);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,pn=Object.defineProperty,gn=fn(Object.hasOwnProperty),yn=Object.is;const{random:dn}=Math;const{sign:mn}=Math;const An=Object.entries;async function bn(t,n=c,r={}){return await Et(t,(async(t,e,o,c,u)=>{const s=await n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function wn(t,n=c,r={}){return Mt(t,((t,e,o,c,u)=>{const s=n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function vn(t,n,r={}){return Mt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Cn(t,n,r={}){return await Et(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const On=V("RegExp"),In=K(On),jn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(jn,"\\$&")}function En(t,n){return n?En(G(t,Fn)):RegExp(t.join("|"))}function Mn(t){if(t)return R(t).length}const Sn=/[ _-]+/g;const Rn=/[ _-]+/g,xn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Tn=/[ _-]+/g;const Un=/[ _-]+/g;function Pn(t,n=1){return t.substring(n)}const kn=/%(?![\da-f]{2})/gi,$n=/&/g,Dn=//g,qn=/"/g;function Vn(t){return decodeURIComponent(t.replace(kn,(()=>"%25")))}function Kn(t){return t.replace($n,"&").replace(Dn,"<").replace(Ln,">").replace(qn,""")}const Zn=/\S+/g,_n=/\w+/g;const zn=/\w+/g;function Wn(t){return t[0].toUpperCase()}function Gn(t){return Wn(t)+Pn(t)}function Jn(t){return Wn(t)+Pn(t).toLowerCase()}function Hn(t){return Xt(t)?.name}function Qn(t){return!i(t)}const Xn=V("Map"),Yn=K(Xn),tr=/Array/,nr="Array";function rr(t){if(t){const n=Hn(t);if(tr.test(n)&&n!==nr)return!0}return!1}const er=V("BigInt"),or=K(er),ir=V("Boolean"),cr=K(ir),ur=V("ArrayBuffer"),sr=K(ur);const ar=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const fr=V("Date"),lr=K(fr);function hr(t){return!1===t}const pr=V("Float32Array"),gr=K(pr),yr=V("Float64Array"),dr=K(yr),{isInteger:mr}=Number,Ar=mr,br=V("Int16Array"),wr=K(br),vr=V("Int32Array"),Cr=K(vr),Or=V("Int8Array"),Ir=K(Or);function jr(t){return!!t&&t instanceof Promise}function Fr(t){return!!t&&(jr(t)||kt(t)||Nt(t))}const{isSafeInteger:Er}=Number,Mr=Er;const Sr=V("Uint16Array"),Rr=K(Sr),xr=V("Uint32Array"),Br=K(xr),Nr=V("Uint8Array"),Tr=K(Nr),Ur=V("Uint8ClampedArray"),Pr=K(Ur),kr=V("WeakMap"),$r=K(kr),Dr=void 0!==globalThis.Deno,Lr=void 0!==globalThis.process&&process.versions&&process.versions.node;function qr(t,n=!0){return Boolean(t)&&n}function Vr(t,n){return hr(z(t,n))}const Kr=JSON;const Zr=Kr.stringify;function _r(t,n,r){const e=globalThis.options||r;let o;return Ut(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Zr(t)}\n\t\tExpected: ${Zr(n)}`,e)}async function zr(t,n,r){const e=await t;return!(Ut(n)&&!1===await n(e,r))&&!Vr(e,n)||_r(e,n,r)}const Wr=globalThis.structuredClone;async function Gr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);i(e)&&r.push(e)}return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);i(c)&&e(c)}return o}const u=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i(c)&&(u?o.set(r,c):o[r]=c)}return o}function Jr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);i(c)&&o(c)}return e}const o=Ut(e.set);for(const[r,c]of t){const u=n(c,r,e,t);i(u)&&(o?e.set(r,u):e[r]=u)}return e}const Hr=$t(s,f,wn,bn,Jr,Gr);function Qr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Ut(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function Xr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Ut(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const Yr=$t(E,M,vn,Cn,Qr,Xr);function te(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const ne=te(u),re=te(O);function ee(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const oe=ee(a),ie=ee(I);const ce=wt(/\./);class ue{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const se=w(ue);class ae{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,ae.models.set(t,n)):Ft(this,t)}}class fe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Mt(t,(n=>{t[n]=new fe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new fe(r),!0)})}}class le{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const he=w(le);class pe{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Lt,t.Intervals=ue,t.Model=ae,t.Store=fe,t.Timers=_t,t.UniqID=le,t.VirtualStorage=pe,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Jt,t.arrayToRegex=En,t.arraysToObject=function(t,n){const r={};return u(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Fr(t)||Fr(n)?zr(t,n,r):!(Ut(n)&&!1===n(t,r))&&!Vr(t,n)||_r(t,n,r)},t.assertAsync=zr,t.assign=Ft,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=rn(t,(t=>Ut(t)?t.bind(n):t));return r?Ft(r,e):e},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Sn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Lt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(_(t))return st(t);if(d(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=st,t.clearIntervals=function(){Zt(setTimeout(Kt,0),(t=>{se.remove(t)}))},t.clearTimers=function(){Zt(setTimeout(Kt,0),(t=>{zt.remove(t)}))},t.clone=function(t){return Wr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.compact=function(t){if($(t)){const n=R(t),r=n.length,e={};for(let o=0;oqr(t)))},t.compactKeys=function(t){const n=[];return Mt(t,((t,r)=>{i(t)&&n.push(r)})),n},t.compactMap=Hr,t.compactMapArray=s,t.compactMapAsyncArray=f,t.compactMapAsyncObject=bn,t.compactMapObject=wn,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return u(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return u(t,(t=>{t[n]||r++})),r},t.curry=function(t,r=t.length){const e=[],o=(...i)=>{if(e.push(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.curryRight=function(t,r=t.length){const e=[],o=(...i)=>{if(e.unshift(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.debounce=function(t,n){function r(...t){r.id!==Vt&&zt.remove(r.id),r.id=Wt((()=>{r.callable(...t),r.id=Vt}),n)}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{r.id!==Vt&&(zt.remove(r.id),r.id=Vt)},r},t.deduct=function(t){return t-1},t.defProp=pn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,r=t.length)=>C(t,0,r-n),t.each=Dt,t.eachArray=u,t.eachAsyncArray=a,t.eachAsyncObject=Et,t.eachObject=Mt,t.eachRight=O,t.eachRightAsync=I,t.ensureArray=m,t.ensureBuffer=function(t){return _(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=jn,t.every=sn,t.everyArg=function(...t){return kt(t[0])?async function(...n){return sn(t,(async t=>sn(n,(async n=>t(n)))))}:function(...n){return sn(t,(t=>sn(n,(n=>t(n)))))}},t.everyArray=j,t.everyAsyncArray=F,t.everyAsyncObject=en,t.everyObject=on,t.falsy=Vt,t.filter=Yr,t.filterArray=E,t.filterAsyncArray=M,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=at,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(m(n))),[]);return r},t.flattenDeep=A,t.flow=ne,t.flowAsync=oe,t.flowAsyncRight=ie,t.flowRight=re,t.forEach=y,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else Ut(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=xt,t.forOfAsync=Tt,t.forOfCompactMap=Jr,t.forOfCompactMapAsync=Gr,t.forOfEvery=cn,t.forOfEveryAsync=un,t.forOfFilter=Qr,t.forOfFilterAsync=Xr,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=$t,t.get=U,t.getEntries=function(t){if(i(t))return An(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return gt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return j(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Hn,t.groupBy=function(t,n){const r={};return u(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(Qn(n)||Qn(r))return!1;if(mt(n))return mt(r)?n.includes(r,e):In(r)?r.test(n):Ut(r)?Boolean(r(n)):sn(r,(r=>Boolean(t(n,r))));if(d(n)){if(mt(r))return n.includes(r,e);if(In(r))return sn(n,(t=>t.test(r)));if(d(r))return sn(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=T(n);if(1===r.length)return P(t,n);{const n=r.pop(),e=U(r,t);return!!e&&P(e,n)}})))},t.hasDot=ce,t.hasKeys=k,t.hasLength=e,t.hasProp=gn,t.hasValue=i,t.htmlEntities=Kn,t.ifInvoke=function(t,...n){if(Ut(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!i(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(i(t)){if(Ut(n))return r?Jt(n,r,e):n(...e);if($(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eDt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return u(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return s(t,(t=>{if(j(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return se.set(t,n)},t.intervals=se,t.invert=function(t,n={}){if(t)return Mt(t,((t,r)=>{n[t]=r})),n},t.invoke=function(t,n,r){return G(t,((t,e)=>t[n](r,e)))},t.invokeAsync=function(t,n,r){return J(t,(async(t,e)=>t[n](r,e)))},t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=d,t.isArrayBuffer=sr,t.isArrayBufferCall=ur,t.isArrayLike=function(t,n){if(Qn(t)||Ut(t))return!1;if(d(t)||rr(t))return!0;const r=t.length;if(!Qn(r)||!dt(r)||r<0)return!1;if(n){const n=R(t);return!!n&&sn(n,((t,n)=>n>=0&&dt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=Pt,t.isBigInt=or,t.isBigIntCall=er,t.isBoolean=cr,t.isBooleanCall=ir,t.isBuffer=_,t.isBufferCall=Z,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return ar.test(n)}return!1},t.isConstructor=D,t.isConstructorFactory=L,t.isConstructorNameFactory=V,t.isDate=lr,t.isDateCall=fr,t.isDeno=Dr,t.isEmpty=function(t){return mt(t)||d(t)?!e(t):$(t)?!Mn(t):!i(t)},t.isEqual=z,t.isF32=gr,t.isF32Call=pr,t.isF64=dr,t.isF64Call=yr,t.isFalse=hr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=Ot,t.isFileJSON=It,t.isFloat=Ar,t.isFunction=Ut,t.isGenerator=Nt,t.isGeneratorCall=Bt,t.isI16=wr,t.isI16Call=br,t.isI32=Cr,t.isI32Call=vr,t.isI8=Ir,t.isI8Call=Or,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Fr,t.isMap=Yn,t.isMapCall=Xn,t.isMatchArray=function(t,n){return t.length===n.length&&j(t,((t,r)=>z(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=R(t),e=R(n);return r.length===e.length&&j(r,(r=>t[r]===n[r]))},t.isNegative=h,t.isNodejs=Lr,t.isNotArray=function(t){return!d(t)},t.isNotNumber=function(t){return!dt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=dt,t.isNumberCall=yt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=$,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=jr,t.isRegex=In,t.isRegexCall=On,t.isRelated=function(t,n){return!Qn(t)&&!Qn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=Mr,t.isSame=yn,t.isSameType=function(t,n){const r=Xt(t),e=Xt(n);return r===e&&r.name===e.name},t.isSet=Rt,t.isSetCall=St,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=qr,t.isTypeFactory=K,t.isTypedArray=rr,t.isU16=Rr,t.isU16Call=Sr,t.isU32=Br,t.isU32Call=xr,t.isU8=Tr,t.isU8C=Pr,t.isU8CCall=Ur,t.isU8Call=Nr,t.isUndefined=r,t.isWeakMap=$r,t.isWeakMapCall=kr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return Kr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Rn," ").trim().toLowerCase().replace(xn,"-")},t.keys=R,t.largest=function(t){return W(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Un," ").trim().toLowerCase()},t.map=rn,t.mapArray=G,t.mapAsyncArray=J,t.mapAsyncObject=Ht,t.mapObject=Qt,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{Dt(r,((r,e)=>{if(n[e]&&($(r)||d(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return i(n)?w(ae,[t,n]):U(t,ae.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Qn,t.noop=Kt,t.notEqual=Vr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=jt,t.objectEntries=An,t.objectSize=Mn,t.omit=function(t,n){if(t){if(d(n)){const r=En(n);return vn(t,((t,n)=>!r.test(n)))}if(In(n))return vn(t,((t,r)=>!n.test(r)));if(mt(n))return vn(t,((t,r)=>r!==n));if(dt(n)){const r=n.toString();return vn(t,((t,n)=>n!==r))}return Ut(n)?vn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(i(n)||(n=t(...r)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>rn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>sn(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[s(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return u(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return G(t,(t=>At(t,n)))},t.pluckObject=At,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=R(t))=>j(r,(r=>z(t[r],n[r]))),t.randomFloat=function(t,n=0){return dn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,r=1,e=[]){return h(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return et(t);if(1===n)return[t[tt(r-1,0)]];const e=[],o={};let i,c=0;for(;cht(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>bt(t,e,n,r)))},t.sortCollectionAscending=gt,t.sortCollectionAscendingFilter=pt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(H)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=bt,t.sortUnique=ct,t.stringify=Zr,t.stubArray=()=>[],t.stubFalse=()=>Vt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=H,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=qt:(r.callable(...t),r.id=Wt((()=>{r.shouldThrottle&&r.callable(...t),r.id=Vt}),n))}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{zt.remove(r.id),r.id=Vt},r},t.timer=Wt,t.timers=zt,t.times=Zt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return Mt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ut(A(t))},t.uniqID=he,t.unique=ut,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eGn(t)))},t.upperFirstLetter=Wn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(zn,(t=>Jn(t)))},t.virtualStorage=function(t){return new pe(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(_n)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=w(Map),r=[];return 2===t.length?v(t[0],t[1]):(u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return u(t,((t,e)=>{r[t]=n[e]})),r}})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function r(t){return void 0===t}function e(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!r(t)&&!o(t)}function c(t){return t}function u(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const a=n.call(e,t,c,r,u,s,o);i(a)&&r.push(a)})):u(t,((t,c,u,s)=>{const a=n(t,c,r,u,s,e,o);i(a)&&r.push(a)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const c=await n(t,e,r,o);i(c)&&r.push(c)})),r}const{sign:l}=Math;function h(t){return-1===l(t)}function p(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function y(t,n){return t.forEach(n),t}const d=Array.isArray;function m(t){return d(t)&&t||i(t)&&[t]||[]}function A(t){return t.flat(1/0)}const b=Reflect.construct;function w(t,n=[],r){const e=d(n)?n:[n];return r?b(t,e,r):b(t,e)}function v(...t){const n=w(Map),r=[];return u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function C(t,n=1,r=t.length){return t.splice(n,r)}function O(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function I(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function j(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function M(t,n,r=[],e){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const S=Object.keys;function R(t){if(t)return S(t)}const x=/\.|\[/,B=/]/g,N="";function T(t){return t.replace(B,N).split(x)}function U(t,n){if(!n)return!1;let r=n;return j(d(t)?t:T(t),(t=>(r=r[t],i(r)))),r}const k=Object.hasOwn;function P(t,...n){if(t)return j(n,(n=>{const r=T(n);if(1===r.length)return k(t,n);{const n=r.pop(),e=U(r,t);return!!e&&k(e,n)}}))}const $=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function D(t,n){return t?.constructor===n||!1}function L(t){return n=>D(n,t)}function q(t){return t?.constructor?.name}function V(t){return n=>q(n)===t||!1}function K(t){return function(n,...r){return r?t(n)&&j(r,t):t(n)}}const Z=V("Buffer"),_=K(Z),z=(t,n)=>{if(t===n)return!0;if(_(t))return t.equals(n);if(t.toString()===n.toString())if($(t)){const r=R(t);if(P(n,r))return j(r,(r=>z(t[r],n[r])))}else if(d(t)&&t.length===n.length)return j(t,((t,r)=>z(t,n[r])));return!1};const W=Math.max;function G(t,n,r=[],e,o){return i(e)?u(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):u(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function J(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function H(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function rt(t,n,r){if(i(t))return nt(t,n,r)}function et(t,n=t.length){if(t.length<=1)return rt(t);const r=rt(t);let e,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",r){return t.sort(((t,e)=>ft(t,e,n,r)))}function ht(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function pt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}const yt=V("Number"),dt=K(yt);const mt=L(String);function At(t,n){if(t)return mt(n)?t[n]:G(n,(n=>t[n]))}function bt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),Ot=wt(/\.js$/),It=wt(/\.json$/);const jt=Object.assign;function Ft(t,...n){if(i(t))return jt(t,...n)}const Et=async(t,n,r,e)=>{if(!t)return;const o=R(t);return i(r)?await a(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await a(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function Mt(t,n,r,e){if(!t)return;const o=R(t);return i(r)?u(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):u(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const St=V("Set"),Rt=K(St);function xt(t,n){if(Rt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Bt=V("GeneratorFunction"),Nt=K(Bt);async function Tt(t,n,r){if(Rt(t)){for(const r of t)await n(r,t);return t}if(Nt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const Ut=t=>!!i(t)&&t instanceof Function,kt=V("AsyncFunction"),Pt=K(kt);function $t(t,n,r,e,o,c){return(u,s,a,f,l)=>{let h;const p=Pt(s);if(i(u)&&s)return h=d(u)?p?n:t:$(u)||Ut(u)?p?e:r:o?p?c:o:Nt(u)?c:p?e:r,h(u,s,a,f,l)}}const Dt=$t(u,a,Mt,Et,xt,Tt);class Lt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Dt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,Vt=!1,Kt=()=>{};function Zt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const zt=w(_t);function Wt(t,n){return zt.set(t,n)}const Gt=Reflect.apply;function Jt(t,n,r){if(Ut(t))return Gt(t,n,r)}async function Ht(t,n,r={}){if(t)return await Et(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function Qt(t,n,r={},e,o){if(t)return i(e)?Mt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):Mt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function Xt(t){return t?.constructor}function Yt(t,n=[]){const r=Xt(t);return r===Function&&"function"===r.name?function(){}:w(r,n)}function tn(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Ut(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function nn(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const rn=$t(G,J,Qt,Ht,tn,nn);async function en(t,n){if(!t)return;return F(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function on(t,n){if(!t)return;return j(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function cn(t,n=c){if(d(t)||Rt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function un(t,n=c,r){if(Nt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(d(t)||Rt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const sn=$t(j,F,on,en,cn,un);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,pn=Object.defineProperty,gn=fn(Object.hasOwnProperty),yn=Object.is;const{random:dn}=Math;const{sign:mn}=Math;const An=Object.entries;async function bn(t,n=c,r={}){return await Et(t,(async(t,e,o,c,u)=>{const s=await n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function wn(t,n=c,r={}){return Mt(t,((t,e,o,c,u)=>{const s=n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function vn(t,n,r={}){return Mt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Cn(t,n,r={}){return await Et(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const On=V("RegExp"),In=K(On),jn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(jn,"\\$&")}function En(t,n){return n?En(G(t,Fn)):RegExp(t.join("|"))}function Mn(t){if(t)return R(t).length}const Sn=/[ _-]+/g;const Rn=/[ _-]+/g,xn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Tn=/[ _-]+/g;const Un=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Pn=/%(?![\da-f]{2})/gi,$n=/&/g,Dn=//g,qn=/"/g;function Vn(t){return decodeURIComponent(t.replace(Pn,(()=>"%25")))}function Kn(t){return t.replace($n,"&").replace(Dn,"<").replace(Ln,">").replace(qn,""")}const Zn=/\S+/g,_n=/\w+/g;const zn=/\w+/g;function Wn(t){return t[0].toUpperCase()}function Gn(t){return Wn(t)+kn(t)}function Jn(t){return Wn(t)+kn(t).toLowerCase()}function Hn(t){return Xt(t)?.name}function Qn(t){return!i(t)}const Xn=V("Map"),Yn=K(Xn),tr=/Array/,nr="Array";function rr(t){if(t){const n=Hn(t);if(tr.test(n)&&n!==nr)return!0}return!1}const er=V("BigInt"),or=K(er),ir=V("Boolean"),cr=K(ir),ur=V("ArrayBuffer"),sr=K(ur);const ar=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const fr=V("Date"),lr=K(fr);function hr(t){return!1===t}const pr=V("Float32Array"),gr=K(pr),yr=V("Float64Array"),dr=K(yr),{isInteger:mr}=Number,Ar=mr,br=V("Int16Array"),wr=K(br),vr=V("Int32Array"),Cr=K(vr),Or=V("Int8Array"),Ir=K(Or);function jr(t){return!!t&&t instanceof Promise}function Fr(t){return!!t&&(jr(t)||Pt(t)||Nt(t))}const{isSafeInteger:Er}=Number,Mr=Er;const Sr=V("Uint16Array"),Rr=K(Sr),xr=V("Uint32Array"),Br=K(xr),Nr=V("Uint8Array"),Tr=K(Nr),Ur=V("Uint8ClampedArray"),kr=K(Ur),Pr=V("WeakMap"),$r=K(Pr),Dr=void 0!==globalThis.Deno,Lr=void 0!==globalThis.process&&process.versions&&process.versions.node;function qr(t,n=!0){return Boolean(t)&&n}function Vr(t,n){return hr(z(t,n))}const Kr=JSON;const Zr=Kr.stringify;function _r(t,n,r){const e=globalThis.options||r;let o;return Ut(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Zr(t)}\n\t\tExpected: ${Zr(n)}`,e)}async function zr(t,n,r){const e=await t;return!(Ut(n)&&!1===await n(e,r))&&!Vr(e,n)||_r(e,n,r)}const Wr=globalThis.structuredClone;async function Gr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);i(e)&&r.push(e)}return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);i(c)&&e(c)}return o}const u=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i(c)&&(u?o.set(r,c):o[r]=c)}return o}function Jr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);i(c)&&o(c)}return e}const o=Ut(e.set);for(const[r,c]of t){const u=n(c,r,e,t);i(u)&&(o?e.set(r,u):e[r]=u)}return e}const Hr=$t(s,f,wn,bn,Jr,Gr);function Qr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Ut(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function Xr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Ut(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const Yr=$t(E,M,vn,Cn,Qr,Xr);function te(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const ne=te(u),re=te(O);function ee(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const oe=ee(a),ie=ee(I);const ce=wt(/\./);class ue{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const se=w(ue);class ae{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,ae.models.set(t,n)):Ft(this,t)}}class fe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Mt(t,(n=>{t[n]=new fe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new fe(r),!0)})}}class le{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const he=w(le);class pe{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Lt,t.Intervals=ue,t.Model=ae,t.Store=fe,t.Timers=_t,t.UniqID=le,t.VirtualStorage=pe,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Jt,t.arrayToRegex=En,t.arraysToObject=function(t,n){const r={};return u(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Fr(t)||Fr(n)?zr(t,n,r):!(Ut(n)&&!1===n(t,r))&&!Vr(t,n)||_r(t,n,r)},t.assertAsync=zr,t.assign=Ft,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=rn(t,(t=>Ut(t)?t.bind(n):t));return r?Ft(r,e):e},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Sn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Lt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(_(t))return st(t);if(d(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=st,t.clearIntervals=function(){Zt(setTimeout(Kt,0),(t=>{se.remove(t)}))},t.clearTimers=function(){Zt(setTimeout(Kt,0),(t=>{zt.remove(t)}))},t.clone=function(t){return Wr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.compact=function(t){if($(t)){const n=R(t),r=n.length,e={};for(let o=0;oqr(t)))},t.compactKeys=function(t){const n=[];return Mt(t,((t,r)=>{i(t)&&n.push(r)})),n},t.compactMap=Hr,t.compactMapArray=s,t.compactMapAsyncArray=f,t.compactMapAsyncObject=bn,t.compactMapObject=wn,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return u(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return u(t,(t=>{t[n]||r++})),r},t.curry=function(t,r=t.length){const e=[],o=(...i)=>{if(e.push(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.curryRight=function(t,r=t.length){const e=[],o=(...i)=>{if(e.unshift(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.debounce=function(t,n){function r(...t){r.id!==Vt&&zt.remove(r.id),r.id=Wt((()=>{r.callable(...t),r.id=Vt}),n)}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{r.id!==Vt&&(zt.remove(r.id),r.id=Vt)},r},t.deduct=function(t){return t-1},t.defProp=pn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,r=t.length)=>C(t,0,r-n),t.each=Dt,t.eachArray=u,t.eachAsyncArray=a,t.eachAsyncObject=Et,t.eachObject=Mt,t.eachRight=O,t.eachRightAsync=I,t.ensureArray=m,t.ensureBuffer=function(t){return _(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=jn,t.every=sn,t.everyArg=function(...t){return Pt(t[0])?async function(...n){return sn(t,(async t=>sn(n,(async n=>t(n)))))}:function(...n){return sn(t,(t=>sn(n,(n=>t(n)))))}},t.everyArray=j,t.everyAsyncArray=F,t.everyAsyncObject=en,t.everyObject=on,t.falsy=Vt,t.filter=Yr,t.filterArray=E,t.filterAsyncArray=M,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=at,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(m(n))),[]);return r},t.flattenDeep=A,t.flow=ne,t.flowAsync=oe,t.flowAsyncRight=ie,t.flowRight=re,t.forEach=y,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else Ut(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=xt,t.forOfAsync=Tt,t.forOfCompactMap=Jr,t.forOfCompactMapAsync=Gr,t.forOfEvery=cn,t.forOfEveryAsync=un,t.forOfFilter=Qr,t.forOfFilterAsync=Xr,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=$t,t.get=U,t.getEntries=function(t){if(i(t))return An(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return gt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return j(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Hn,t.groupBy=function(t,n){const r={};return u(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(Qn(n)||Qn(r))return!1;if(mt(n))return mt(r)?n.includes(r,e):In(r)?r.test(n):Ut(r)?Boolean(r(n)):sn(r,(r=>Boolean(t(n,r))));if(d(n)){if(mt(r))return n.includes(r,e);if(In(r))return sn(n,(t=>t.test(r)));if(d(r))return sn(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=T(n);if(1===r.length)return k(t,n);{const n=r.pop(),e=U(r,t);return!!e&&k(e,n)}})))},t.hasDot=ce,t.hasKeys=P,t.hasLength=e,t.hasProp=gn,t.hasValue=i,t.htmlEntities=Kn,t.ifInvoke=function(t,...n){if(Ut(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!i(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(i(t)){if(Ut(n))return r?Jt(n,r,e):n(...e);if($(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eDt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return u(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return s(t,(t=>{if(j(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return se.set(t,n)},t.intervals=se,t.invert=function(t,n={}){if(t)return Mt(t,((t,r)=>{n[t]=r})),n},t.invokeArray=function(t,n,r){if(!t)return;const e=t.length;if(i(r))for(let o=0;ot[n].call(e,r):(t,e)=>t[n](r))},t.invokeCollectionAsync=function(t,n,r,e){return J(t,e?t=>t[n].call(e,r):async t=>t[n](r))},t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=d,t.isArrayBuffer=sr,t.isArrayBufferCall=ur,t.isArrayLike=function(t,n){if(Qn(t)||Ut(t))return!1;if(d(t)||rr(t))return!0;const r=t.length;if(!Qn(r)||!dt(r)||r<0)return!1;if(n){const n=R(t);return!!n&&sn(n,((t,n)=>n>=0&&dt(n)))}return!0},t.isAsync=Pt,t.isAsyncCall=kt,t.isBigInt=or,t.isBigIntCall=er,t.isBoolean=cr,t.isBooleanCall=ir,t.isBuffer=_,t.isBufferCall=Z,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return ar.test(n)}return!1},t.isConstructor=D,t.isConstructorFactory=L,t.isConstructorNameFactory=V,t.isDate=lr,t.isDateCall=fr,t.isDeno=Dr,t.isEmpty=function(t){return mt(t)||d(t)?!e(t):$(t)?!Mn(t):!i(t)},t.isEqual=z,t.isF32=gr,t.isF32Call=pr,t.isF64=dr,t.isF64Call=yr,t.isFalse=hr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=Ot,t.isFileJSON=It,t.isFloat=Ar,t.isFunction=Ut,t.isGenerator=Nt,t.isGeneratorCall=Bt,t.isI16=wr,t.isI16Call=br,t.isI32=Cr,t.isI32Call=vr,t.isI8=Ir,t.isI8Call=Or,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Fr,t.isMap=Yn,t.isMapCall=Xn,t.isMatchArray=function(t,n){return t.length===n.length&&j(t,((t,r)=>z(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=R(t),e=R(n);return r.length===e.length&&j(r,(r=>t[r]===n[r]))},t.isNegative=h,t.isNodejs=Lr,t.isNotArray=function(t){return!d(t)},t.isNotNumber=function(t){return!dt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=dt,t.isNumberCall=yt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=$,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=jr,t.isRegex=In,t.isRegexCall=On,t.isRelated=function(t,n){return!Qn(t)&&!Qn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=Mr,t.isSame=yn,t.isSameType=function(t,n){const r=Xt(t),e=Xt(n);return r===e&&r.name===e.name},t.isSet=Rt,t.isSetCall=St,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=qr,t.isTypeFactory=K,t.isTypedArray=rr,t.isU16=Rr,t.isU16Call=Sr,t.isU32=Br,t.isU32Call=xr,t.isU8=Tr,t.isU8C=kr,t.isU8CCall=Ur,t.isU8Call=Nr,t.isUndefined=r,t.isWeakMap=$r,t.isWeakMapCall=Pr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return Kr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Rn," ").trim().toLowerCase().replace(xn,"-")},t.keys=R,t.largest=function(t){return W(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Un," ").trim().toLowerCase()},t.map=rn,t.mapArray=G,t.mapAsyncArray=J,t.mapAsyncObject=Ht,t.mapObject=Qt,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{Dt(r,((r,e)=>{if(n[e]&&($(r)||d(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return i(n)?w(ae,[t,n]):U(t,ae.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Qn,t.noop=Kt,t.notEqual=Vr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=jt,t.objectEntries=An,t.objectSize=Mn,t.omit=function(t,n){if(t){if(d(n)){const r=En(n);return vn(t,((t,n)=>!r.test(n)))}if(In(n))return vn(t,((t,r)=>!n.test(r)));if(mt(n))return vn(t,((t,r)=>r!==n));if(dt(n)){const r=n.toString();return vn(t,((t,n)=>n!==r))}return Ut(n)?vn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(i(n)||(n=t(...r)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>rn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>sn(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[s(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return u(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return G(t,(t=>At(t,n)))},t.pluckObject=At,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=R(t))=>j(r,(r=>z(t[r],n[r]))),t.randomFloat=function(t,n=0){return dn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,r=1,e=[]){return h(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return et(t);if(1===n)return[t[tt(r-1,0)]];const e=[],o={};let i,c=0;for(;cht(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>bt(t,e,n,r)))},t.sortCollectionAscending=gt,t.sortCollectionAscendingFilter=pt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(H)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=bt,t.sortUnique=ct,t.stringify=Zr,t.stubArray=()=>[],t.stubFalse=()=>Vt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=H,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=qt:(r.callable(...t),r.id=Wt((()=>{r.shouldThrottle&&r.callable(...t),r.id=Vt}),n))}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{zt.remove(r.id),r.id=Vt},r},t.timer=Wt,t.timers=zt,t.times=Zt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return Mt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ut(A(t))},t.uniqID=he,t.unique=ut,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eGn(t)))},t.upperFirstLetter=Wn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(zn,(t=>Jn(t)))},t.virtualStorage=function(t){return new pe(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(_n)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=w(Map),r=[];return 2===t.length?v(t[0],t[1]):(u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return u(t,((t,e)=>{r[t]=n[e]})),r}})); //# sourceMappingURL=basic.js.map diff --git a/github/browser.js b/github/browser.js index 4931347e..93bdd434 100644 --- a/github/browser.js +++ b/github/browser.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function e(t){return void 0===t}function r(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!e(t)&&!o(t)}function c(t){return t}function s(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const a=n.call(r,t,c,e,s,u,o);i(a)&&e.push(a)})):s(t,((t,c,s,u)=>{const a=n(t,c,e,s,u,r,o);i(a)&&e.push(a)})),e}async function a(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const c=await n(t,r,e,o);i(c)&&e.push(c)})),e}const{sign:l}=Math;function h(t){return-1===l(t)}function g(t,n,e,r){let o=t;for(;on;)r.push(o),o-=e;return r}function d(t,n){return t.forEach(n),t}const y=Array.isArray;function m(t){return y(t)&&t||i(t)&&[t]||[]}function b(t){return t.flat(1/0)}const A=Reflect.construct;function w(t,n=[],e){const r=y(n)?n:[n];return e?A(t,r,e):A(t,r)}function v(...t){const n=w(Map),e=[];return s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&0===t.parentIndex&&e.push(t.child)})),e}function C(t,n=1,e=t.length){return t.splice(n,e)}function I(t,n,e){if(!t)return;const r=t.length;for(let o=r-1;o>=0;o--)n(t[o],o,t,r,e);return t}async function O(t,n){if(!t)return;const e=t.length;for(let r=e-1;r>=0;r--)await n(t[r],r,t,e);return t}function E(t,n,e){if(!t)return;const r=t.length;for(let o=0;o{!0===n(t,o,e,i,c,r)&&e.push(t)})),e}async function j(t,n,e=[],r){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,e,i,c,r)&&e.push(t)})),e}const x=Object.keys;function M(t){if(t)return x(t)}const T=/\.|\[/,R=/]/g,B="";function N(t){return t.replace(R,B).split(T)}function L(t,n){if(!n)return!1;let e=n;return E(y(t)?t:N(t),(t=>(e=e[t],i(e)))),e}const $=Object.hasOwn;function k(t,...n){if(t)return E(n,(n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}}))}const D=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function U(t,n){return t?.constructor===n||!1}function P(t){return n=>U(n,t)}function q(t){return t?.constructor?.name}function z(t){return n=>q(n)===t||!1}function W(t){return function(n,...e){return e?t(n)&&E(e,t):t(n)}}const _=z("Buffer"),H=W(_),V=(t,n)=>{if(t===n)return!0;if(H(t))return t.equals(n);if(t.toString()===n.toString())if(D(t)){const e=M(t);if(k(n,e))return E(e,(e=>V(t[e],n[e])))}else if(y(t)&&t.length===n.length)return E(t,((t,e)=>V(t,n[e])));return!1};const Z=Math.max;function K(t,n,e=[],r,o){return i(r)?s(t,((t,i,c,s)=>{e[i]=n.call(r,t,i,e,c,s,o)})):s(t,((t,r,i,c)=>{e[r]=n(t,r,e,i,c,o)})),e}async function G(t,n){const e=[];return await a(t,(async(t,r,o)=>{e[r]=await n(t,r,o)})),e}function J(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function et(t,n,e){if(i(t))return nt(t,n,e)}function rt(t,n=t.length){if(t.length<=1)return et(t);const e=et(t);let r,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",e){return t.sort(((t,r)=>ft(t,r,n,e)))}function ht(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):o.localeCompare(i)}function gt(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i?o?oi?1:0:-1:1}function pt(t,n="id",e){return t.sort(((t,r)=>gt(t,r,n,e)))}const dt=z("Number"),yt=W(dt);const mt=P(String);function bt(t,n){if(t)return mt(n)?t[n]:K(n,(n=>t[n]))}function At(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),It=wt(/\.js$/),Ot=wt(/\.json$/);const Et=Object.assign;function Ft(t,...n){if(i(t))return Et(t,...n)}const St=async(t,n,e,r)=>{if(!t)return;const o=M(t);return i(e)?await a(o,((i,c,s,u)=>n.call(e,t[i],i,t,u,o,r))):await a(o,((e,i,c,s)=>n(t[e],e,t,s,o,r))),t};function jt(t,n,e,r){if(!t)return;const o=M(t);return i(e)?s(o,((o,i,c,s)=>{n.call(e,t[o],o,t,s,c,r)})):s(o,((e,o,i,c)=>{n(t[e],e,t,c,i,r)})),t}const xt=z("Set"),Mt=W(xt);function Tt(t,n){if(Mt(t)){for(const e of t)n(e,t);return t}for(const[e,r]of t)n(r,e,t);return t}const Rt=z("GeneratorFunction"),Bt=W(Rt);async function Nt(t,n,e){if(Mt(t)){for(const e of t)await n(e,t);return t}if(Bt(t))for await(const r of t(...e))await n(r,t);for(const[e,r]of t)await n(r,e,t);return t}const Lt=t=>!!i(t)&&t instanceof Function,$t=z("AsyncFunction"),kt=W($t);function Dt(t,n,e,r,o,c){return(s,u,a,f,l)=>{let h;const g=kt(u);if(i(s)&&u)return h=y(s)?g?n:t:D(s)||Lt(s)?g?r:e:o?g?c:o:Bt(s)?c:g?r:e,h(s,u,a,f,l)}}const Ut=Dt(s,a,jt,St,Tt,Nt);class Pt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Ut(t,((t,e)=>{n[e]=function(...e){return this.value=t.call(n,n.value,...e),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,zt=!1,Wt=()=>{};function _t(t,n){for(let e=0;e{t(),e.remove(r)}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Vt=w(Ht);function Zt(t,n){return Vt.set(t,n)}const Kt=Reflect.apply;function Gt(t,n,e){if(Lt(t))return Kt(t,n,e)}async function Jt(t,n,e={}){if(t)return await St(t,(async(t,r,o,i,c)=>{e[r]=await n(t,r,e,o,i,c)})),e}function Qt(t,n,e={},r,o){if(t)return i(r)?jt(t,((t,i,c,s,u)=>{e[i]=n.call(r,t,i,e,c,s,u,o)})):jt(t,((t,r,i,c,s)=>{e[r]=n(t,r,e,i,c,s,o)})),e}function Xt(t){return t?.constructor}function Yt(t,n=[]){const e=Xt(t);return e===Function&&"function"===e.name?function(){}:w(e,n)}function tn(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){o(n(e,r,t))}return r}const o=Lt(r.set);for(const[e,i]of t){const c=n(i,e,r,t);o?r.set(e,c):r[e]=c}return r}async function nn(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))e.push(await n(o,e,t));return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){r(await n(e,o,t))}return o}const i=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i?o.set(e,c):o[e]=c}return o}const en=Dt(K,G,Qt,Jt,tn,nn);async function rn(t,n){if(!t)return;return F(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function on(t,n){if(!t)return;return E(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function cn(t,n=c){if(y(t)||Mt(t))for(const e of t){if(!1===n(e,t))return!1}else for(const[e,r]of t){if(!1===n(r,e,t))return!1}return!0}async function sn(t,n=c,e){if(Bt(t))for await(const r of t(...e)){if(!1===await n(r,t))return!1}else if(y(t)||Mt(t))for(const e of t){if(!1===await n(e,t))return!1}else for(const[e,r]of t){if(!1===await n(r,e,t))return!1}return!0}const un=Dt(E,F,on,rn,cn,sn);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,gn=Object.defineProperty,pn=fn(Object.hasOwnProperty),dn=Object.is;const{random:yn}=Math;const{sign:mn}=Math;const bn=Object.entries;async function An(t,n=c,e={}){return await St(t,(async(t,r,o,c,s)=>{const u=await n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function wn(t,n=c,e={}){return jt(t,((t,r,o,c,s)=>{const u=n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function vn(t,n,e={}){return jt(t,((t,r,o,i,c)=>{!0===n(t,r,e,o,i,c)&&(e[r]=t)})),e}async function Cn(t,n,e={}){return await St(t,(async(t,r,o,i,c)=>{!0===await n(t,r,e,o,i,c)&&(e[r]=t)})),e}const In=z("RegExp"),On=W(In),En=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(En,"\\$&")}function Sn(t,n){return n?Sn(K(t,Fn)):RegExp(t.join("|"))}function jn(t){if(t)return M(t).length}const xn=(t,n)=>{const e={};return s(t,((t,r)=>{e[t]=n[r]})),e},Mn=/[ _-]+/g;const Tn=/[ _-]+/g,Rn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Ln=/[ _-]+/g;const $n=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Dn=/%(?![\da-f]{2})/gi,Un=/&/g,Pn=//g,zn=/"/g;function Wn(t){return decodeURIComponent(t.replace(Dn,(()=>"%25")))}function _n(t){return t.replace(Un,"&").replace(Pn,"<").replace(qn,">").replace(zn,""")}const Hn=/\S+/g,Vn=/\w+/g;const Zn=/\w+/g;function Kn(t){return t[0].toUpperCase()}function Gn(t){return Kn(t)+kn(t)}function Jn(t){return Kn(t)+kn(t).toLowerCase()}function Qn(t){return Xt(t)?.name}function Xn(t){return!i(t)}const Yn=z("Map"),te=W(Yn),ne=/Array/,ee="Array";function re(t){if(t){const n=Qn(t);if(ne.test(n)&&n!==ee)return!0}return!1}const oe=z("BigInt"),ie=W(oe),ce=z("Boolean"),se=W(ce),ue=z("ArrayBuffer"),ae=W(ue);const fe=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const le=z("Date"),he=W(le);function ge(t){return!1===t}const pe=z("Float32Array"),de=W(pe),ye=z("Float64Array"),me=W(ye),{isInteger:be}=Number,Ae=be,we=z("Int16Array"),ve=W(we),Ce=z("Int32Array"),Ie=W(Ce),Oe=z("Int8Array"),Ee=W(Oe);function Fe(t){return!!t&&t instanceof Promise}function Se(t){return!!t&&(Fe(t)||kt(t)||Bt(t))}const{isSafeInteger:je}=Number,xe=je;const Me=z("Uint16Array"),Te=W(Me),Re=z("Uint32Array"),Be=W(Re),Ne=z("Uint8Array"),Le=W(Ne),$e=z("Uint8ClampedArray"),ke=W($e),De=z("WeakMap"),Ue=W(De),Pe=void 0!==globalThis.Deno,qe=void 0!==globalThis.process&&process.versions&&process.versions.node;function ze(t,n=!0){return Boolean(t)&&n}function We(t,n){return ge(V(t,n))}const _e=JSON;const He=_e.stringify;function Ve(t,n,e){const r=globalThis.options||e;let o;return Lt(r)?o=`${r.name} : ${r.constructor.name}`:r&&(o=`${r.title||r.method.name} -> ${r.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${He(t)}\n\t\tExpected: ${He(n)}`,r)}async function Ze(t,n,e){const r=await t;return!(Lt(n)&&!1===await n(r,e))&&!We(r,n)||Ve(r,n,e)}const Ke=globalThis.structuredClone;async function Ge(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r)){const r=await n(o,e,t);i(r)&&e.push(r)}return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){const c=await n(e,o,t);i(c)&&r(c)}return o}const s=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i(c)&&(s?o.set(e,c):o[e]=c)}return o}function Je(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){const c=n(e,r,t);i(c)&&o(c)}return r}const o=Lt(r.set);for(const[e,c]of t){const s=n(c,e,r,t);i(s)&&(o?r.set(e,s):r[e]=s)}return r}const Qe=Dt(u,f,wn,An,Je,Ge);function Xe(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){!0===n(e,r,t)&&o(e)}}else{const e=Lt(r.set);for(const[o,i]of t){!0===n(i,o,r,t)&&(e?r.set(o,i):r[o]=i)}}return r}async function Ye(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))!0===await n(o,e,t)&&e.push(o);return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){!0===await n(e,o,t)&&r(e)}}else{const e=Lt(o.set);for await(const[r,i]of t){!0===await n(i,r,o,t)&&(e?o.set(r,i):o[r]=i)}}return o}const tr=Dt(S,j,vn,Cn,Xe,Ye);function nr(t){return(...n)=>e=>{let r=e;return t(n,(t=>{r=t(r)})),r}}const er=nr(s),rr=nr(I);function or(t){return(...n)=>async e=>{let r=e;return await t(n,(async t=>{r=await t(r)})),r}}const ir=or(a),cr=or(O);const sr=wt(/\./);class ur{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const e=setInterval((()=>{t()}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const ar=w(ur);class fr{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,fr.models.set(t,n)):Ft(this,t)}}function lr(t){return new Promise(t)}class hr{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;jt(t,(n=>{t[n]=new hr(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,e)=>(console.log(t,n,t[n]),t[n]=new hr(e),!0)})}}class gr{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,e=this.totalActive===this.totalFree;n&&e&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const pr=w(gr);class dr{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function yr(t){return new dr(t)}function mr(t){return t?mr[t]:M(mr)}const br=globalThis.navigator?.userAgentData;if(br)jt(br,((t,n)=>{se(t)&&t&&(mr[n]=t)})),s(br.brands,(t=>{mr[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{mr[t]=!0}))}function Ar(t,n,e,r){return t.addEventListener(n,e,r),t}const wr=document.createDocumentFragment.bind(document);function vr(t,n){return t.appendChild(n),n}function Cr(t,n){return y(n)?xn(n,K(n,(n=>t.getAttribute(n)))):(jt(n,((n,e)=>{t.setAttribute(e,n)})),t)}const Ir=/^.[\w_-]+$/,Or=/^[A-Za-z]+$/,Er=/\s/,Fr=document.getElementsByClassName.bind(document),Sr=document.getElementsByTagName.bind(document),jr=document.getElementById.bind(document),xr=document.querySelector.bind(document),Mr=document.querySelectorAll.bind(document);const Tr=document.createElement.bind(document);function Rr(t){const n=sr(t)&&t||`${t}.js`;return(t=>lr((n=>{Ar(t,"load",n,!0),Ar(t,"error",n,!0),vr(xr("head"),t)})))(Cr(Tr("script"),{async:"",src:n}))}function Br(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&Ar(document,"DOMContentLoaded",t),!1)}Br((()=>{const t=jr("AcidLib");Rr(t&&t.getAttribute("data-index")||"/index")}));const Nr=location.protocol,Lr="http:"===Nr?"ws":"wss",$r=location.hostname,kr={hardware:{cores:navigator.hardwareConcurrency},host:{name:$r,protocol:Nr,protocolSocket:Lr}};function Dr(){Ft(kr,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function Ur(){Dr()}Br(Ur),Ar(window,"load",Ur,!0),Ar(window,"resize",Ur,!0),t.hasLocal=void 0,function(n){try{n().removeItem("TESTING"),t.hasLocal=!0}catch(n){t.hasLocal=!1}}((()=>localStorage));class Pr{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=yr(t)}hasLocal=t.hasLocal;setItem(t,n){return this.hasLocal&&this.local.setItem(t,mt(n)?n:He(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return i(n)?n:!i(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}const qr=(t,n)=>`color:${t};background:${n};`,zr={alert:qr("#fff","#f44336"),important:qr("#fff","#E91E63"),notify:qr("#fff","#651FFF"),warning:qr("#000","#FFEA00")};t.Chain=Pt,t.Crate=Pr,t.Intervals=ur,t.Model=fr,t.Store=hr,t.Timers=Ht,t.UniqID=gr,t.VirtualStorage=dr,t.add=function(t,n){return t+n},t.after=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r<=0&&(e=n(...t),r=null),e)},t.append=vr,t.apply=Gt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const e={};return s(t,((t,r)=>{e[n[r]]=t})),e},t.ary=function(t,n){return(...e)=>t(...e.splice(0,n))},t.assert=function(t,n,e){return Se(t)||Se(n)?Ze(t,n,e):!(Lt(n)&&!1===n(t,e))&&!We(t,n)||Ve(t,n,e)},t.assertAsync=Ze,t.assign=Ft,t.before=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r>=1?e=n(...t):r=null,e)},t.bindAll=function(t,n,e){const r=en(t,(t=>Lt(t)?t.bind(n):t));return e?Ft(e,r):r},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Mn," ").trim().split(" ").forEach(((t,e)=>{n+=0===e?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Pt,[t])},t.chunk=function(t,n=1){const e=[];let r=0;return t.forEach(((t,o)=>{o%n||(e.push([]),o&&r++),e[r].push(t)})),e},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(H(t))return ut(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=ut,t.clearIntervals=function(){_t(setTimeout(Wt,0),(t=>{ar.remove(t)}))},t.clearTimers=function(){_t(setTimeout(Wt,0),(t=>{Vt.remove(t)}))},t.clone=function(t){return Ke(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.cnsl=(t,n)=>{const e=mt(t)?t:He(t);if("alert"===n||"warning"===n)return console.trace(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},t.cnslTheme=(t,n,e)=>{zr[t]=qr(n,e)},t.compact=function(t){if(D(t)){const n=M(t),e=n.length,r={};for(let o=0;oze(t)))},t.compactKeys=function(t){const n=[];return jt(t,((t,e)=>{i(t)&&n.push(e)})),n},t.compactMap=Qe,t.compactMapArray=u,t.compactMapAsyncArray=f,t.compactMapAsyncObject=An,t.compactMapObject=wn,t.concurrent=function(t,n,e){const r=t.length,o=[];for(let i=0;i{r=n(t),e[r]||(e[r]=0),e[r]++})),e},t.countKey=function(t,n){let e=0;return s(t,(t=>{t[n]&&e++})),e},t.countWithoutKey=function(t,n){let e=0;return s(t,(t=>{t[n]||e++})),e},t.crate=function(t){return new Pr(t)},t.createFragment=wr,t.curry=function(t,e=t.length){const r=[],o=(...i)=>{if(r.push(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.curryRight=function(t,e=t.length){const r=[],o=(...i)=>{if(r.unshift(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.debounce=function(t,n){function e(...t){e.id!==zt&&Vt.remove(e.id),e.id=Zt((()=>{e.callable(...t),e.id=zt}),n)}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{e.id!==zt&&(Vt.remove(e.id),e.id=zt)},e},t.deduct=function(t){return t-1},t.defProp=gn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,e=t.length)=>C(t,0,e-n),t.each=Ut,t.eachArray=s,t.eachAsyncArray=a,t.eachAsyncObject=St,t.eachObject=jt,t.eachRight=I,t.eachRightAsync=O,t.ensureArray=m,t.ensureBuffer=function(t){return H(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=En,t.eventAdd=Ar,t.eventRemove=function(t,n,e,r){return t.removeEventListener(n,e,r),t},t.every=un,t.everyArg=function(...t){return kt(t[0])?async function(...n){return un(t,(async t=>un(n,(async n=>t(n)))))}:function(...n){return un(t,(t=>un(n,(n=>t(n)))))}},t.everyArray=E,t.everyAsyncArray=F,t.everyAsyncObject=rn,t.everyObject=on,t.falsy=zt,t.filter=tr,t.filterArray=S,t.filterAsyncArray=j,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,e="id"){const r=t.findIndex(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.findIndexCache=at,t.findItem=function(t,n,e="id"){const r=t.find(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let e=t;for(let t=0;tt.concat(m(n))),[]);return e},t.flattenDeep=b,t.flow=er,t.flowAsync=ir,t.flowAsyncRight=cr,t.flowRight=rr,t.forEach=d,t.forEachAsync=async function(t,n){const e=[],r=[];let o=0;t.forEach(((t,n)=>{e[o]=t,r[o]=t,o++}));for(let t=0;t{const r=n(t,e);o(r)}))}else Lt(e.set)?t.forEach(((t,r)=>{const o=n(t,r,e);e.set(r,o)})):t.forEach(((t,r)=>{const o=n(t,r,e);e[r]=o}));return e},t.forOf=Tt,t.forOfAsync=Nt,t.forOfCompactMap=Je,t.forOfCompactMapAsync=Ge,t.forOfEvery=cn,t.forOfEveryAsync=sn,t.forOfFilter=Xe,t.forOfFilterAsync=Ye,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=Dt,t.get=L,t.getByClass=Fr,t.getById=jr,t.getByTag=Sr,t.getEntries=function(t){if(i(t))return bn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return pt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let e=0;return E(t,((t,r)=>(e=r,n>=t&&(e=r+1,!0)))),e},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Qn,t.groupBy=function(t,n){const e={};return s(t,(t=>{const r=n(t);e[r]||(e[r]=[]),e[r].push(t)})),e},t.has=function t(n,e,r){if(Xn(n)||Xn(e))return!1;if(mt(n))return mt(e)?n.includes(e,r):On(e)?e.test(n):Lt(e)?Boolean(e(n)):un(e,(e=>Boolean(t(n,e))));if(y(n)){if(mt(e))return n.includes(e,r);if(On(e))return un(n,(t=>t.test(e)));if(y(e))return un(e,(e=>Boolean(t(n,e))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}})))},t.hasDot=sr,t.hasKeys=k,t.hasLength=r,t.hasProp=pn,t.hasValue=i,t.htmlEntities=_n,t.ifInvoke=function(t,...n){if(Lt(t))return t(...n)},t.ifNotAssign=(t,n,e)=>(n&&!i(t[n])&&(t[n]=e),t),t.ifValue=function(t,n,e,r){if(i(t)){if(Lt(n))return e?Gt(n,e,r):n(...r);if(D(n))return n[e]=t,n}},t.importjs=Rr,t.inAsync=async function(t,n){const e=t.length;for(let r=0;rUt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const e={};return s(t,(t=>{e[t[n]]=t})),e},t.info=kr,t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,e){return t.slice(0,n)+e+t.slice(n,t.length)},t.intersection=function(t,...n){return u(t,(t=>{if(E(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return ar.set(t,n)},t.intervals=ar,t.invert=function(t,n={}){if(t)return jt(t,((t,e)=>{n[t]=e})),n},t.invoke=function(t,n,e){return K(t,((t,r)=>t[n](e,r)))},t.invokeAsync=function(t,n,e){return G(t,(async(t,r)=>t[n](e,r)))},t.isAgent=mr,t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=y,t.isArrayBuffer=ae,t.isArrayBufferCall=ue,t.isArrayLike=function(t,n){if(Xn(t)||Lt(t))return!1;if(y(t)||re(t))return!0;const e=t.length;if(!Xn(e)||!yt(e)||e<0)return!1;if(n){const n=M(t);return!!n&&un(n,((t,n)=>n>=0&&yt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=$t,t.isBigInt=ie,t.isBigIntCall=oe,t.isBoolean=se,t.isBooleanCall=ce,t.isBuffer=H,t.isBufferCall=_,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return fe.test(n)}return!1},t.isConstructor=U,t.isConstructorFactory=P,t.isConstructorNameFactory=z,t.isDate=he,t.isDateCall=le,t.isDeno=Pe,t.isDocumentReady=Br,t.isDom=function(t){return t&&9!==t.nodeType},t.isEmpty=function(t){return mt(t)||y(t)?!r(t):D(t)?!jn(t):!i(t)},t.isEnter=function(t){return 13===t.keyCode},t.isEqual=V,t.isF32=de,t.isF32Call=pe,t.isF64=me,t.isF64Call=ye,t.isFalse=ge,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=It,t.isFileJSON=Ot,t.isFloat=Ae,t.isFunction=Lt,t.isGenerator=Bt,t.isGeneratorCall=Rt,t.isHTMLCollection=function(t){return!!i(t)&&"[object HTMLCollection]"===t.toString()},t.isI16=ve,t.isI16Call=we,t.isI32=Ie,t.isI32Call=Ce,t.isI8=Ee,t.isI8Call=Oe,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Se,t.isMap=te,t.isMapCall=Yn,t.isMatchArray=function(t,n){return t.length===n.length&&E(t,((t,e)=>V(n[e],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const e=M(t),r=M(n);return e.length===r.length&&E(e,(e=>t[e]===n[e]))},t.isNegative=h,t.isNodeList=function(t){return!!i(t)&&"[object NodeList]"===t.toString()},t.isNodejs=qe,t.isNotArray=function(t){return!y(t)},t.isNotNumber=function(t){return!yt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=yt,t.isNumberCall=dt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,e){return t>n&&te},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=D,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Fe,t.isRegex=On,t.isRegexCall=In,t.isRelated=function(t,n){return!Xn(t)&&!Xn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xe,t.isSame=dn,t.isSameType=function(t,n){const e=Xt(t),r=Xt(n);return e===r&&e.name===r.name},t.isSet=Mt,t.isSetCall=xt,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=ze,t.isTypeFactory=W,t.isTypedArray=re,t.isU16=Te,t.isU16Call=Me,t.isU32=Be,t.isU32Call=Re,t.isU8=Le,t.isU8C=ke,t.isU8CCall=$e,t.isU8Call=Ne,t.isUndefined=e,t.isWeakMap=Ue,t.isWeakMapCall=De,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return _e.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Tn," ").trim().toLowerCase().replace(Rn,"-")},t.keys=M,t.largest=function(t){return Z(...t)},t.last=function(t,n){const e=t.length;return n?t.slice(e-n,e):t[e-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=en,t.mapArray=K,t.mapAsyncArray=G,t.mapAsyncObject=Jt,t.mapObject=Qt,t.mapRightArray=function(t,n,e=[],r){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)e[o]=n(t[c],c,t,i,r),o++;return e},t.mapWhile=function(t,n,e=[],r){const o=t.length;for(let i=0;i{Ut(e,((e,r)=>{if(n[r]&&(D(e)||y(e)||e.forEach))return t(n[r],e);n[r]=e}))})),n},t.model=function(t,n){return i(n)?w(fr,[t,n]):L(t,fr.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Xn,t.nodeAttribute=Cr,t.noop=Wt,t.notEqual=We,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Et,t.objectEntries=bn,t.objectSize=jn,t.omit=function(t,n){if(t){if(y(n)){const e=Sn(n);return vn(t,((t,n)=>!e.test(n)))}if(On(n))return vn(t,((t,e)=>!n.test(e)));if(mt(n))return vn(t,((t,e)=>e!==n));if(yt(n)){const e=n.toString();return vn(t,((t,n)=>n!==e))}return Lt(n)?vn(t,((t,e)=>!n(t,e))):void 0}},t.once=t=>{let n;return(...e)=>(i(n)||(n=t(...e)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>en(t,(t=>t(...n)))},t.overEvery=function(t){return n=>un(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const e=[];return[u(t,((t,r)=>{if(n(t,r))return t;e.push(t)})),e]},t.pick=(t,n,e={})=>{if(t)return s(n,(n=>{e[n]=t[n]})),e},t.pluck=function(t,n){return K(t,(t=>bt(t,n)))},t.pluckObject=bt,t.promise=lr,t.propertyMatch=(t,n,e=M(t))=>E(e,(e=>V(t[e],n[e]))),t.querySelector=xr,t.querySelectorAll=Mr,t.randomFloat=function(t,n=0){return yn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,e=1,r=[]){return h(e)?r:tt(...n.map((t=>e[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let e=t.length;for(let r=0;re)return rt(t);if(1===n)return[t[tt(e-1,0)]];const r=[],o={};let i,c=0;for(;cht(t,r,n,e)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",e){return t.sort(((t,r)=>At(t,r,n,e)))},t.sortCollectionAscending=pt,t.sortCollectionAscendingFilter=gt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(J)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=At,t.sortUnique=ct,t.stringify=He,t.stubArray=()=>[],t.stubFalse=()=>zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=J,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const e=t.length;return t.slice(e-n,e)},t.themes=zr,t.throttle=function(t,n){function e(...t){e.id?e.shouldThrottle=qt:(e.callable(...t),e.id=Zt((()=>{e.shouldThrottle&&e.callable(...t),e.id=zt}),n))}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{Vt.remove(e.id),e.id=zt},e},t.timer=Zt,t.timers=Vt,t.times=_t,t.timesAsync=async function(t,n){for(let e=0;en?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=e-n;for(;c=0&&(i=r[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,e):t},t.truncateRight=function(t,n){const e=t.length;return e>n?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=n;for(;c0&&(i=r[c]," "!==i);c++);return t.substring(c,e).trim()})(t,n,e):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.unZipObject=t=>{const n=[],e=[];return jt(t,((t,r)=>{n.push(r),e.push(t)})),[n,e]},t.union=function(...t){return st(b(t))},t.uniqID=pr,t.unique=st,t.untilFalseArray=function(t,n){const e=t.length;for(let r=0;rGn(t)))},t.upperFirstLetter=Kn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(Zn,(t=>Jn(t)))},t.virtualStorage=yr,t.whileCompactMap=function(t,n,e=[],r){let o=0;for(;o!e.has(t)))},t.words=function(t){return t.match(Vn)||[]},t.wrap=function(t,n){return(...e)=>n(t,...e)},t.xor=function(...t){const n=w(Map),e=[];return 2===t.length?v(t[0],t[1]):(s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&e.push(t.child)})),e)},t.zip=function(...t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.zipObject=xn})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function e(t){return void 0===t}function r(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!e(t)&&!o(t)}function c(t){return t}function s(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const a=n.call(r,t,c,e,s,u,o);i(a)&&e.push(a)})):s(t,((t,c,s,u)=>{const a=n(t,c,e,s,u,r,o);i(a)&&e.push(a)})),e}async function a(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const c=await n(t,r,e,o);i(c)&&e.push(c)})),e}const{sign:l}=Math;function h(t){return-1===l(t)}function g(t,n,e,r){let o=t;for(;on;)r.push(o),o-=e;return r}function d(t,n){return t.forEach(n),t}const y=Array.isArray;function m(t){return y(t)&&t||i(t)&&[t]||[]}function b(t){return t.flat(1/0)}const A=Reflect.construct;function w(t,n=[],e){const r=y(n)?n:[n];return e?A(t,r,e):A(t,r)}function v(...t){const n=w(Map),e=[];return s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&0===t.parentIndex&&e.push(t.child)})),e}function C(t,n=1,e=t.length){return t.splice(n,e)}function I(t,n,e){if(!t)return;const r=t.length;for(let o=r-1;o>=0;o--)n(t[o],o,t,r,e);return t}async function O(t,n){if(!t)return;const e=t.length;for(let r=e-1;r>=0;r--)await n(t[r],r,t,e);return t}function E(t,n,e){if(!t)return;const r=t.length;for(let o=0;o{!0===n(t,o,e,i,c,r)&&e.push(t)})),e}async function j(t,n,e=[],r){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,e,i,c,r)&&e.push(t)})),e}const x=Object.keys;function M(t){if(t)return x(t)}const T=/\.|\[/,R=/]/g,B="";function N(t){return t.replace(R,B).split(T)}function L(t,n){if(!n)return!1;let e=n;return E(y(t)?t:N(t),(t=>(e=e[t],i(e)))),e}const $=Object.hasOwn;function k(t,...n){if(t)return E(n,(n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}}))}const D=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function U(t,n){return t?.constructor===n||!1}function P(t){return n=>U(n,t)}function q(t){return t?.constructor?.name}function z(t){return n=>q(n)===t||!1}function W(t){return function(n,...e){return e?t(n)&&E(e,t):t(n)}}const _=z("Buffer"),H=W(_),V=(t,n)=>{if(t===n)return!0;if(H(t))return t.equals(n);if(t.toString()===n.toString())if(D(t)){const e=M(t);if(k(n,e))return E(e,(e=>V(t[e],n[e])))}else if(y(t)&&t.length===n.length)return E(t,((t,e)=>V(t,n[e])));return!1};const Z=Math.max;function K(t,n,e=[],r,o){return i(r)?s(t,((t,i,c,s)=>{e[i]=n.call(r,t,i,e,c,s,o)})):s(t,((t,r,i,c)=>{e[r]=n(t,r,e,i,c,o)})),e}async function G(t,n){const e=[];return await a(t,(async(t,r,o)=>{e[r]=await n(t,r,o)})),e}function J(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function et(t,n,e){if(i(t))return nt(t,n,e)}function rt(t,n=t.length){if(t.length<=1)return et(t);const e=et(t);let r,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",e){return t.sort(((t,r)=>ft(t,r,n,e)))}function ht(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):o.localeCompare(i)}function gt(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i?o?oi?1:0:-1:1}function pt(t,n="id",e){return t.sort(((t,r)=>gt(t,r,n,e)))}const dt=z("Number"),yt=W(dt);const mt=P(String);function bt(t,n){if(t)return mt(n)?t[n]:K(n,(n=>t[n]))}function At(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),It=wt(/\.js$/),Ot=wt(/\.json$/);const Et=Object.assign;function Ft(t,...n){if(i(t))return Et(t,...n)}const St=async(t,n,e,r)=>{if(!t)return;const o=M(t);return i(e)?await a(o,((i,c,s,u)=>n.call(e,t[i],i,t,u,o,r))):await a(o,((e,i,c,s)=>n(t[e],e,t,s,o,r))),t};function jt(t,n,e,r){if(!t)return;const o=M(t);return i(e)?s(o,((o,i,c,s)=>{n.call(e,t[o],o,t,s,c,r)})):s(o,((e,o,i,c)=>{n(t[e],e,t,c,i,r)})),t}const xt=z("Set"),Mt=W(xt);function Tt(t,n){if(Mt(t)){for(const e of t)n(e,t);return t}for(const[e,r]of t)n(r,e,t);return t}const Rt=z("GeneratorFunction"),Bt=W(Rt);async function Nt(t,n,e){if(Mt(t)){for(const e of t)await n(e,t);return t}if(Bt(t))for await(const r of t(...e))await n(r,t);for(const[e,r]of t)await n(r,e,t);return t}const Lt=t=>!!i(t)&&t instanceof Function,$t=z("AsyncFunction"),kt=W($t);function Dt(t,n,e,r,o,c){return(s,u,a,f,l)=>{let h;const g=kt(u);if(i(s)&&u)return h=y(s)?g?n:t:D(s)||Lt(s)?g?r:e:o?g?c:o:Bt(s)?c:g?r:e,h(s,u,a,f,l)}}const Ut=Dt(s,a,jt,St,Tt,Nt);class Pt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Ut(t,((t,e)=>{n[e]=function(...e){return this.value=t.call(n,n.value,...e),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,zt=!1,Wt=()=>{};function _t(t,n){for(let e=0;e{t(),e.remove(r)}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Vt=w(Ht);function Zt(t,n){return Vt.set(t,n)}const Kt=Reflect.apply;function Gt(t,n,e){if(Lt(t))return Kt(t,n,e)}async function Jt(t,n,e={}){if(t)return await St(t,(async(t,r,o,i,c)=>{e[r]=await n(t,r,e,o,i,c)})),e}function Qt(t,n,e={},r,o){if(t)return i(r)?jt(t,((t,i,c,s,u)=>{e[i]=n.call(r,t,i,e,c,s,u,o)})):jt(t,((t,r,i,c,s)=>{e[r]=n(t,r,e,i,c,s,o)})),e}function Xt(t){return t?.constructor}function Yt(t,n=[]){const e=Xt(t);return e===Function&&"function"===e.name?function(){}:w(e,n)}function tn(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){o(n(e,r,t))}return r}const o=Lt(r.set);for(const[e,i]of t){const c=n(i,e,r,t);o?r.set(e,c):r[e]=c}return r}async function nn(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))e.push(await n(o,e,t));return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){r(await n(e,o,t))}return o}const i=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i?o.set(e,c):o[e]=c}return o}const en=Dt(K,G,Qt,Jt,tn,nn);async function rn(t,n){if(!t)return;return F(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function on(t,n){if(!t)return;return E(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function cn(t,n=c){if(y(t)||Mt(t))for(const e of t){if(!1===n(e,t))return!1}else for(const[e,r]of t){if(!1===n(r,e,t))return!1}return!0}async function sn(t,n=c,e){if(Bt(t))for await(const r of t(...e)){if(!1===await n(r,t))return!1}else if(y(t)||Mt(t))for(const e of t){if(!1===await n(e,t))return!1}else for(const[e,r]of t){if(!1===await n(r,e,t))return!1}return!0}const un=Dt(E,F,on,rn,cn,sn);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,gn=Object.defineProperty,pn=fn(Object.hasOwnProperty),dn=Object.is;const{random:yn}=Math;const{sign:mn}=Math;const bn=Object.entries;async function An(t,n=c,e={}){return await St(t,(async(t,r,o,c,s)=>{const u=await n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function wn(t,n=c,e={}){return jt(t,((t,r,o,c,s)=>{const u=n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function vn(t,n,e={}){return jt(t,((t,r,o,i,c)=>{!0===n(t,r,e,o,i,c)&&(e[r]=t)})),e}async function Cn(t,n,e={}){return await St(t,(async(t,r,o,i,c)=>{!0===await n(t,r,e,o,i,c)&&(e[r]=t)})),e}const In=z("RegExp"),On=W(In),En=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(En,"\\$&")}function Sn(t,n){return n?Sn(K(t,Fn)):RegExp(t.join("|"))}function jn(t){if(t)return M(t).length}const xn=(t,n)=>{const e={};return s(t,((t,r)=>{e[t]=n[r]})),e},Mn=/[ _-]+/g;const Tn=/[ _-]+/g,Rn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Ln=/[ _-]+/g;const $n=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Dn=/%(?![\da-f]{2})/gi,Un=/&/g,Pn=//g,zn=/"/g;function Wn(t){return decodeURIComponent(t.replace(Dn,(()=>"%25")))}function _n(t){return t.replace(Un,"&").replace(Pn,"<").replace(qn,">").replace(zn,""")}const Hn=/\S+/g,Vn=/\w+/g;const Zn=/\w+/g;function Kn(t){return t[0].toUpperCase()}function Gn(t){return Kn(t)+kn(t)}function Jn(t){return Kn(t)+kn(t).toLowerCase()}function Qn(t){return Xt(t)?.name}function Xn(t){return!i(t)}const Yn=z("Map"),te=W(Yn),ne=/Array/,ee="Array";function re(t){if(t){const n=Qn(t);if(ne.test(n)&&n!==ee)return!0}return!1}const oe=z("BigInt"),ie=W(oe),ce=z("Boolean"),se=W(ce),ue=z("ArrayBuffer"),ae=W(ue);const fe=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const le=z("Date"),he=W(le);function ge(t){return!1===t}const pe=z("Float32Array"),de=W(pe),ye=z("Float64Array"),me=W(ye),{isInteger:be}=Number,Ae=be,we=z("Int16Array"),ve=W(we),Ce=z("Int32Array"),Ie=W(Ce),Oe=z("Int8Array"),Ee=W(Oe);function Fe(t){return!!t&&t instanceof Promise}function Se(t){return!!t&&(Fe(t)||kt(t)||Bt(t))}const{isSafeInteger:je}=Number,xe=je;const Me=z("Uint16Array"),Te=W(Me),Re=z("Uint32Array"),Be=W(Re),Ne=z("Uint8Array"),Le=W(Ne),$e=z("Uint8ClampedArray"),ke=W($e),De=z("WeakMap"),Ue=W(De),Pe=void 0!==globalThis.Deno,qe=void 0!==globalThis.process&&process.versions&&process.versions.node;function ze(t,n=!0){return Boolean(t)&&n}function We(t,n){return ge(V(t,n))}const _e=JSON;const He=_e.stringify;function Ve(t,n,e){const r=globalThis.options||e;let o;return Lt(r)?o=`${r.name} : ${r.constructor.name}`:r&&(o=`${r.title||r.method.name} -> ${r.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${He(t)}\n\t\tExpected: ${He(n)}`,r)}async function Ze(t,n,e){const r=await t;return!(Lt(n)&&!1===await n(r,e))&&!We(r,n)||Ve(r,n,e)}const Ke=globalThis.structuredClone;async function Ge(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r)){const r=await n(o,e,t);i(r)&&e.push(r)}return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){const c=await n(e,o,t);i(c)&&r(c)}return o}const s=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i(c)&&(s?o.set(e,c):o[e]=c)}return o}function Je(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){const c=n(e,r,t);i(c)&&o(c)}return r}const o=Lt(r.set);for(const[e,c]of t){const s=n(c,e,r,t);i(s)&&(o?r.set(e,s):r[e]=s)}return r}const Qe=Dt(u,f,wn,An,Je,Ge);function Xe(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){!0===n(e,r,t)&&o(e)}}else{const e=Lt(r.set);for(const[o,i]of t){!0===n(i,o,r,t)&&(e?r.set(o,i):r[o]=i)}}return r}async function Ye(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))!0===await n(o,e,t)&&e.push(o);return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){!0===await n(e,o,t)&&r(e)}}else{const e=Lt(o.set);for await(const[r,i]of t){!0===await n(i,r,o,t)&&(e?o.set(r,i):o[r]=i)}}return o}const tr=Dt(S,j,vn,Cn,Xe,Ye);function nr(t){return(...n)=>e=>{let r=e;return t(n,(t=>{r=t(r)})),r}}const er=nr(s),rr=nr(I);function or(t){return(...n)=>async e=>{let r=e;return await t(n,(async t=>{r=await t(r)})),r}}const ir=or(a),cr=or(O);const sr=wt(/\./);class ur{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const e=setInterval((()=>{t()}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const ar=w(ur);class fr{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,fr.models.set(t,n)):Ft(this,t)}}function lr(t){return new Promise(t)}class hr{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;jt(t,(n=>{t[n]=new hr(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,e)=>(console.log(t,n,t[n]),t[n]=new hr(e),!0)})}}class gr{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,e=this.totalActive===this.totalFree;n&&e&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const pr=w(gr);class dr{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function yr(t){return new dr(t)}function mr(t){return t?mr[t]:M(mr)}const br=globalThis.navigator?.userAgentData;if(br)jt(br,((t,n)=>{se(t)&&t&&(mr[n]=t)})),s(br.brands,(t=>{mr[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{mr[t]=!0}))}function Ar(t,n,e,r){return t.addEventListener(n,e,r),t}const wr=document.createDocumentFragment.bind(document);function vr(t,n){return t.appendChild(n),n}function Cr(t,n){return y(n)?xn(n,K(n,(n=>t.getAttribute(n)))):(jt(n,((n,e)=>{t.setAttribute(e,n)})),t)}const Ir=/^.[\w_-]+$/,Or=/^[A-Za-z]+$/,Er=/\s/,Fr=document.getElementsByClassName.bind(document),Sr=document.getElementsByTagName.bind(document),jr=document.getElementById.bind(document),xr=document.querySelector.bind(document),Mr=document.querySelectorAll.bind(document);const Tr=document.createElement.bind(document);function Rr(t){const n=sr(t)&&t||`${t}.js`;return(t=>lr((n=>{Ar(t,"load",n,!0),Ar(t,"error",n,!0),vr(xr("head"),t)})))(Cr(Tr("script"),{async:"",src:n}))}function Br(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&Ar(document,"DOMContentLoaded",t),!1)}Br((()=>{const t=jr("AcidLib");Rr(t&&t.getAttribute("data-index")||"/index")}));const Nr=location.protocol,Lr="http:"===Nr?"ws":"wss",$r=location.hostname,kr={hardware:{cores:navigator.hardwareConcurrency},host:{name:$r,protocol:Nr,protocolSocket:Lr}};function Dr(){Ft(kr,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function Ur(){Dr()}Br(Ur),Ar(window,"load",Ur,!0),Ar(window,"resize",Ur,!0),t.hasLocal=void 0,function(n){try{n().removeItem("TESTING"),t.hasLocal=!0}catch(n){t.hasLocal=!1}}((()=>localStorage));class Pr{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=yr(t)}hasLocal=t.hasLocal;setItem(t,n){return this.hasLocal&&this.local.setItem(t,mt(n)?n:He(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return i(n)?n:!i(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}const qr=(t,n)=>`color:${t};background:${n};`,zr={alert:qr("#fff","#f44336"),important:qr("#fff","#E91E63"),notify:qr("#fff","#651FFF"),warning:qr("#000","#FFEA00")};t.Chain=Pt,t.Crate=Pr,t.Intervals=ur,t.Model=fr,t.Store=hr,t.Timers=Ht,t.UniqID=gr,t.VirtualStorage=dr,t.add=function(t,n){return t+n},t.after=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r<=0&&(e=n(...t),r=null),e)},t.append=vr,t.apply=Gt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const e={};return s(t,((t,r)=>{e[n[r]]=t})),e},t.ary=function(t,n){return(...e)=>t(...e.splice(0,n))},t.assert=function(t,n,e){return Se(t)||Se(n)?Ze(t,n,e):!(Lt(n)&&!1===n(t,e))&&!We(t,n)||Ve(t,n,e)},t.assertAsync=Ze,t.assign=Ft,t.before=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r>=1?e=n(...t):r=null,e)},t.bindAll=function(t,n,e){const r=en(t,(t=>Lt(t)?t.bind(n):t));return e?Ft(e,r):r},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Mn," ").trim().split(" ").forEach(((t,e)=>{n+=0===e?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Pt,[t])},t.chunk=function(t,n=1){const e=[];let r=0;return t.forEach(((t,o)=>{o%n||(e.push([]),o&&r++),e[r].push(t)})),e},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(H(t))return ut(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=ut,t.clearIntervals=function(){_t(setTimeout(Wt,0),(t=>{ar.remove(t)}))},t.clearTimers=function(){_t(setTimeout(Wt,0),(t=>{Vt.remove(t)}))},t.clone=function(t){return Ke(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.cnsl=(t,n)=>{const e=mt(t)?t:He(t);if("alert"===n||"warning"===n)return console.trace(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},t.cnslTheme=(t,n,e)=>{zr[t]=qr(n,e)},t.compact=function(t){if(D(t)){const n=M(t),e=n.length,r={};for(let o=0;oze(t)))},t.compactKeys=function(t){const n=[];return jt(t,((t,e)=>{i(t)&&n.push(e)})),n},t.compactMap=Qe,t.compactMapArray=u,t.compactMapAsyncArray=f,t.compactMapAsyncObject=An,t.compactMapObject=wn,t.concurrent=function(t,n,e){const r=t.length,o=[];for(let i=0;i{r=n(t),e[r]||(e[r]=0),e[r]++})),e},t.countKey=function(t,n){let e=0;return s(t,(t=>{t[n]&&e++})),e},t.countWithoutKey=function(t,n){let e=0;return s(t,(t=>{t[n]||e++})),e},t.crate=function(t){return new Pr(t)},t.createFragment=wr,t.curry=function(t,e=t.length){const r=[],o=(...i)=>{if(r.push(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.curryRight=function(t,e=t.length){const r=[],o=(...i)=>{if(r.unshift(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.debounce=function(t,n){function e(...t){e.id!==zt&&Vt.remove(e.id),e.id=Zt((()=>{e.callable(...t),e.id=zt}),n)}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{e.id!==zt&&(Vt.remove(e.id),e.id=zt)},e},t.deduct=function(t){return t-1},t.defProp=gn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,e=t.length)=>C(t,0,e-n),t.each=Ut,t.eachArray=s,t.eachAsyncArray=a,t.eachAsyncObject=St,t.eachObject=jt,t.eachRight=I,t.eachRightAsync=O,t.ensureArray=m,t.ensureBuffer=function(t){return H(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=En,t.eventAdd=Ar,t.eventRemove=function(t,n,e,r){return t.removeEventListener(n,e,r),t},t.every=un,t.everyArg=function(...t){return kt(t[0])?async function(...n){return un(t,(async t=>un(n,(async n=>t(n)))))}:function(...n){return un(t,(t=>un(n,(n=>t(n)))))}},t.everyArray=E,t.everyAsyncArray=F,t.everyAsyncObject=rn,t.everyObject=on,t.falsy=zt,t.filter=tr,t.filterArray=S,t.filterAsyncArray=j,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,e="id"){const r=t.findIndex(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.findIndexCache=at,t.findItem=function(t,n,e="id"){const r=t.find(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let e=t;for(let t=0;tt.concat(m(n))),[]);return e},t.flattenDeep=b,t.flow=er,t.flowAsync=ir,t.flowAsyncRight=cr,t.flowRight=rr,t.forEach=d,t.forEachAsync=async function(t,n){const e=[],r=[];let o=0;t.forEach(((t,n)=>{e[o]=t,r[o]=t,o++}));for(let t=0;t{const r=n(t,e);o(r)}))}else Lt(e.set)?t.forEach(((t,r)=>{const o=n(t,r,e);e.set(r,o)})):t.forEach(((t,r)=>{const o=n(t,r,e);e[r]=o}));return e},t.forOf=Tt,t.forOfAsync=Nt,t.forOfCompactMap=Je,t.forOfCompactMapAsync=Ge,t.forOfEvery=cn,t.forOfEveryAsync=sn,t.forOfFilter=Xe,t.forOfFilterAsync=Ye,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=Dt,t.get=L,t.getByClass=Fr,t.getById=jr,t.getByTag=Sr,t.getEntries=function(t){if(i(t))return bn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return pt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let e=0;return E(t,((t,r)=>(e=r,n>=t&&(e=r+1,!0)))),e},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Qn,t.groupBy=function(t,n){const e={};return s(t,(t=>{const r=n(t);e[r]||(e[r]=[]),e[r].push(t)})),e},t.has=function t(n,e,r){if(Xn(n)||Xn(e))return!1;if(mt(n))return mt(e)?n.includes(e,r):On(e)?e.test(n):Lt(e)?Boolean(e(n)):un(e,(e=>Boolean(t(n,e))));if(y(n)){if(mt(e))return n.includes(e,r);if(On(e))return un(n,(t=>t.test(e)));if(y(e))return un(e,(e=>Boolean(t(n,e))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}})))},t.hasDot=sr,t.hasKeys=k,t.hasLength=r,t.hasProp=pn,t.hasValue=i,t.htmlEntities=_n,t.ifInvoke=function(t,...n){if(Lt(t))return t(...n)},t.ifNotAssign=(t,n,e)=>(n&&!i(t[n])&&(t[n]=e),t),t.ifValue=function(t,n,e,r){if(i(t)){if(Lt(n))return e?Gt(n,e,r):n(...r);if(D(n))return n[e]=t,n}},t.importjs=Rr,t.inAsync=async function(t,n){const e=t.length;for(let r=0;rUt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const e={};return s(t,(t=>{e[t[n]]=t})),e},t.info=kr,t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,e){return t.slice(0,n)+e+t.slice(n,t.length)},t.intersection=function(t,...n){return u(t,(t=>{if(E(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return ar.set(t,n)},t.intervals=ar,t.invert=function(t,n={}){if(t)return jt(t,((t,e)=>{n[t]=e})),n},t.invokeArray=function(t,n,e){if(!t)return;const r=t.length;if(i(e))for(let o=0;ot[n].call(r,e):(t,r)=>t[n](e))},t.invokeCollectionAsync=function(t,n,e,r){return G(t,r?t=>t[n].call(r,e):async t=>t[n](e))},t.isAgent=mr,t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=y,t.isArrayBuffer=ae,t.isArrayBufferCall=ue,t.isArrayLike=function(t,n){if(Xn(t)||Lt(t))return!1;if(y(t)||re(t))return!0;const e=t.length;if(!Xn(e)||!yt(e)||e<0)return!1;if(n){const n=M(t);return!!n&&un(n,((t,n)=>n>=0&&yt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=$t,t.isBigInt=ie,t.isBigIntCall=oe,t.isBoolean=se,t.isBooleanCall=ce,t.isBuffer=H,t.isBufferCall=_,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return fe.test(n)}return!1},t.isConstructor=U,t.isConstructorFactory=P,t.isConstructorNameFactory=z,t.isDate=he,t.isDateCall=le,t.isDeno=Pe,t.isDocumentReady=Br,t.isDom=function(t){return t&&9!==t.nodeType},t.isEmpty=function(t){return mt(t)||y(t)?!r(t):D(t)?!jn(t):!i(t)},t.isEnter=function(t){return 13===t.keyCode},t.isEqual=V,t.isF32=de,t.isF32Call=pe,t.isF64=me,t.isF64Call=ye,t.isFalse=ge,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=It,t.isFileJSON=Ot,t.isFloat=Ae,t.isFunction=Lt,t.isGenerator=Bt,t.isGeneratorCall=Rt,t.isHTMLCollection=function(t){return!!i(t)&&"[object HTMLCollection]"===t.toString()},t.isI16=ve,t.isI16Call=we,t.isI32=Ie,t.isI32Call=Ce,t.isI8=Ee,t.isI8Call=Oe,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Se,t.isMap=te,t.isMapCall=Yn,t.isMatchArray=function(t,n){return t.length===n.length&&E(t,((t,e)=>V(n[e],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const e=M(t),r=M(n);return e.length===r.length&&E(e,(e=>t[e]===n[e]))},t.isNegative=h,t.isNodeList=function(t){return!!i(t)&&"[object NodeList]"===t.toString()},t.isNodejs=qe,t.isNotArray=function(t){return!y(t)},t.isNotNumber=function(t){return!yt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=yt,t.isNumberCall=dt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,e){return t>n&&te},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=D,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Fe,t.isRegex=On,t.isRegexCall=In,t.isRelated=function(t,n){return!Xn(t)&&!Xn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xe,t.isSame=dn,t.isSameType=function(t,n){const e=Xt(t),r=Xt(n);return e===r&&e.name===r.name},t.isSet=Mt,t.isSetCall=xt,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=ze,t.isTypeFactory=W,t.isTypedArray=re,t.isU16=Te,t.isU16Call=Me,t.isU32=Be,t.isU32Call=Re,t.isU8=Le,t.isU8C=ke,t.isU8CCall=$e,t.isU8Call=Ne,t.isUndefined=e,t.isWeakMap=Ue,t.isWeakMapCall=De,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return _e.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Tn," ").trim().toLowerCase().replace(Rn,"-")},t.keys=M,t.largest=function(t){return Z(...t)},t.last=function(t,n){const e=t.length;return n?t.slice(e-n,e):t[e-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=en,t.mapArray=K,t.mapAsyncArray=G,t.mapAsyncObject=Jt,t.mapObject=Qt,t.mapRightArray=function(t,n,e=[],r){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)e[o]=n(t[c],c,t,i,r),o++;return e},t.mapWhile=function(t,n,e=[],r){const o=t.length;for(let i=0;i{Ut(e,((e,r)=>{if(n[r]&&(D(e)||y(e)||e.forEach))return t(n[r],e);n[r]=e}))})),n},t.model=function(t,n){return i(n)?w(fr,[t,n]):L(t,fr.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Xn,t.nodeAttribute=Cr,t.noop=Wt,t.notEqual=We,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Et,t.objectEntries=bn,t.objectSize=jn,t.omit=function(t,n){if(t){if(y(n)){const e=Sn(n);return vn(t,((t,n)=>!e.test(n)))}if(On(n))return vn(t,((t,e)=>!n.test(e)));if(mt(n))return vn(t,((t,e)=>e!==n));if(yt(n)){const e=n.toString();return vn(t,((t,n)=>n!==e))}return Lt(n)?vn(t,((t,e)=>!n(t,e))):void 0}},t.once=t=>{let n;return(...e)=>(i(n)||(n=t(...e)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>en(t,(t=>t(...n)))},t.overEvery=function(t){return n=>un(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const e=[];return[u(t,((t,r)=>{if(n(t,r))return t;e.push(t)})),e]},t.pick=(t,n,e={})=>{if(t)return s(n,(n=>{e[n]=t[n]})),e},t.pluck=function(t,n){return K(t,(t=>bt(t,n)))},t.pluckObject=bt,t.promise=lr,t.propertyMatch=(t,n,e=M(t))=>E(e,(e=>V(t[e],n[e]))),t.querySelector=xr,t.querySelectorAll=Mr,t.randomFloat=function(t,n=0){return yn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,e=1,r=[]){return h(e)?r:tt(...n.map((t=>e[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let e=t.length;for(let r=0;re)return rt(t);if(1===n)return[t[tt(e-1,0)]];const r=[],o={};let i,c=0;for(;cht(t,r,n,e)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",e){return t.sort(((t,r)=>At(t,r,n,e)))},t.sortCollectionAscending=pt,t.sortCollectionAscendingFilter=gt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(J)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=At,t.sortUnique=ct,t.stringify=He,t.stubArray=()=>[],t.stubFalse=()=>zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=J,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const e=t.length;return t.slice(e-n,e)},t.themes=zr,t.throttle=function(t,n){function e(...t){e.id?e.shouldThrottle=qt:(e.callable(...t),e.id=Zt((()=>{e.shouldThrottle&&e.callable(...t),e.id=zt}),n))}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{Vt.remove(e.id),e.id=zt},e},t.timer=Zt,t.timers=Vt,t.times=_t,t.timesAsync=async function(t,n){for(let e=0;en?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=e-n;for(;c=0&&(i=r[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,e):t},t.truncateRight=function(t,n){const e=t.length;return e>n?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=n;for(;c0&&(i=r[c]," "!==i);c++);return t.substring(c,e).trim()})(t,n,e):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.unZipObject=t=>{const n=[],e=[];return jt(t,((t,r)=>{n.push(r),e.push(t)})),[n,e]},t.union=function(...t){return st(b(t))},t.uniqID=pr,t.unique=st,t.untilFalseArray=function(t,n){const e=t.length;for(let r=0;rGn(t)))},t.upperFirstLetter=Kn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(Zn,(t=>Jn(t)))},t.virtualStorage=yr,t.whileCompactMap=function(t,n,e=[],r){let o=0;for(;o!e.has(t)))},t.words=function(t){return t.match(Vn)||[]},t.wrap=function(t,n){return(...e)=>n(t,...e)},t.xor=function(...t){const n=w(Map),e=[];return 2===t.length?v(t[0],t[1]):(s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&e.push(t.child)})),e)},t.zip=function(...t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.zipObject=xn})); //# sourceMappingURL=browser.js.map diff --git a/github/index.js b/github/index.js index 05f8b035..10ae692b 100644 --- a/github/index.js +++ b/github/index.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("fs/promises"),require("path"),require("url")):"function"==typeof define&&define.amd?define(["exports","fs/promises","path","url"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={},t.promises,t.path,t.url)}(this,(function(t,n,r,e){"use strict";function o(t){return t.length=0,t}function i(t){return void 0===t}function c(t){return Boolean(t.length)}function u(t){return null===t}function s(t){return!i(t)&&!u(t)}function a(t){return t}function f(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const a=n.call(e,t,i,r,c,u,o);s(a)&&r.push(a)})):f(t,((t,i,c,u)=>{const a=n(t,i,r,c,u,e,o);s(a)&&r.push(a)})),r}async function h(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const i=await n(t,e,r,o);s(i)&&r.push(i)})),r}const{sign:g}=Math;function y(t){return-1===g(t)}function d(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function A(t,n){return t.forEach(n),t}const b=Array.isArray;function w(t){return b(t)&&t||s(t)&&[t]||[]}function v(t){return t.flat(1/0)}const C=Reflect.construct;function O(t,n=[],r){const e=b(n)?n:[n];return r?C(t,e,r):C(t,e)}function j(...t){const n=O(Map),r=[];return f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function F(t,n=1,r=t.length){return t.splice(n,r)}function I(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function E(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function M(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function x(t,n,r=[],e){return await h(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const T=Object.keys;function B(t){if(t)return T(t)}const N=/\.|\[/,U=/]/g,P="";function k(t){return t.replace(U,P).split(N)}function $(t,n){if(!n)return!1;let r=n;return M(b(t)?t:k(t),(t=>(r=r[t],s(r)))),r}const D=Object.hasOwn;function L(t,...n){if(t)return M(n,(n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}}))}const _=t=>!!s(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function q(t,n){return t?.constructor===n||!1}function V(t){return n=>q(n,t)}function K(t){return t?.constructor?.name}function Z(t){return n=>K(n)===t||!1}function z(t){return function(n,...r){return r?t(n)&&M(r,t):t(n)}}const W=Z("Buffer"),G=z(W),J=(t,n)=>{if(t===n)return!0;if(G(t))return t.equals(n);if(t.toString()===n.toString())if(_(t)){const r=B(t);if(L(n,r))return M(r,(r=>J(t[r],n[r])))}else if(b(t)&&t.length===n.length)return M(t,((t,r)=>J(t,n[r])));return!1};const H=Math.max;function Q(t,n,r=[],e,o){return s(e)?f(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):f(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function X(t,n){const r=[];return await h(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function Y(t,n){return t-n}function tt(t,n){return n-t}const{floor:nt,random:rt}=Math;function et(t,n=0){return nt(rt()*(t-n))+n}const ot=Array.from;function it(t,n,r){if(s(t))return ot(t,n,r)}function ct(t,n=t.length){if(t.length<=1)return it(t);const r=it(t);let e,o,i=0;for(;ii?-1:0:1:-1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}function yt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function dt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function mt(t,n="id",r){return t.sort(((t,e)=>dt(t,e,n,r)))}const At=Z("Number"),bt=z(At);const wt=V(String);function vt(t,n){if(t)return wt(n)?t[n]:Q(n,(n=>t[n]))}function Ct(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function Ot(t){return n=>!!s(n)&&t.test(n)}const jt=Ot(/\.css$/),Ft=Ot(/\.html$/),It=Ot(/\.js$/),Et=Ot(/\.json$/);const Mt=Object.assign;function Rt(t,...n){if(s(t))return Mt(t,...n)}const St=async(t,n,r,e)=>{if(!t)return;const o=B(t);return s(r)?await h(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await h(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function xt(t,n,r,e){if(!t)return;const o=B(t);return s(r)?f(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):f(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const Tt=Z("Set"),Bt=z(Tt);function Nt(t,n){if(Bt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Ut=Z("GeneratorFunction"),Pt=z(Ut);async function kt(t,n,r){if(Bt(t)){for(const r of t)await n(r,t);return t}if(Pt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const $t=t=>!!s(t)&&t instanceof Function,Dt=Z("AsyncFunction"),Lt=z(Dt);function _t(t,n,r,e,o,i){return(c,u,a,f,l)=>{let h;const p=Lt(u);if(s(c)&&u)return h=b(c)?p?n:t:_(c)||$t(c)?p?e:r:o?p?i:o:Pt(c)?i:p?e:r,h(c,u,a,f,l)}}const qt=_t(f,h,xt,St,Nt,kt);class Vt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;qt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const Kt=!0,Zt=!1,zt=()=>{};function Wt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Kt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Jt=O(Gt);function Ht(t,n){return Jt.set(t,n)}const Qt=Reflect.apply;function Xt(t,n,r){if($t(t))return Qt(t,n,r)}async function Yt(t,n,r={}){if(t)return await St(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function tn(t,n,r={},e,o){if(t)return s(e)?xt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):xt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function nn(t){return t?.constructor}function rn(t,n=[]){const r=nn(t);return r===Function&&"function"===r.name?function(){}:O(r,n)}function en(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function on(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const cn=_t(Q,X,tn,Yt,en,on);async function un(t,n){if(!t)return;return R(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function sn(t,n){if(!t)return;return M(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function an(t,n=a){if(b(t)||Bt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function fn(t,n=a,r){if(Pt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(b(t)||Bt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const ln=_t(M,R,sn,un,an,fn);const hn=Function.prototype;function pn(t){return hn.call.bind(t)}const gn=Object.getOwnPropertyNames,yn=Object.getOwnPropertyDescriptor,dn=Object.defineProperty,mn=pn(Object.hasOwnProperty),An=Object.is;const{random:bn}=Math;const{sign:wn}=Math;const vn=Object.entries;async function Cn(t,n=a,r={}){return await St(t,(async(t,e,o,i,c)=>{const u=await n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function On(t,n=a,r={}){return xt(t,((t,e,o,i,c)=>{const u=n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function jn(t,n,r={}){return xt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Fn(t,n,r={}){return await St(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const In=Z("RegExp"),En=z(In),Mn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Rn(t){return t.replace(Mn,"\\$&")}function Sn(t,n){return n?Sn(Q(t,Rn)):RegExp(t.join("|"))}function xn(t){if(t)return B(t).length}const Tn=/[ _-]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Un=/[ _-]+/g,Pn=/[ ]+/g;const kn=/[ _-]+/g;const $n=/[ _-]+/g;function Dn(t,n=1){return t.substring(n)}const Ln=/%(?![\da-f]{2})/gi,_n=/&/g,qn=//g,Kn=/"/g;function Zn(t){return decodeURIComponent(t.replace(Ln,(()=>"%25")))}function zn(t){return t.replace(_n,"&").replace(qn,"<").replace(Vn,">").replace(Kn,""")}const Wn=/\S+/g,Gn=/\w+/g;const Jn=/\w+/g;function Hn(t){return t[0].toUpperCase()}function Qn(t){return Hn(t)+Dn(t)}function Xn(t){return Hn(t)+Dn(t).toLowerCase()}function Yn(t){return nn(t)?.name}function tr(t){return!s(t)}const nr=Z("Map"),rr=z(nr),er=/Array/,or="Array";function ir(t){if(t){const n=Yn(t);if(er.test(n)&&n!==or)return!0}return!1}const cr=Z("BigInt"),ur=z(cr),sr=Z("Boolean"),ar=z(sr),fr=Z("ArrayBuffer"),lr=z(fr);const hr=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const pr=Z("Date"),gr=z(pr);function yr(t){return!1===t}const dr=Z("Float32Array"),mr=z(dr),Ar=Z("Float64Array"),br=z(Ar),{isInteger:wr}=Number,vr=wr,Cr=Z("Int16Array"),Or=z(Cr),jr=Z("Int32Array"),Fr=z(jr),Ir=Z("Int8Array"),Er=z(Ir);function Mr(t){return!!t&&t instanceof Promise}function Rr(t){return!!t&&(Mr(t)||Lt(t)||Pt(t))}const{isSafeInteger:Sr}=Number,xr=Sr;const Tr=Z("Uint16Array"),Br=z(Tr),Nr=Z("Uint32Array"),Ur=z(Nr),Pr=Z("Uint8Array"),kr=z(Pr),$r=Z("Uint8ClampedArray"),Dr=z($r),Lr=Z("WeakMap"),_r=z(Lr),qr=void 0!==globalThis.Deno,Vr=void 0!==globalThis.process&&process.versions&&process.versions.node;function Kr(t,n=!0){return Boolean(t)&&n}function Zr(t,n){return yr(J(t,n))}const zr=JSON;const Wr=zr.stringify;function Gr(t,n,r){const e=globalThis.options||r;let o;return $t(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Wr(t)}\n\t\tExpected: ${Wr(n)}`,e)}async function Jr(t,n,r){const e=await t;return!($t(n)&&!1===await n(e,r))&&!Zr(e,n)||Gr(e,n,r)}const Hr=globalThis.structuredClone;async function Qr(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);s(e)&&r.push(e)}return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const i=await n(r,o,t);s(i)&&e(i)}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);s(c)&&(i?o.set(r,c):o[r]=c)}return o}function Xr(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const i=n(r,e,t);s(i)&&o(i)}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);s(c)&&(o?e.set(r,c):e[r]=c)}return e}const Yr=_t(l,p,On,Cn,Xr,Qr);function te(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=$t(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function ne(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=$t(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const re=_t(S,x,jn,Fn,te,ne);function ee(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const oe=ee(f),ie=ee(I);function ce(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const ue=ce(h),se=ce(E);const ae=Ot(/\./);class fe{list=O(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Kt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const le=O(fe);class he{static models={};constructor(t,n){s(n)?(Rt(this,n),this.modelName=t,he.models.set(t,n)):Rt(this,t)}}class pe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;xt(t,(n=>{t[n]=new pe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new pe(r),!0)})}}class ge{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return s(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ye=O(ge);class de{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Vt,t.Intervals=fe,t.Model=he,t.Store=pe,t.Timers=Gt,t.UniqID=ge,t.VirtualStorage=de,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Xt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const r={};return f(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Rr(t)||Rr(n)?Jr(t,n,r):!($t(n)&&!1===n(t,r))&&!Zr(t,n)||Gr(t,n,r)},t.assertAsync=Jr,t.assign=Rt,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=cn(t,(t=>$t(t)?t.bind(n):t));return r?Rt(r,e):e},t.cacheNativeMethod=pn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Tn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return O(Vt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(G(t))return lt(t);if(b(t))return o(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=o,t.clearBuffer=lt,t.clearIntervals=function(){Wt(setTimeout(zt,0),(t=>{le.remove(t)}))},t.clearTimers=function(){Wt(setTimeout(zt,0),(t=>{Jt.remove(t)}))},t.clone=function(t){return Hr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=rn,t.compact=function(t){if(_(t)){const n=B(t),r=n.length,e={};for(let o=0;oKr(t)))},t.compactKeys=function(t){const n=[];return xt(t,((t,r)=>{s(t)&&n.push(r)})),n},t.compactMap=Yr,t.compactMapArray=l,t.compactMapAsyncArray=p,t.compactMapAsyncObject=Cn,t.compactMapObject=On,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{const c=r.join(e,i);if((await n.stat(c)).isDirectory()){const u=r.join(o,i.replace(e,""));await n.mkdir(u,{recursive:!0}),await t(c,u)}else await async function(t,e,o){const i=r.join(t,o),c=r.join(e,o);await n.copyFile(i,c)}(e,o,i)})),!0},t.countBy=function(t,n){const r={};let e;return f(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return f(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return f(t,(t=>{t[n]||r++})),r},t.currentFile=function(t){return globalThis.__filename?__filename:e.fileURLToPath(t.url)},t.currentPath=function(t){return globalThis.__dirname?__dirname:r.dirname(e.fileURLToPath(t.url))},t.curry=function(t,n=t.length){const r=[],e=(...i)=>{if(r.push(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.curryRight=function(t,n=t.length){const r=[],e=(...i)=>{if(r.unshift(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.debounce=function(t,n){function r(...t){r.id!==Zt&&Jt.remove(r.id),r.id=Ht((()=>{r.callable(...t),r.id=Zt}),n)}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{r.id!==Zt&&(Jt.remove(r.id),r.id=Zt)},r},t.deduct=function(t){return t-1},t.defProp=dn,t.difference=j,t.divide=function(t,n){return t/n},t.drop=F,t.dropRight=(t,n=1,r=t.length)=>F(t,0,r-n),t.each=qt,t.eachArray=f,t.eachAsyncArray=h,t.eachAsyncObject=St,t.eachObject=xt,t.eachRight=I,t.eachRightAsync=E,t.ensureArray=w,t.ensureBuffer=function(t){return G(t)&&t||s(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Rn,t.escapeRegexRegex=Mn,t.every=ln,t.everyArg=function(...t){return Lt(t[0])?async function(...n){return ln(t,(async t=>ln(n,(async n=>t(n)))))}:function(...n){return ln(t,(t=>ln(n,(n=>t(n)))))}},t.everyArray=M,t.everyAsyncArray=R,t.everyAsyncObject=un,t.everyObject=sn,t.falsy=Zt,t.filter=re,t.filterArray=S,t.filterAsyncArray=x,t.filterAsyncObject=Fn,t.filterObject=jn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=ht,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(w(n))),[]);return r},t.flattenDeep=v,t.flow=oe,t.flowAsync=ue,t.flowAsyncRight=se,t.flowRight=ie,t.forEach=A,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else $t(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=Nt,t.forOfAsync=kt,t.forOfCompactMap=Xr,t.forOfCompactMapAsync=Qr,t.forOfEvery=an,t.forOfEveryAsync=fn,t.forOfFilter=te,t.forOfFilterAsync=ne,t.forOfMap=en,t.forOfMapAsync=on,t.generateLoop=_t,t.get=$,t.getEntries=function(t){if(s(t))return vn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return mt(t,n)[0]},t.getLowest=function(t,n){return gt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return M(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=yn,t.getPropNames=gn,t.getType=nn,t.getTypeName=Yn,t.groupBy=function(t,n){const r={};return f(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(tr(n)||tr(r))return!1;if(wt(n))return wt(r)?n.includes(r,e):En(r)?r.test(n):$t(r)?Boolean(r(n)):ln(r,(r=>Boolean(t(n,r))));if(b(n)){if(wt(r))return n.includes(r,e);if(En(r))return ln(n,(t=>t.test(r)));if(b(r))return ln(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}})))},t.hasDot=ae,t.hasKeys=L,t.hasLength=c,t.hasProp=mn,t.hasValue=s,t.htmlEntities=zn,t.ifInvoke=function(t,...n){if($t(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!s(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(s(t)){if($t(n))return r?Xt(n,r,e):n(...e);if(_(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eqt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return f(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return l(t,(t=>{if(M(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return le.set(t,n)},t.intervals=le,t.invert=function(t,n={}){if(t)return xt(t,((t,r)=>{n[t]=r})),n},t.invoke=function(t,n,r){return Q(t,((t,e)=>t[n](r,e)))},t.invokeAsync=function(t,n,r){return X(t,(async(t,e)=>t[n](r,e)))},t.isArguments=function(t){return!!s(t)&&"[object Arguments]"===t.toString()},t.isArray=b,t.isArrayBuffer=lr,t.isArrayBufferCall=fr,t.isArrayLike=function(t,n){if(tr(t)||$t(t))return!1;if(b(t)||ir(t))return!0;const r=t.length;if(!tr(r)||!bt(r)||r<0)return!1;if(n){const n=B(t);return!!n&&ln(n,((t,n)=>n>=0&&bt(n)))}return!0},t.isAsync=Lt,t.isAsyncCall=Dt,t.isBigInt=ur,t.isBigIntCall=cr,t.isBoolean=ar,t.isBooleanCall=sr,t.isBuffer=G,t.isBufferCall=W,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(s(t)){const n=t?.constructor?.name;return hr.test(n)}return!1},t.isConstructor=q,t.isConstructorFactory=V,t.isConstructorNameFactory=Z,t.isDate=gr,t.isDateCall=pr,t.isDeno=qr,t.isEmpty=function(t){return wt(t)||b(t)?!c(t):_(t)?!xn(t):!s(t)},t.isEqual=J,t.isF32=mr,t.isF32Call=dr,t.isF64=br,t.isF64Call=Ar,t.isFalse=yr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=jt,t.isFileHTML=Ft,t.isFileJS=It,t.isFileJSON=Et,t.isFloat=vr,t.isFunction=$t,t.isGenerator=Pt,t.isGeneratorCall=Ut,t.isI16=Or,t.isI16Call=Cr,t.isI32=Fr,t.isI32Call=jr,t.isI8=Er,t.isI8Call=Ir,t.isIterable=function(t){return s(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Rr,t.isMap=rr,t.isMapCall=nr,t.isMatchArray=function(t,n){return t.length===n.length&&M(t,((t,r)=>J(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=B(t),e=B(n);return r.length===e.length&&M(r,(r=>t[r]===n[r]))},t.isNegative=y,t.isNodejs=Vr,t.isNotArray=function(t){return!b(t)},t.isNotNumber=function(t){return!bt(t)},t.isNotString=function(t){return!wt(t)},t.isNull=u,t.isNumber=bt,t.isNumberCall=At,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=_,t.isPositive=function(t){return 1===wn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Mr,t.isRegex=En,t.isRegexCall=In,t.isRelated=function(t,n){return!tr(t)&&!tr(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xr,t.isSame=An,t.isSameType=function(t,n){const r=nn(t),e=nn(n);return r===e&&r.name===e.name},t.isSet=Bt,t.isSetCall=Tt,t.isString=wt,t.isTrue=function(t){return!0===t},t.isTruthy=Kr,t.isTypeFactory=z,t.isTypedArray=ir,t.isU16=Br,t.isU16Call=Tr,t.isU32=Ur,t.isU32Call=Nr,t.isU8=kr,t.isU8C=Dr,t.isU8CCall=$r,t.isU8Call=Pr,t.isUndefined=i,t.isWeakMap=_r,t.isWeakMapCall=Lr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return zr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Bn," ").trim().toLowerCase().replace(Nn,"-")},t.keys=B,t.largest=function(t){return H(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=cn,t.mapArray=Q,t.mapAsyncArray=X,t.mapAsyncObject=Yt,t.mapObject=tn,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{qt(r,((r,e)=>{if(n[e]&&(_(r)||b(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return s(n)?O(he,[t,n]):$(t,he.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=tr,t.noop=zt,t.notEqual=Zr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Mt,t.objectEntries=vn,t.objectSize=xn,t.omit=function(t,n){if(t){if(b(n)){const r=Sn(n);return jn(t,((t,n)=>!r.test(n)))}if(En(n))return jn(t,((t,r)=>!n.test(r)));if(wt(n))return jn(t,((t,r)=>r!==n));if(bt(n)){const r=n.toString();return jn(t,((t,n)=>n!==r))}return $t(n)?jn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(s(n)||(n=t(...r)),n)},t.onlyUnique=st,t.over=function(t){return(...n)=>cn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>ln(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[l(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return f(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return Q(t,(t=>vt(t,n)))},t.pluckObject=vt,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=B(t))=>M(r,(r=>J(t[r],n[r]))),t.randomFloat=function(t,n=0){return bn()*(t-n)+n},t.randomInt=et,t.range=function(t,n,r=1,e=[]){return y(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=Ot,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return ct(t);if(1===n)return[t[et(r-1,0)]];const e=[],o={};let i,c=0;for(;cyt(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>Ct(t,e,n,r)))},t.sortCollectionAscending=mt,t.sortCollectionAscendingFilter=dt,t.sortCollectionDescending=gt,t.sortCollectionDescendingFilter=pt,t.sortNumberAscending=function(t){return t.sort(Y)},t.sortNumberDescening=function(t){return t.sort(tt)},t.sortObjectsAlphabetically=yt,t.sortObjectsAlphabeticallyReverse=Ct,t.sortUnique=at,t.stringify=Wr,t.stubArray=()=>[],t.stubFalse=()=>Zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>Kt,t.subtract=Y,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=tt,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=Kt:(r.callable(...t),r.id=Ht((()=>{r.shouldThrottle&&r.callable(...t),r.id=Zt}),n))}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{Jt.remove(r.id),r.id=Zt},r},t.timer=Ht,t.timers=Jt,t.times=Wt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=Kt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return xt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ft(v(t))},t.uniqID=ye,t.unique=ft,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eQn(t)))},t.upperFirstLetter=Hn,t.upperFirstOnly=Xn,t.upperFirstOnlyAll=function(t){return t.replace(Jn,(t=>Xn(t)))},t.virtualStorage=function(t){return new de(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(Gn)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=O(Map),r=[];return 2===t.length?j(t[0],t[1]):(f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return f(t,((t,e)=>{r[t]=n[e]})),r}})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("fs/promises"),require("path"),require("url")):"function"==typeof define&&define.amd?define(["exports","fs/promises","path","url"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={},t.promises,t.path,t.url)}(this,(function(t,n,r,e){"use strict";function o(t){return t.length=0,t}function i(t){return void 0===t}function c(t){return Boolean(t.length)}function u(t){return null===t}function s(t){return!i(t)&&!u(t)}function a(t){return t}function f(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const a=n.call(e,t,i,r,c,u,o);s(a)&&r.push(a)})):f(t,((t,i,c,u)=>{const a=n(t,i,r,c,u,e,o);s(a)&&r.push(a)})),r}async function h(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const i=await n(t,e,r,o);s(i)&&r.push(i)})),r}const{sign:g}=Math;function y(t){return-1===g(t)}function d(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function A(t,n){return t.forEach(n),t}const b=Array.isArray;function w(t){return b(t)&&t||s(t)&&[t]||[]}function v(t){return t.flat(1/0)}const C=Reflect.construct;function O(t,n=[],r){const e=b(n)?n:[n];return r?C(t,e,r):C(t,e)}function j(...t){const n=O(Map),r=[];return f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function F(t,n=1,r=t.length){return t.splice(n,r)}function I(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function E(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function M(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function x(t,n,r=[],e){return await h(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const T=Object.keys;function B(t){if(t)return T(t)}const N=/\.|\[/,U=/]/g,P="";function k(t){return t.replace(U,P).split(N)}function $(t,n){if(!n)return!1;let r=n;return M(b(t)?t:k(t),(t=>(r=r[t],s(r)))),r}const D=Object.hasOwn;function L(t,...n){if(t)return M(n,(n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}}))}const _=t=>!!s(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function q(t,n){return t?.constructor===n||!1}function V(t){return n=>q(n,t)}function K(t){return t?.constructor?.name}function Z(t){return n=>K(n)===t||!1}function z(t){return function(n,...r){return r?t(n)&&M(r,t):t(n)}}const W=Z("Buffer"),G=z(W),J=(t,n)=>{if(t===n)return!0;if(G(t))return t.equals(n);if(t.toString()===n.toString())if(_(t)){const r=B(t);if(L(n,r))return M(r,(r=>J(t[r],n[r])))}else if(b(t)&&t.length===n.length)return M(t,((t,r)=>J(t,n[r])));return!1};const H=Math.max;function Q(t,n,r=[],e,o){return s(e)?f(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):f(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function X(t,n){const r=[];return await h(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function Y(t,n){return t-n}function tt(t,n){return n-t}const{floor:nt,random:rt}=Math;function et(t,n=0){return nt(rt()*(t-n))+n}const ot=Array.from;function it(t,n,r){if(s(t))return ot(t,n,r)}function ct(t,n=t.length){if(t.length<=1)return it(t);const r=it(t);let e,o,i=0;for(;ii?-1:0:1:-1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}function yt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function dt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function mt(t,n="id",r){return t.sort(((t,e)=>dt(t,e,n,r)))}const At=Z("Number"),bt=z(At);const wt=V(String);function vt(t,n){if(t)return wt(n)?t[n]:Q(n,(n=>t[n]))}function Ct(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function Ot(t){return n=>!!s(n)&&t.test(n)}const jt=Ot(/\.css$/),Ft=Ot(/\.html$/),It=Ot(/\.js$/),Et=Ot(/\.json$/);const Mt=Object.assign;function Rt(t,...n){if(s(t))return Mt(t,...n)}const St=async(t,n,r,e)=>{if(!t)return;const o=B(t);return s(r)?await h(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await h(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function xt(t,n,r,e){if(!t)return;const o=B(t);return s(r)?f(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):f(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const Tt=Z("Set"),Bt=z(Tt);function Nt(t,n){if(Bt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Ut=Z("GeneratorFunction"),Pt=z(Ut);async function kt(t,n,r){if(Bt(t)){for(const r of t)await n(r,t);return t}if(Pt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const $t=t=>!!s(t)&&t instanceof Function,Dt=Z("AsyncFunction"),Lt=z(Dt);function _t(t,n,r,e,o,i){return(c,u,a,f,l)=>{let h;const p=Lt(u);if(s(c)&&u)return h=b(c)?p?n:t:_(c)||$t(c)?p?e:r:o?p?i:o:Pt(c)?i:p?e:r,h(c,u,a,f,l)}}const qt=_t(f,h,xt,St,Nt,kt);class Vt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;qt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const Kt=!0,Zt=!1,zt=()=>{};function Wt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Kt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Jt=O(Gt);function Ht(t,n){return Jt.set(t,n)}const Qt=Reflect.apply;function Xt(t,n,r){if($t(t))return Qt(t,n,r)}async function Yt(t,n,r={}){if(t)return await St(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function tn(t,n,r={},e,o){if(t)return s(e)?xt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):xt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function nn(t){return t?.constructor}function rn(t,n=[]){const r=nn(t);return r===Function&&"function"===r.name?function(){}:O(r,n)}function en(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function on(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const cn=_t(Q,X,tn,Yt,en,on);async function un(t,n){if(!t)return;return R(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function sn(t,n){if(!t)return;return M(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function an(t,n=a){if(b(t)||Bt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function fn(t,n=a,r){if(Pt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(b(t)||Bt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const ln=_t(M,R,sn,un,an,fn);const hn=Function.prototype;function pn(t){return hn.call.bind(t)}const gn=Object.getOwnPropertyNames,yn=Object.getOwnPropertyDescriptor,dn=Object.defineProperty,mn=pn(Object.hasOwnProperty),An=Object.is;const{random:bn}=Math;const{sign:wn}=Math;const vn=Object.entries;async function Cn(t,n=a,r={}){return await St(t,(async(t,e,o,i,c)=>{const u=await n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function On(t,n=a,r={}){return xt(t,((t,e,o,i,c)=>{const u=n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function jn(t,n,r={}){return xt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Fn(t,n,r={}){return await St(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const In=Z("RegExp"),En=z(In),Mn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Rn(t){return t.replace(Mn,"\\$&")}function Sn(t,n){return n?Sn(Q(t,Rn)):RegExp(t.join("|"))}function xn(t){if(t)return B(t).length}const Tn=/[ _-]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Un=/[ _-]+/g,Pn=/[ ]+/g;const kn=/[ _-]+/g;const $n=/[ _-]+/g;function Dn(t,n=1){return t.substring(n)}const Ln=/%(?![\da-f]{2})/gi,_n=/&/g,qn=//g,Kn=/"/g;function Zn(t){return decodeURIComponent(t.replace(Ln,(()=>"%25")))}function zn(t){return t.replace(_n,"&").replace(qn,"<").replace(Vn,">").replace(Kn,""")}const Wn=/\S+/g,Gn=/\w+/g;const Jn=/\w+/g;function Hn(t){return t[0].toUpperCase()}function Qn(t){return Hn(t)+Dn(t)}function Xn(t){return Hn(t)+Dn(t).toLowerCase()}function Yn(t){return nn(t)?.name}function tr(t){return!s(t)}const nr=Z("Map"),rr=z(nr),er=/Array/,or="Array";function ir(t){if(t){const n=Yn(t);if(er.test(n)&&n!==or)return!0}return!1}const cr=Z("BigInt"),ur=z(cr),sr=Z("Boolean"),ar=z(sr),fr=Z("ArrayBuffer"),lr=z(fr);const hr=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const pr=Z("Date"),gr=z(pr);function yr(t){return!1===t}const dr=Z("Float32Array"),mr=z(dr),Ar=Z("Float64Array"),br=z(Ar),{isInteger:wr}=Number,vr=wr,Cr=Z("Int16Array"),Or=z(Cr),jr=Z("Int32Array"),Fr=z(jr),Ir=Z("Int8Array"),Er=z(Ir);function Mr(t){return!!t&&t instanceof Promise}function Rr(t){return!!t&&(Mr(t)||Lt(t)||Pt(t))}const{isSafeInteger:Sr}=Number,xr=Sr;const Tr=Z("Uint16Array"),Br=z(Tr),Nr=Z("Uint32Array"),Ur=z(Nr),Pr=Z("Uint8Array"),kr=z(Pr),$r=Z("Uint8ClampedArray"),Dr=z($r),Lr=Z("WeakMap"),_r=z(Lr),qr=void 0!==globalThis.Deno,Vr=void 0!==globalThis.process&&process.versions&&process.versions.node;function Kr(t,n=!0){return Boolean(t)&&n}function Zr(t,n){return yr(J(t,n))}const zr=JSON;const Wr=zr.stringify;function Gr(t,n,r){const e=globalThis.options||r;let o;return $t(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Wr(t)}\n\t\tExpected: ${Wr(n)}`,e)}async function Jr(t,n,r){const e=await t;return!($t(n)&&!1===await n(e,r))&&!Zr(e,n)||Gr(e,n,r)}const Hr=globalThis.structuredClone;async function Qr(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);s(e)&&r.push(e)}return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const i=await n(r,o,t);s(i)&&e(i)}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);s(c)&&(i?o.set(r,c):o[r]=c)}return o}function Xr(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const i=n(r,e,t);s(i)&&o(i)}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);s(c)&&(o?e.set(r,c):e[r]=c)}return e}const Yr=_t(l,p,On,Cn,Xr,Qr);function te(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=$t(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function ne(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=$t(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const re=_t(S,x,jn,Fn,te,ne);function ee(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const oe=ee(f),ie=ee(I);function ce(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const ue=ce(h),se=ce(E);const ae=Ot(/\./);class fe{list=O(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Kt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const le=O(fe);class he{static models={};constructor(t,n){s(n)?(Rt(this,n),this.modelName=t,he.models.set(t,n)):Rt(this,t)}}class pe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;xt(t,(n=>{t[n]=new pe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new pe(r),!0)})}}class ge{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return s(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ye=O(ge);class de{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Vt,t.Intervals=fe,t.Model=he,t.Store=pe,t.Timers=Gt,t.UniqID=ge,t.VirtualStorage=de,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Xt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const r={};return f(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Rr(t)||Rr(n)?Jr(t,n,r):!($t(n)&&!1===n(t,r))&&!Zr(t,n)||Gr(t,n,r)},t.assertAsync=Jr,t.assign=Rt,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=cn(t,(t=>$t(t)?t.bind(n):t));return r?Rt(r,e):e},t.cacheNativeMethod=pn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Tn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return O(Vt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(G(t))return lt(t);if(b(t))return o(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=o,t.clearBuffer=lt,t.clearIntervals=function(){Wt(setTimeout(zt,0),(t=>{le.remove(t)}))},t.clearTimers=function(){Wt(setTimeout(zt,0),(t=>{Jt.remove(t)}))},t.clone=function(t){return Hr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=rn,t.compact=function(t){if(_(t)){const n=B(t),r=n.length,e={};for(let o=0;oKr(t)))},t.compactKeys=function(t){const n=[];return xt(t,((t,r)=>{s(t)&&n.push(r)})),n},t.compactMap=Yr,t.compactMapArray=l,t.compactMapAsyncArray=p,t.compactMapAsyncObject=Cn,t.compactMapObject=On,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{const c=r.join(e,i);if((await n.stat(c)).isDirectory()){const u=r.join(o,i.replace(e,""));await n.mkdir(u,{recursive:!0}),await t(c,u)}else await async function(t,e,o){const i=r.join(t,o),c=r.join(e,o);await n.copyFile(i,c)}(e,o,i)})),!0},t.countBy=function(t,n){const r={};let e;return f(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return f(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return f(t,(t=>{t[n]||r++})),r},t.currentFile=function(t){return globalThis.__filename?__filename:e.fileURLToPath(t.url)},t.currentPath=function(t){return globalThis.__dirname?__dirname:r.dirname(e.fileURLToPath(t.url))},t.curry=function(t,n=t.length){const r=[],e=(...i)=>{if(r.push(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.curryRight=function(t,n=t.length){const r=[],e=(...i)=>{if(r.unshift(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.debounce=function(t,n){function r(...t){r.id!==Zt&&Jt.remove(r.id),r.id=Ht((()=>{r.callable(...t),r.id=Zt}),n)}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{r.id!==Zt&&(Jt.remove(r.id),r.id=Zt)},r},t.deduct=function(t){return t-1},t.defProp=dn,t.difference=j,t.divide=function(t,n){return t/n},t.drop=F,t.dropRight=(t,n=1,r=t.length)=>F(t,0,r-n),t.each=qt,t.eachArray=f,t.eachAsyncArray=h,t.eachAsyncObject=St,t.eachObject=xt,t.eachRight=I,t.eachRightAsync=E,t.ensureArray=w,t.ensureBuffer=function(t){return G(t)&&t||s(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Rn,t.escapeRegexRegex=Mn,t.every=ln,t.everyArg=function(...t){return Lt(t[0])?async function(...n){return ln(t,(async t=>ln(n,(async n=>t(n)))))}:function(...n){return ln(t,(t=>ln(n,(n=>t(n)))))}},t.everyArray=M,t.everyAsyncArray=R,t.everyAsyncObject=un,t.everyObject=sn,t.falsy=Zt,t.filter=re,t.filterArray=S,t.filterAsyncArray=x,t.filterAsyncObject=Fn,t.filterObject=jn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=ht,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(w(n))),[]);return r},t.flattenDeep=v,t.flow=oe,t.flowAsync=ue,t.flowAsyncRight=se,t.flowRight=ie,t.forEach=A,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else $t(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=Nt,t.forOfAsync=kt,t.forOfCompactMap=Xr,t.forOfCompactMapAsync=Qr,t.forOfEvery=an,t.forOfEveryAsync=fn,t.forOfFilter=te,t.forOfFilterAsync=ne,t.forOfMap=en,t.forOfMapAsync=on,t.generateLoop=_t,t.get=$,t.getEntries=function(t){if(s(t))return vn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return mt(t,n)[0]},t.getLowest=function(t,n){return gt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return M(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=yn,t.getPropNames=gn,t.getType=nn,t.getTypeName=Yn,t.groupBy=function(t,n){const r={};return f(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(tr(n)||tr(r))return!1;if(wt(n))return wt(r)?n.includes(r,e):En(r)?r.test(n):$t(r)?Boolean(r(n)):ln(r,(r=>Boolean(t(n,r))));if(b(n)){if(wt(r))return n.includes(r,e);if(En(r))return ln(n,(t=>t.test(r)));if(b(r))return ln(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}})))},t.hasDot=ae,t.hasKeys=L,t.hasLength=c,t.hasProp=mn,t.hasValue=s,t.htmlEntities=zn,t.ifInvoke=function(t,...n){if($t(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!s(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(s(t)){if($t(n))return r?Xt(n,r,e):n(...e);if(_(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eqt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return f(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return l(t,(t=>{if(M(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return le.set(t,n)},t.intervals=le,t.invert=function(t,n={}){if(t)return xt(t,((t,r)=>{n[t]=r})),n},t.invokeArray=function(t,n,r){if(!t)return;const e=t.length;if(s(r))for(let o=0;ot[n].call(e,r):(t,e)=>t[n](r))},t.invokeCollectionAsync=function(t,n,r,e){return X(t,e?t=>t[n].call(e,r):async t=>t[n](r))},t.isArguments=function(t){return!!s(t)&&"[object Arguments]"===t.toString()},t.isArray=b,t.isArrayBuffer=lr,t.isArrayBufferCall=fr,t.isArrayLike=function(t,n){if(tr(t)||$t(t))return!1;if(b(t)||ir(t))return!0;const r=t.length;if(!tr(r)||!bt(r)||r<0)return!1;if(n){const n=B(t);return!!n&&ln(n,((t,n)=>n>=0&&bt(n)))}return!0},t.isAsync=Lt,t.isAsyncCall=Dt,t.isBigInt=ur,t.isBigIntCall=cr,t.isBoolean=ar,t.isBooleanCall=sr,t.isBuffer=G,t.isBufferCall=W,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(s(t)){const n=t?.constructor?.name;return hr.test(n)}return!1},t.isConstructor=q,t.isConstructorFactory=V,t.isConstructorNameFactory=Z,t.isDate=gr,t.isDateCall=pr,t.isDeno=qr,t.isEmpty=function(t){return wt(t)||b(t)?!c(t):_(t)?!xn(t):!s(t)},t.isEqual=J,t.isF32=mr,t.isF32Call=dr,t.isF64=br,t.isF64Call=Ar,t.isFalse=yr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=jt,t.isFileHTML=Ft,t.isFileJS=It,t.isFileJSON=Et,t.isFloat=vr,t.isFunction=$t,t.isGenerator=Pt,t.isGeneratorCall=Ut,t.isI16=Or,t.isI16Call=Cr,t.isI32=Fr,t.isI32Call=jr,t.isI8=Er,t.isI8Call=Ir,t.isIterable=function(t){return s(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Rr,t.isMap=rr,t.isMapCall=nr,t.isMatchArray=function(t,n){return t.length===n.length&&M(t,((t,r)=>J(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=B(t),e=B(n);return r.length===e.length&&M(r,(r=>t[r]===n[r]))},t.isNegative=y,t.isNodejs=Vr,t.isNotArray=function(t){return!b(t)},t.isNotNumber=function(t){return!bt(t)},t.isNotString=function(t){return!wt(t)},t.isNull=u,t.isNumber=bt,t.isNumberCall=At,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=_,t.isPositive=function(t){return 1===wn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Mr,t.isRegex=En,t.isRegexCall=In,t.isRelated=function(t,n){return!tr(t)&&!tr(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xr,t.isSame=An,t.isSameType=function(t,n){const r=nn(t),e=nn(n);return r===e&&r.name===e.name},t.isSet=Bt,t.isSetCall=Tt,t.isString=wt,t.isTrue=function(t){return!0===t},t.isTruthy=Kr,t.isTypeFactory=z,t.isTypedArray=ir,t.isU16=Br,t.isU16Call=Tr,t.isU32=Ur,t.isU32Call=Nr,t.isU8=kr,t.isU8C=Dr,t.isU8CCall=$r,t.isU8Call=Pr,t.isUndefined=i,t.isWeakMap=_r,t.isWeakMapCall=Lr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return zr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Bn," ").trim().toLowerCase().replace(Nn,"-")},t.keys=B,t.largest=function(t){return H(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=cn,t.mapArray=Q,t.mapAsyncArray=X,t.mapAsyncObject=Yt,t.mapObject=tn,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{qt(r,((r,e)=>{if(n[e]&&(_(r)||b(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return s(n)?O(he,[t,n]):$(t,he.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=tr,t.noop=zt,t.notEqual=Zr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Mt,t.objectEntries=vn,t.objectSize=xn,t.omit=function(t,n){if(t){if(b(n)){const r=Sn(n);return jn(t,((t,n)=>!r.test(n)))}if(En(n))return jn(t,((t,r)=>!n.test(r)));if(wt(n))return jn(t,((t,r)=>r!==n));if(bt(n)){const r=n.toString();return jn(t,((t,n)=>n!==r))}return $t(n)?jn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(s(n)||(n=t(...r)),n)},t.onlyUnique=st,t.over=function(t){return(...n)=>cn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>ln(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[l(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return f(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return Q(t,(t=>vt(t,n)))},t.pluckObject=vt,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=B(t))=>M(r,(r=>J(t[r],n[r]))),t.randomFloat=function(t,n=0){return bn()*(t-n)+n},t.randomInt=et,t.range=function(t,n,r=1,e=[]){return y(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=Ot,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return ct(t);if(1===n)return[t[et(r-1,0)]];const e=[],o={};let i,c=0;for(;cyt(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>Ct(t,e,n,r)))},t.sortCollectionAscending=mt,t.sortCollectionAscendingFilter=dt,t.sortCollectionDescending=gt,t.sortCollectionDescendingFilter=pt,t.sortNumberAscending=function(t){return t.sort(Y)},t.sortNumberDescening=function(t){return t.sort(tt)},t.sortObjectsAlphabetically=yt,t.sortObjectsAlphabeticallyReverse=Ct,t.sortUnique=at,t.stringify=Wr,t.stubArray=()=>[],t.stubFalse=()=>Zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>Kt,t.subtract=Y,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=tt,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=Kt:(r.callable(...t),r.id=Ht((()=>{r.shouldThrottle&&r.callable(...t),r.id=Zt}),n))}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{Jt.remove(r.id),r.id=Zt},r},t.timer=Ht,t.timers=Jt,t.times=Wt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=Kt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return xt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ft(v(t))},t.uniqID=ye,t.unique=ft,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eQn(t)))},t.upperFirstLetter=Hn,t.upperFirstOnly=Xn,t.upperFirstOnlyAll=function(t){return t.replace(Jn,(t=>Xn(t)))},t.virtualStorage=function(t){return new de(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(Gn)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=O(Map),r=[];return 2===t.length?j(t[0],t[1]):(f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return f(t,((t,e)=>{r[t]=n[e]})),r}})); //# sourceMappingURL=index.js.map diff --git a/github/module/basic.js b/github/module/basic.js index f1407d70..917ac48a 100644 --- a/github/module/basic.js +++ b/github/module/basic.js @@ -1,2 +1,2 @@ -function n(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function t(n){return n.length=0,n}function r(n){return n.slice()}function e(n){return void 0===n}function o(n){return Boolean(n.length)}function u(n){return null===n}function c(n){return!e(n)&&!u(n)}function i(n){return n}function s(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const f=t.call(e,n,u,r,i,s,o);c(f)&&r.push(f)})):s(n,((n,u,i,s)=>{const f=t(n,u,r,i,s,e,o);c(f)&&r.push(f)})),r}async function a(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const u=await t(n,e,r,o);c(u)&&r.push(u)})),r}const{sign:h}=Math;function g(n){return-1===h(n)}function p(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function m(n,t,r=1,e=[]){return g(r)?e:n{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function O(n,t=1,r=n.length){return n.splice(t,r)}const $=(n,t=1,r=n.length)=>O(n,0,r-t);function j(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function B(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function C(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function F(n,t,r=[],e){return await a(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function R(n,t){return t?n.slice(0,t):n[0]}function T(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(v(t))),[]);return r}function P(n){return n.slice(0,n.length-1)}function U(n,...t){return f(n,(n=>{if(C(t,(t=>t.includes(n))))return n}))}const N=Object.keys;function L(n){if(n)return N(n)}const _=/\.|\[/,D=/]/g,Z="";function k(n){return n.replace(D,Z).split(_)}function q(n,t){if(!t)return!1;let r=t;return C(y(n)?n:k(n),(n=>(r=r[n],c(r)))),r}const V=Object.hasOwn;function G(n,...t){if(n)return C(t,(t=>{const r=k(t);if(1===r.length)return V(n,t);{const t=r.pop(),e=q(r,n);return!!e&&V(e,t)}}))}function J(n,...t){if(n)return Boolean(t.find((t=>{const r=k(t);if(1===r.length)return V(n,t);{const t=r.pop(),e=q(r,n);return!!e&&V(e,t)}})))}const W=n=>!!c(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function z(n,t){return n?.constructor===t||!1}function H(n){return t=>z(t,n)}function K(n){return n?.constructor?.name}function Q(n){return t=>K(t)===n||!1}function X(n){return function(t,...r){return r?n(t)&&C(r,n):n(t)}}const Y=Q("Buffer"),nn=X(Y),tn=(n,t)=>{if(n===t)return!0;if(nn(n))return n.equals(t);if(n.toString()===t.toString())if(W(n)){const r=L(n);if(G(t,r))return C(r,(r=>tn(n[r],t[r])))}else if(y(n)&&n.length===t.length)return C(n,((n,r)=>tn(n,t[r])));return!1};function rn(n,t){return n.length===t.length&&C(n,((n,r)=>tn(t[r],n)))}const en=Math.max;function on(n){return en(...n)}function un(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function cn(n,t,r=[],e,o){return c(e)?s(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):s(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function sn(n,t){const r=[];return await a(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function fn(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function an(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function pn(n,t){return t-n}function dn(n){return n.sort(pn)}function mn(n,t){let r=n.length;for(let e=0;er)return $n(n);if(1===t)return[n[En(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Mn(n,t=1){return n.slice(0,t)}function Fn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Rn(n,t,r){return r.indexOf(n)===t}function Tn(n,t,r){return n!==r[t-1]}function Pn(n,t){return t?n.filter(Tn):n.filter(Rn)}function Un(...n){return Pn(A(n))}function Nn(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function qn(...n){const t=I(Map),r=[];return 2===n.length?x(n[0],n[1]):(s(n,((n,r)=>{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Vn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Gn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Jn(n){return nn(n)&&n||c(n)&&Buffer.from(n)||Buffer.alloc(0)}function Wn(n){return n.fill(0),n}function zn(n,t){const r={};let e;return s(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function Hn(n,t){let r=0;return s(n,(n=>{n[t]&&r++})),r}function Kn(n,t){let r=0;return s(n,(n=>{n[t]||r++})),r}function Qn(n,t,r,e,o){if(n[o]===e)return!0}function Xn(n,t,r="id"){const e=n.findIndex(((n,e)=>Qn(n,0,0,t,r)));return-1!==e&&e}function Yn(n,t,r="id"){const e=n.find(((n,e)=>Qn(n,0,0,t,r)));return-1!==e&&e}function nt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function tt(n,t="id",r){return n.sort(((n,e)=>nt(n,e,t,r)))}function rt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function et(n,t="id",r){return n.sort(((n,e)=>rt(n,e,t,r)))}function ot(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function ut(n,t="id",r){return n.sort(((n,e)=>ot(n,e,t,r)))}function ct(n,t="id"){return ut(n,t)[0]}function it(n,t){return tt(n,t,!1)[0]}function st(n,t){const r={};return s(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function ft(n,t="id"){const r={};return s(n,(n=>{r[n[t]]=n})),r}function at(n,t,r){return cn(n,((n,e)=>n[t](r,e)))}function lt(n,t,r){return sn(n,(async(n,e)=>n[t](r,e)))}const ht=Q("Number"),gt=X(ht);function pt(n){return!gt(n)}const dt=H(String);function mt(n){return!dt(n)}function wt(n,t){if(n)return dt(t)?n[t]:cn(t,(t=>n[t]))}function yt(n,t){return cn(n,(n=>wt(n,t)))}function bt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function vt(n,t="id",r){return n.sort(((n,e)=>bt(n,e,t,r)))}function At(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function Et(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function It(n){return t=>!!c(t)&&n.test(t)}const xt=It(/\.css$/),Ot=It(/\.html$/),$t=It(/\.js$/),jt=It(/\.json$/);function Bt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function Ct(n,t){return(...r)=>n(...r.splice(0,t))}function St(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Mt=Object.assign;function Ft(n,...t){if(c(n))return Mt(n,...t)}const Rt=async(n,t,r,e)=>{if(!n)return;const o=L(n);return c(r)?await a(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await a(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Tt(n,t,r,e){if(!n)return;const o=L(n);return c(r)?s(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):s(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function Pt(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!c(n)&&n instanceof Function,qt=Q("AsyncFunction"),Vt=X(qt);function Gt(n,t,r,e,o,u){return(i,s,f,a,l)=>{let h;const g=Vt(s);if(c(i)&&s)return h=y(i)?g?t:n:W(i)||kt(i)?g?e:r:o?g?u:o:Dt(i)?u:g?e:r,h(i,s,f,a,l)}}const Jt=Gt(s,a,Tt,Rt,Lt,Zt);class Wt{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Jt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function zt(n){return I(Wt,[n])}function Ht(n,r=n.length){const e=[],o=(...u)=>{if(e.push(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}function Kt(n,r=n.length){const e=[],o=(...u)=>{if(e.unshift(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}const Qt=!0,Xt=()=>Qt,Yt=!1,nr=()=>Yt,tr=()=>{};function rr(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,Qt),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const ur=I(or);function cr(n,t){return ur.set(n,t)}function ir(){rr(setTimeout(tr,0),(n=>{ur.remove(n)}))}const sr=Reflect.apply;function fr(n,t,r){if(kt(n))return sr(n,t,r)}function ar(n,t){function r(...n){r.id!==Yt&&ur.remove(r.id),r.id=cr((()=>{r.callable(...n),r.id=Yt}),t)}return r.id=Yt,r.callable=n.bind(r),r.clear=()=>{r.id!==Yt&&(ur.remove(r.id),r.id=Yt)},r}function lr(n,...t){if(kt(n))return n(...t)}async function hr(n,t){const r=n.length;for(let e=0;eJt(n,(n=>{n(t)}));function pr(n){return(...t)=>!n(...t)}function dr(n=0){return(...t)=>t[n]}const mr=n=>{let t;return(...r)=>(c(t)||(t=n(...r)),t)};async function wr(n,t,r={}){if(n)return await Rt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function yr(n,t,r={},e,o){if(n)return c(e)?Tt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Tt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function br(n){return n?.constructor}function vr(n,t=[]){const r=br(n);return r===Function&&"function"===r.name?function(){}:I(r,t)}function Ar(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=kt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Er(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=kt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const Ir=Gt(cn,sn,yr,wr,Ar,Er);function xr(n){return(...t)=>Ir(n,(n=>n(...t)))}async function Or(n,t){if(!n)return;return S(L(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function $r(n,t){if(!n)return;return C(L(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function jr(n,t=i){if(y(n)||Nt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Br(n,t=i,r){if(Dt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(y(n)||Nt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Cr=Gt(C,S,$r,Or,jr,Br);function Sr(n){return t=>Cr(n,(n=>n(t)))}function Mr(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Fr(n,t){function r(...n){r.id?r.shouldThrottle=Qt:(r.callable(...n),r.id=cr((()=>{r.shouldThrottle&&r.callable(...n),r.id=Yt}),t))}return r.id=Yt,r.callable=n.bind(r),r.clear=()=>{ur.remove(r.id),r.id=Yt},r}function Rr(n,t){return(...r)=>t(n,...r)}const Tr=Function.prototype;function Pr(n){return Tr.call.bind(n)}const Ur=Object.getOwnPropertyNames,Nr=Object.getOwnPropertyDescriptor,Lr=Object.defineProperty,_r=Pr(Object.hasOwnProperty),Dr=Object.is;function Zr(n,t){return n+t}function kr(n){return n-1}function qr(n,t){return n/t}function Vr(n){return n+1}function Gr(n,t){return n*t}function Jr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:Wr}=Math;function zr(n,t=0){return Wr()*(n-t)+t}function Hr(n,t){return n%t}function Kr(n){return n.reduce(((n,t)=>n-t),0)}function Qr(n){return n.reduce(((n,t)=>n+t),0)}function Xr(n,t,r){return n>t&&nr}const{sign:ne}=Math;function te(n){return 1===ne(n)}function re(n){return 0===n}const ee=Object.entries;function oe(n){if(c(n))return ee(n)}function ue(n){const t=[];return Tt(n,((n,r)=>{c(n)&&t.push(r)})),t}async function ce(n,t=i,r={}){return await Rt(n,(async(n,e,o,u,i)=>{const s=await t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function ie(n,t=i,r={}){return Tt(n,((n,e,o,u,i)=>{const s=t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function se(n,t,r={}){return Tt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function fe(n,t,r={}){return await Rt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function ae(n,t={}){if(n)return Tt(n,((n,r)=>{t[n]=r})),t}const le=(n,t)=>{if(n===t)return!0;const r=L(n),e=L(t);return r.length===e.length&&C(r,(r=>n[r]===t[r]))},he=Q("RegExp"),ge=X(he),pe=/[()[\]{}*+?^$|#.,/\\\s-]/g;function de(n){return n.replace(pe,"\\$&")}function me(n,t){return t?me(cn(n,de)):RegExp(n.join("|"))}function we(n,t){if(n){if(y(t)){const r=me(t);return se(n,((n,t)=>!r.test(t)))}if(ge(t))return se(n,((n,r)=>!t.test(r)));if(dt(t))return se(n,((n,r)=>r!==t));if(gt(t)){const r=t.toString();return se(n,((n,t)=>t!==r))}return kt(t)?se(n,((n,r)=>!t(n,r))):void 0}}const ye=(n,t,r={})=>{if(n)return s(t,(t=>{r[t]=n[t]})),r};function be(n){if(n)return L(n).length}const ve=(n,t)=>{const r={};return s(n,((n,e)=>{r[n]=t[e]})),r},Ae=n=>{const t=[],r=[];return Tt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Ee=/[ _-]+/g;function Ie(n){let t="";return n.replace(Ee," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const xe=/[ _-]+/g,Oe=/[ ]+/g;function $e(n){return n.replace(/([A-Z]+)/g," $1").replace(xe," ").trim().toLowerCase().replace(Oe,"-")}const je=/[ _-]+/g,Be=/[ ]+/g;function Ce(n){return n.replace(/([A-Z]+)/g," $1").replace(je," ").trim().toLowerCase().replace(Be,"_")}const Se=/[ _-]+/g;function Me(n){return n.replace(/([A-Z]+)/g," $1").replace(Se," ").trim().toUpperCase()}const Fe=/[ _-]+/g;function Re(n){return n.replace(/([A-Z]+)/g," $1").replace(Fe," ").trim().toLowerCase()}function Te(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function Pe(n,t=1){return n[n.length-t]}function Ue(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function Ne(n,t=1){return n.slice(0,-1*t)}function Le(n,t=1){return n.substring(t)}function _e(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function De(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function Ze(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const ke=/%(?![\da-f]{2})/gi,qe=/&/g,Ve=//g,Je=/"/g;function We(n){return decodeURIComponent(n.replace(ke,(()=>"%25")))}function ze(n){return n.replace(qe,"&").replace(Ve,"<").replace(Ge,">").replace(Je,""")}function He(n){return ze(We(n))}const Ke=/\S+/g,Qe=/\w+/g;function Xe(n){return n.match(Ke)||[]}function Ye(n){return n.match(Qe)||[]}const no=/\w+/g;function to(n){return n[0].toUpperCase()}function ro(n){return to(n)+Le(n)}function eo(n){return to(n)+Le(n).toLowerCase()}function oo(n){return n.replace(no,(n=>ro(n)))}function uo(n){return n.replace(no,(n=>eo(n)))}function co(n){return br(n)?.name}function io(n){return!!c(n)&&"[object Arguments]"===n.toString()}function so(n){return!c(n)}const fo=Q("Map"),ao=X(fo),lo=/Array/,ho="Array";function go(n){if(n){const t=co(n);if(lo.test(t)&&t!==ho)return!0}return!1}function po(n,t){if(so(n)||kt(n))return!1;if(y(n)||go(n))return!0;const r=n.length;if(!so(r)||!gt(r)||r<0)return!1;if(t){const t=L(n);return!!t&&Cr(t,((n,t)=>t>=0&>(t)))}return!0}const mo=Q("BigInt"),wo=X(mo),yo=Q("Boolean"),bo=X(yo),vo=Q("ArrayBuffer"),Ao=X(vo);function Eo(n,t){return!(!n||!t)&&n instanceof t}const Io=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function xo(n){if(c(n)){const t=n?.constructor?.name;return Io.test(t)}return!1}const Oo=Q("Date"),$o=X(Oo);function jo(n){return dt(n)||y(n)?!o(n):W(n)?!be(n):!c(n)}function Bo(n){return!1===n}const Co=Q("Float32Array"),So=X(Co),Mo=Q("Float64Array"),Fo=X(Mo),{isInteger:Ro}=Number,To=Ro,Po=Q("Int16Array"),Uo=X(Po),No=Q("Int32Array"),Lo=X(No),_o=Q("Int8Array"),Do=X(_o);function Zo(n){return c(n)&&"function"==typeof n[Symbol.iterator]}function ko(n){return!!n&&n instanceof Promise}function qo(n){return!!n&&(ko(n)||Vt(n)||Dt(n))}function Vo(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Go(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Jo(n,t){return!so(n)&&!so(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:Wo}=Number,zo=Wo;function Ho(n,t){const r=br(n),e=br(t);return r===e&&r.name===e.name}function Ko(n){return!0===n}const Qo=Q("Uint16Array"),Xo=X(Qo),Yo=Q("Uint32Array"),nu=X(Yo),tu=Q("Uint8Array"),ru=X(tu),eu=Q("Uint8ClampedArray"),ou=X(eu),uu=Q("WeakMap"),cu=X(uu),iu=void 0!==globalThis.Deno,su=void 0!==globalThis.process&&process.versions&&process.versions.node;function fu(n,t=!0){return Boolean(n)&&t}function au(n,t=!0){return!1===Boolean(n)&&t}function lu(n,t,r,e){if(c(n)){if(kt(t))return r?fr(t,r,e):t(...e);if(W(t))return t[r]=n,t}}function hu(n,t){return Bo(tn(n,t))}const gu=JSON;function pu(n,t){if(n)return gu.parse(n,t)}const du=gu.stringify;function mu(n,t,r){const e=globalThis.options||r;let o;return kt(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${du(n)}\n\t\tExpected: ${du(t)}`,e)}async function wu(n,t,r){const e=await n;return!(kt(t)&&!1===await t(e,r))&&!hu(e,t)||mu(e,t,r)}function yu(n,t,r){if(qo(n)||qo(t))return wu(n,t,r);return!(kt(t)&&!1===t(n,r))&&!hu(n,t)||mu(n,t,r)}function bu(n,t,r){const e=Ir(n,(n=>kt(n)?n.bind(t):n));return r?Ft(r,e):e}function vu(n){if(n){if(nn(n))return Wn(n);if(y(n))return t(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const Au=globalThis.structuredClone;function Eu(n){return Au(n)}function Iu(n){if(W(n)){const t=L(n),r=t.length,e={};for(let o=0;ofu(n)))}async function xu(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);c(e)&&r.push(e)}return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);c(u)&&e(u)}return o}const u=kt(o.set);for await(const[r,e]of n){const i=await t(e,r,o,n);c(i)&&(u?o.set(r,i):o[r]=i)}return o}function Ou(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);c(u)&&o(u)}return e}const o=kt(e.set);for(const[r,u]of n){const i=t(u,r,e,n);c(i)&&(o?e.set(r,i):e[r]=i)}return e}const $u=Gt(f,l,ie,ce,Ou,xu);function ju(...n){return Vt(n[0])?async function(...t){return Cr(n,(async n=>Cr(t,(async t=>n(t)))))}:function(...t){return Cr(n,(n=>Cr(t,(t=>n(t)))))}}function Bu(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=kt(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Cu(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=kt(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Su=Gt(M,F,se,fe,Bu,Cu);function Mu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Fu=Mu(s),Ru=Mu(j);function Tu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const Pu=Tu(a),Uu=Tu(B);function Nu(n,t){const r=vr(n),e=r.push||r.add;if(e&&kt(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else kt(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function Lu(n,t){const r={};return s(n,((n,e)=>{r[t[e]]=n})),r}function _u(n,t,r){if(so(n)||so(t))return!1;if(dt(n))return dt(t)?n.includes(t,r):ge(t)?t.test(n):kt(t)?Boolean(t(n)):Cr(t,(t=>Boolean(_u(n,t))));if(y(n)){if(dt(t))return n.includes(t,r);if(ge(t))return Cr(n,(n=>n.test(t)));if(y(t))return Cr(t,(t=>Boolean(_u(n,t))))}return!1}const Du=It(/\./),Zu=(n,t,r)=>(t&&!c(n[t])&&(n[t]=r),n);class ku{list=I(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,Qt),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const qu=I(ku);function Vu(n,t){return qu.set(n,t)}function Gu(){rr(setTimeout(tr,0),(n=>{qu.remove(n)}))}function Ju(n,...t){return Jt(t,(t=>{Jt(t,((t,r)=>{if(n[r]&&(W(t)||y(t)||t.forEach))return Ju(n[r],t);n[r]=t}))})),n}class Wu{static models={};constructor(n,t){c(t)?(Ft(this,t),this.modelName=n,Wu.models.set(n,t)):Ft(this,n)}}function zu(n,t){return c(t)?I(Wu,[n,t]):q(n,Wu.models)}function Hu(n,t){return[n,t]}function Ku(n,t,r){const e=n.length,o=[];for(let u=0;uC(r,(r=>tn(n[r],t[r])));function nc(n,t,r){return t&&W(n)||gt(t)&&y(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function tc(n,t,r){return gt(r)&&y(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class rc{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Tt(n,(t=>{n[t]=new rc(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new rc(r),!0)})}}const ec=()=>[],oc=()=>({}),uc=()=>"";async function cc(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ac=I(fc);class lc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function hc(n){return new lc(n)}export{Wt as Chain,ku as Intervals,Wu as Model,rc as Store,or as Timers,fc as UniqID,lc as VirtualStorage,Zr as add,Bt as after,fr as apply,me as arrayToRegex,Lu as arraysToObject,Ct as ary,yu as assert,wu as assertAsync,Ft as assign,St as before,bu as bindAll,Pr as cacheNativeMethod,Jr as calcProgress,Ie as camelCase,zt as chain,n as chunk,Ue as chunkString,vu as clear,t as clearArray,Wn as clearBuffer,Gu as clearIntervals,ir as clearTimers,Eu as clone,r as cloneArray,vr as cloneType,Iu as compact,ue as compactKeys,$u as compactMap,f as compactMapArray,l as compactMapAsyncArray,ce as compactMapAsyncObject,ie as compactMapObject,Ku as concurrent,Qu as concurrentStatus,I as construct,K as constructorName,zn as countBy,Hn as countKey,Kn as countWithoutKey,Ht as curry,Kt as curryRight,ar as debounce,kr as deduct,Lr as defProp,x as difference,qr as divide,O as drop,$ as dropRight,Jt as each,s as eachArray,a as eachAsyncArray,Rt as eachAsyncObject,Tt as eachObject,j as eachRight,B as eachRightAsync,v as ensureArray,Jn as ensureBuffer,de as escapeRegex,pe as escapeRegexRegex,Cr as every,ju as everyArg,C as everyArray,S as everyAsyncArray,Or as everyAsyncObject,$r as everyObject,Yt as falsy,Su as filter,M as filterArray,F as filterAsyncArray,fe as filterAsyncObject,se as filterObject,Xn as findIndex,Qn as findIndexCache,Yn as findItem,R as first,T as flatten,A as flattenDeep,Fu as flow,Pu as flowAsync,Uu as flowAsyncRight,Ru as flowRight,w as forEach,Pt as forEachAsync,Nu as forMap,Lt as forOf,Zt as forOfAsync,Ou as forOfCompactMap,xu as forOfCompactMapAsync,jr as forOfEvery,Br as forOfEveryAsync,Bu as forOfFilter,Cu as forOfFilterAsync,Ar as forOfMap,Er as forOfMapAsync,Gt as generateLoop,q as get,oe as getEntries,At as getFileExtension,Et as getFilename,ct as getHighest,it as getLowest,Sn as getNumberInsertIndex,Nr as getPropDesc,Ur as getPropNames,br as getType,co as getTypeName,st as groupBy,_u as has,J as hasAnyKeys,Du as hasDot,G as hasKeys,o as hasLength,_r as hasProp,c as hasValue,ze as htmlEntities,lr as ifInvoke,Zu as ifNotAssign,lu as ifValue,hr as inAsync,gr as inSync,Vr as increment,ft as indexBy,P as initial,Ne as initialString,Te as insertInRange,U as intersection,Vu as interval,qu as intervals,ae as invert,at as invoke,lt as invokeAsync,io as isArguments,y as isArray,Ao as isArrayBuffer,vo as isArrayBufferCall,po as isArrayLike,Vt as isAsync,qt as isAsyncCall,wo as isBigInt,mo as isBigIntCall,bo as isBoolean,yo as isBooleanCall,nn as isBuffer,Y as isBufferCall,Eo as isChild,xo as isCloneable,z as isConstructor,H as isConstructorFactory,Q as isConstructorNameFactory,$o as isDate,Oo as isDateCall,iu as isDeno,jo as isEmpty,tn as isEqual,So as isF32,Co as isF32Call,Fo as isF64,Mo as isF64Call,Bo as isFalse,au as isFalsy,xt as isFileCSS,Ot as isFileHTML,$t as isFileJS,jt as isFileJSON,To as isFloat,kt as isFunction,Dt as isGenerator,_t as isGeneratorCall,Uo as isI16,Po as isI16Call,Lo as isI32,No as isI32Call,Do as isI8,_o as isI8Call,Zo as isIterable,qo as isKindAsync,ao as isMap,fo as isMapCall,rn as isMatchArray,le as isMatchObject,g as isNegative,su as isNodejs,b as isNotArray,pt as isNotNumber,mt as isNotString,u as isNull,gt as isNumber,ht as isNumberCall,On as isNumberEqual,Xr as isNumberInRange,Yr as isNumberNotInRange,Vo as isParent,W as isPlainObject,te as isPositive,Go as isPrimitive,ko as isPromise,ge as isRegex,he as isRegexCall,Jo as isRelated,zo as isSafeInt,Dr as isSame,Ho as isSameType,Nt as isSet,Ut as isSetCall,dt as isString,Ko as isTrue,fu as isTruthy,X as isTypeFactory,go as isTypedArray,Xo as isU16,Qo as isU16Call,nu as isU32,Yo as isU32Call,ru as isU8,ou as isU8C,eu as isU8CCall,tu as isU8Call,e as isUndefined,cu as isWeakMap,uu as isWeakMapCall,re as isZero,pu as jsonParse,$e as kebabCase,L as keys,on as largest,un as last,Re as lowerCase,Ir as map,cn as mapArray,sn as mapAsyncArray,wr as mapAsyncObject,yr as mapObject,fn as mapRightArray,an as mapWhile,Ju as merge,zu as model,Gr as multiply,pr as negate,so as noValue,tr as noop,hu as notEqual,dr as nthArg,Mt as objectAssign,ee as objectEntries,be as objectSize,we as omit,mr as once,Rn as onlyUnique,xr as over,Sr as overEvery,Hu as pair,gn as partition,ye as pick,yt as pluck,wt as pluckObject,Xu as promise,Yu as propertyMatch,zr as randomFloat,En as randomInt,m as range,d as rangeDown,p as rangeUp,We as rawURLDecode,Mr as reArg,It as regexTestFactory,Hr as remainder,mn as remove,wn as removeBy,_e as replaceList,yn as rest,Le as restString,i as returnValue,bn as right,Pe as rightString,jn as sample,He as sanitize,nc as setKey,tc as setValue,$n as shuffle,Cn as smallest,Ce as snakeCase,et as sortCollectionAlphabetically,vt as sortCollectionAlphabeticallyReverse,ut as sortCollectionAscending,ot as sortCollectionAscendingFilter,tt as sortCollectionDescending,nt as sortCollectionDescendingFilter,hn as sortNumberAscending,dn as sortNumberDescening,rt as sortObjectsAlphabetically,bt as sortObjectsAlphabeticallyReverse,Tn as sortUnique,du as stringify,ec as stubArray,nr as stubFalse,oc as stubObject,uc as stubString,Xt as stubTrue,ln as subtract,Kr as subtractAll,pn as subtractReverse,Qr as sumAll,Mn as take,Fn as takeRight,Fr as throttle,cr as timer,ur as timers,rr as times,cc as timesAsync,er as timesMap,ic as timesMapAsync,xn as toArray,k as toPath,sc as toggle,Xe as tokenize,De as truncate,Ze as truncateRight,Qt as truth,Gn as unZip,Ae as unZipObject,Un as union,ac as uniqID,Pn as unique,Nn as untilFalseArray,Ln as untilTrueArray,Me as upperCase,ro as upperFirst,oo as upperFirstAll,to as upperFirstLetter,eo as upperFirstOnly,uo as upperFirstOnlyAll,hc as virtualStorage,_n as whileCompactMap,Dn as whileEachArray,Zn as whileMapArray,kn as without,Ye as words,Rr as wrap,qn as xor,Vn as zip,ve as zipObject}; +function n(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function t(n){return n.length=0,n}function r(n){return n.slice()}function e(n){return void 0===n}function o(n){return Boolean(n.length)}function u(n){return null===n}function c(n){return!e(n)&&!u(n)}function i(n){return n}function s(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const f=t.call(e,n,u,r,i,s,o);c(f)&&r.push(f)})):s(n,((n,u,i,s)=>{const f=t(n,u,r,i,s,e,o);c(f)&&r.push(f)})),r}async function a(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const u=await t(n,e,r,o);c(u)&&r.push(u)})),r}const{sign:h}=Math;function g(n){return-1===h(n)}function p(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function m(n,t,r=1,e=[]){return g(r)?e:n{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function O(n,t=1,r=n.length){return n.splice(t,r)}const $=(n,t=1,r=n.length)=>O(n,0,r-t);function j(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function B(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function C(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function F(n,t,r=[],e){return await a(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function R(n,t){return t?n.slice(0,t):n[0]}function T(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(v(t))),[]);return r}function P(n){return n.slice(0,n.length-1)}function U(n,...t){return f(n,(n=>{if(C(t,(t=>t.includes(n))))return n}))}function N(n,t,r){if(!n)return;const e=n.length;if(c(r))for(let o=0;o(r=r[n],c(r)))),r}const G=Object.hasOwn;function J(n,...t){if(n)return C(t,(t=>{const r=q(t);if(1===r.length)return G(n,t);{const t=r.pop(),e=V(r,n);return!!e&&G(e,t)}}))}function W(n,...t){if(n)return Boolean(t.find((t=>{const r=q(t);if(1===r.length)return G(n,t);{const t=r.pop(),e=V(r,n);return!!e&&G(e,t)}})))}const z=n=>!!c(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function H(n,t){return n?.constructor===t||!1}function K(n){return t=>H(t,n)}function Q(n){return n?.constructor?.name}function X(n){return t=>Q(t)===n||!1}function Y(n){return function(t,...r){return r?n(t)&&C(r,n):n(t)}}const nn=X("Buffer"),tn=Y(nn),rn=(n,t)=>{if(n===t)return!0;if(tn(n))return n.equals(t);if(n.toString()===t.toString())if(z(n)){const r=_(n);if(J(t,r))return C(r,(r=>rn(n[r],t[r])))}else if(y(n)&&n.length===t.length)return C(n,((n,r)=>rn(n,t[r])));return!1};function en(n,t){return n.length===t.length&&C(n,((n,r)=>rn(t[r],n)))}const on=Math.max;function un(n){return on(...n)}function cn(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function sn(n,t,r=[],e,o){return c(e)?s(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):s(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function fn(n,t){const r=[];return await a(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function an(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function ln(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function dn(n,t){return t-n}function mn(n){return n.sort(dn)}function wn(n,t){let r=n.length;for(let e=0;er)return jn(n);if(1===t)return[n[In(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Fn(n,t=1){return n.slice(0,t)}function Rn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Tn(n,t,r){return r.indexOf(n)===t}function Pn(n,t,r){return n!==r[t-1]}function Un(n,t){return t?n.filter(Pn):n.filter(Tn)}function Nn(...n){return Un(A(n))}function Ln(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function Vn(...n){const t=I(Map),r=[];return 2===n.length?x(n[0],n[1]):(s(n,((n,r)=>{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Gn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Jn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Wn(n){return tn(n)&&n||c(n)&&Buffer.from(n)||Buffer.alloc(0)}function zn(n){return n.fill(0),n}function Hn(n,t){const r={};let e;return s(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function Kn(n,t){let r=0;return s(n,(n=>{n[t]&&r++})),r}function Qn(n,t){let r=0;return s(n,(n=>{n[t]||r++})),r}function Xn(n,t,r,e,o){if(n[o]===e)return!0}function Yn(n,t,r="id"){const e=n.findIndex(((n,e)=>Xn(n,0,0,t,r)));return-1!==e&&e}function nt(n,t,r="id"){const e=n.find(((n,e)=>Xn(n,0,0,t,r)));return-1!==e&&e}function tt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function rt(n,t="id",r){return n.sort(((n,e)=>tt(n,e,t,r)))}function et(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function ot(n,t="id",r){return n.sort(((n,e)=>et(n,e,t,r)))}function ut(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function ct(n,t="id",r){return n.sort(((n,e)=>ut(n,e,t,r)))}function it(n,t="id"){return ct(n,t)[0]}function st(n,t){return rt(n,t,!1)[0]}function ft(n,t){const r={};return s(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function at(n,t="id"){const r={};return s(n,(n=>{r[n[t]]=n})),r}function lt(n,t,r,e){return sn(n,e?(n,o)=>n[t].call(e,r):(n,e)=>n[t](r))}function ht(n,t,r,e){return fn(n,e?n=>n[t].call(e,r):async n=>n[t](r))}const gt=X("Number"),pt=Y(gt);function dt(n){return!pt(n)}const mt=K(String);function wt(n){return!mt(n)}function yt(n,t){if(n)return mt(t)?n[t]:sn(t,(t=>n[t]))}function bt(n,t){return sn(n,(n=>yt(n,t)))}function vt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function At(n,t="id",r){return n.sort(((n,e)=>vt(n,e,t,r)))}function Et(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function It(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function xt(n){return t=>!!c(t)&&n.test(t)}const Ot=xt(/\.css$/),$t=xt(/\.html$/),jt=xt(/\.js$/),Bt=xt(/\.json$/);function Ct(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function St(n,t){return(...r)=>n(...r.splice(0,t))}function Mt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Ft=Object.assign;function Rt(n,...t){if(c(n))return Ft(n,...t)}const Tt=async(n,t,r,e)=>{if(!n)return;const o=_(n);return c(r)?await a(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await a(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Pt(n,t,r,e){if(!n)return;const o=_(n);return c(r)?s(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):s(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function Ut(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!c(n)&&n instanceof Function,Vt=X("AsyncFunction"),Gt=Y(Vt);function Jt(n,t,r,e,o,u){return(i,s,f,a,l)=>{let h;const g=Gt(s);if(c(i)&&s)return h=y(i)?g?t:n:z(i)||qt(i)?g?e:r:o?g?u:o:Zt(i)?u:g?e:r,h(i,s,f,a,l)}}const Wt=Jt(s,a,Pt,Tt,_t,kt);class zt{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Wt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function Ht(n){return I(zt,[n])}function Kt(n,r=n.length){const e=[],o=(...u)=>{if(e.push(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}function Qt(n,r=n.length){const e=[],o=(...u)=>{if(e.unshift(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}const Xt=!0,Yt=()=>Xt,nr=!1,tr=()=>nr,rr=()=>{};function er(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,Xt),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const cr=I(ur);function ir(n,t){return cr.set(n,t)}function sr(){er(setTimeout(rr,0),(n=>{cr.remove(n)}))}const fr=Reflect.apply;function ar(n,t,r){if(qt(n))return fr(n,t,r)}function lr(n,t){function r(...n){r.id!==nr&&cr.remove(r.id),r.id=ir((()=>{r.callable(...n),r.id=nr}),t)}return r.id=nr,r.callable=n.bind(r),r.clear=()=>{r.id!==nr&&(cr.remove(r.id),r.id=nr)},r}function hr(n,...t){if(qt(n))return n(...t)}async function gr(n,t){const r=n.length;for(let e=0;eWt(n,(n=>{n(t)}));function dr(n){return(...t)=>!n(...t)}function mr(n=0){return(...t)=>t[n]}const wr=n=>{let t;return(...r)=>(c(t)||(t=n(...r)),t)};async function yr(n,t,r={}){if(n)return await Tt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function br(n,t,r={},e,o){if(n)return c(e)?Pt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Pt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function vr(n){return n?.constructor}function Ar(n,t=[]){const r=vr(n);return r===Function&&"function"===r.name?function(){}:I(r,t)}function Er(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=qt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Ir(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=qt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const xr=Jt(sn,fn,br,yr,Er,Ir);function Or(n){return(...t)=>xr(n,(n=>n(...t)))}async function $r(n,t){if(!n)return;return S(_(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function jr(n,t){if(!n)return;return C(_(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function Br(n,t=i){if(y(n)||Lt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Cr(n,t=i,r){if(Zt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(y(n)||Lt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Sr=Jt(C,S,jr,$r,Br,Cr);function Mr(n){return t=>Sr(n,(n=>n(t)))}function Fr(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Rr(n,t){function r(...n){r.id?r.shouldThrottle=Xt:(r.callable(...n),r.id=ir((()=>{r.shouldThrottle&&r.callable(...n),r.id=nr}),t))}return r.id=nr,r.callable=n.bind(r),r.clear=()=>{cr.remove(r.id),r.id=nr},r}function Tr(n,t){return(...r)=>t(n,...r)}const Pr=Function.prototype;function Ur(n){return Pr.call.bind(n)}const Nr=Object.getOwnPropertyNames,Lr=Object.getOwnPropertyDescriptor,_r=Object.defineProperty,Dr=Ur(Object.hasOwnProperty),Zr=Object.is;function kr(n,t){return n+t}function qr(n){return n-1}function Vr(n,t){return n/t}function Gr(n){return n+1}function Jr(n,t){return n*t}function Wr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:zr}=Math;function Hr(n,t=0){return zr()*(n-t)+t}function Kr(n,t){return n%t}function Qr(n){return n.reduce(((n,t)=>n-t),0)}function Xr(n){return n.reduce(((n,t)=>n+t),0)}function Yr(n,t,r){return n>t&&nr}const{sign:te}=Math;function re(n){return 1===te(n)}function ee(n){return 0===n}const oe=Object.entries;function ue(n){if(c(n))return oe(n)}function ce(n){const t=[];return Pt(n,((n,r)=>{c(n)&&t.push(r)})),t}async function ie(n,t=i,r={}){return await Tt(n,(async(n,e,o,u,i)=>{const s=await t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function se(n,t=i,r={}){return Pt(n,((n,e,o,u,i)=>{const s=t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function fe(n,t,r={}){return Pt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function ae(n,t,r={}){return await Tt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function le(n,t={}){if(n)return Pt(n,((n,r)=>{t[n]=r})),t}const he=(n,t)=>{if(n===t)return!0;const r=_(n),e=_(t);return r.length===e.length&&C(r,(r=>n[r]===t[r]))},ge=X("RegExp"),pe=Y(ge),de=/[()[\]{}*+?^$|#.,/\\\s-]/g;function me(n){return n.replace(de,"\\$&")}function we(n,t){return t?we(sn(n,me)):RegExp(n.join("|"))}function ye(n,t){if(n){if(y(t)){const r=we(t);return fe(n,((n,t)=>!r.test(t)))}if(pe(t))return fe(n,((n,r)=>!t.test(r)));if(mt(t))return fe(n,((n,r)=>r!==t));if(pt(t)){const r=t.toString();return fe(n,((n,t)=>t!==r))}return qt(t)?fe(n,((n,r)=>!t(n,r))):void 0}}const be=(n,t,r={})=>{if(n)return s(t,(t=>{r[t]=n[t]})),r};function ve(n){if(n)return _(n).length}const Ae=(n,t)=>{const r={};return s(n,((n,e)=>{r[n]=t[e]})),r},Ee=n=>{const t=[],r=[];return Pt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Ie=/[ _-]+/g;function xe(n){let t="";return n.replace(Ie," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const Oe=/[ _-]+/g,$e=/[ ]+/g;function je(n){return n.replace(/([A-Z]+)/g," $1").replace(Oe," ").trim().toLowerCase().replace($e,"-")}const Be=/[ _-]+/g,Ce=/[ ]+/g;function Se(n){return n.replace(/([A-Z]+)/g," $1").replace(Be," ").trim().toLowerCase().replace(Ce,"_")}const Me=/[ _-]+/g;function Fe(n){return n.replace(/([A-Z]+)/g," $1").replace(Me," ").trim().toUpperCase()}const Re=/[ _-]+/g;function Te(n){return n.replace(/([A-Z]+)/g," $1").replace(Re," ").trim().toLowerCase()}function Pe(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function Ue(n,t=1){return n[n.length-t]}function Ne(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function Le(n,t=1){return n.slice(0,-1*t)}function _e(n,t=1){return n.substring(t)}function De(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function Ze(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function ke(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const qe=/%(?![\da-f]{2})/gi,Ve=/&/g,Ge=//g,We=/"/g;function ze(n){return decodeURIComponent(n.replace(qe,(()=>"%25")))}function He(n){return n.replace(Ve,"&").replace(Ge,"<").replace(Je,">").replace(We,""")}function Ke(n){return He(ze(n))}const Qe=/\S+/g,Xe=/\w+/g;function Ye(n){return n.match(Qe)||[]}function no(n){return n.match(Xe)||[]}const to=/\w+/g;function ro(n){return n[0].toUpperCase()}function eo(n){return ro(n)+_e(n)}function oo(n){return ro(n)+_e(n).toLowerCase()}function uo(n){return n.replace(to,(n=>eo(n)))}function co(n){return n.replace(to,(n=>oo(n)))}function io(n){return vr(n)?.name}function so(n){return!!c(n)&&"[object Arguments]"===n.toString()}function fo(n){return!c(n)}const ao=X("Map"),lo=Y(ao),ho=/Array/,go="Array";function po(n){if(n){const t=io(n);if(ho.test(t)&&t!==go)return!0}return!1}function mo(n,t){if(fo(n)||qt(n))return!1;if(y(n)||po(n))return!0;const r=n.length;if(!fo(r)||!pt(r)||r<0)return!1;if(t){const t=_(n);return!!t&&Sr(t,((n,t)=>t>=0&&pt(t)))}return!0}const wo=X("BigInt"),yo=Y(wo),bo=X("Boolean"),vo=Y(bo),Ao=X("ArrayBuffer"),Eo=Y(Ao);function Io(n,t){return!(!n||!t)&&n instanceof t}const xo=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function Oo(n){if(c(n)){const t=n?.constructor?.name;return xo.test(t)}return!1}const $o=X("Date"),jo=Y($o);function Bo(n){return mt(n)||y(n)?!o(n):z(n)?!ve(n):!c(n)}function Co(n){return!1===n}const So=X("Float32Array"),Mo=Y(So),Fo=X("Float64Array"),Ro=Y(Fo),{isInteger:To}=Number,Po=To,Uo=X("Int16Array"),No=Y(Uo),Lo=X("Int32Array"),_o=Y(Lo),Do=X("Int8Array"),Zo=Y(Do);function ko(n){return c(n)&&"function"==typeof n[Symbol.iterator]}function qo(n){return!!n&&n instanceof Promise}function Vo(n){return!!n&&(qo(n)||Gt(n)||Zt(n))}function Go(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Jo(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Wo(n,t){return!fo(n)&&!fo(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:zo}=Number,Ho=zo;function Ko(n,t){const r=vr(n),e=vr(t);return r===e&&r.name===e.name}function Qo(n){return!0===n}const Xo=X("Uint16Array"),Yo=Y(Xo),nu=X("Uint32Array"),tu=Y(nu),ru=X("Uint8Array"),eu=Y(ru),ou=X("Uint8ClampedArray"),uu=Y(ou),cu=X("WeakMap"),iu=Y(cu),su=void 0!==globalThis.Deno,fu=void 0!==globalThis.process&&process.versions&&process.versions.node;function au(n,t=!0){return Boolean(n)&&t}function lu(n,t=!0){return!1===Boolean(n)&&t}function hu(n,t,r,e){if(c(n)){if(qt(t))return r?ar(t,r,e):t(...e);if(z(t))return t[r]=n,t}}function gu(n,t){return Co(rn(n,t))}const pu=JSON;function du(n,t){if(n)return pu.parse(n,t)}const mu=pu.stringify;function wu(n,t,r){const e=globalThis.options||r;let o;return qt(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${mu(n)}\n\t\tExpected: ${mu(t)}`,e)}async function yu(n,t,r){const e=await n;return!(qt(t)&&!1===await t(e,r))&&!gu(e,t)||wu(e,t,r)}function bu(n,t,r){if(Vo(n)||Vo(t))return yu(n,t,r);return!(qt(t)&&!1===t(n,r))&&!gu(n,t)||wu(n,t,r)}function vu(n,t,r){const e=xr(n,(n=>qt(n)?n.bind(t):n));return r?Rt(r,e):e}function Au(n){if(n){if(tn(n))return zn(n);if(y(n))return t(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const Eu=globalThis.structuredClone;function Iu(n){return Eu(n)}function xu(n){if(z(n)){const t=_(n),r=t.length,e={};for(let o=0;oau(n)))}async function Ou(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);c(e)&&r.push(e)}return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);c(u)&&e(u)}return o}const u=qt(o.set);for await(const[r,e]of n){const i=await t(e,r,o,n);c(i)&&(u?o.set(r,i):o[r]=i)}return o}function $u(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);c(u)&&o(u)}return e}const o=qt(e.set);for(const[r,u]of n){const i=t(u,r,e,n);c(i)&&(o?e.set(r,i):e[r]=i)}return e}const ju=Jt(f,l,se,ie,$u,Ou);function Bu(...n){return Gt(n[0])?async function(...t){return Sr(n,(async n=>Sr(t,(async t=>n(t)))))}:function(...t){return Sr(n,(n=>Sr(t,(t=>n(t)))))}}function Cu(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=qt(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Su(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=qt(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Mu=Jt(M,F,fe,ae,Cu,Su);function Fu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Ru=Fu(s),Tu=Fu(j);function Pu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const Uu=Pu(a),Nu=Pu(B);function Lu(n,t){const r=Ar(n),e=r.push||r.add;if(e&&qt(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else qt(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function _u(n,t){const r={};return s(n,((n,e)=>{r[t[e]]=n})),r}function Du(n,t,r){if(fo(n)||fo(t))return!1;if(mt(n))return mt(t)?n.includes(t,r):pe(t)?t.test(n):qt(t)?Boolean(t(n)):Sr(t,(t=>Boolean(Du(n,t))));if(y(n)){if(mt(t))return n.includes(t,r);if(pe(t))return Sr(n,(n=>n.test(t)));if(y(t))return Sr(t,(t=>Boolean(Du(n,t))))}return!1}const Zu=xt(/\./),ku=(n,t,r)=>(t&&!c(n[t])&&(n[t]=r),n);class qu{list=I(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,Xt),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const Vu=I(qu);function Gu(n,t){return Vu.set(n,t)}function Ju(){er(setTimeout(rr,0),(n=>{Vu.remove(n)}))}function Wu(n,...t){return Wt(t,(t=>{Wt(t,((t,r)=>{if(n[r]&&(z(t)||y(t)||t.forEach))return Wu(n[r],t);n[r]=t}))})),n}class zu{static models={};constructor(n,t){c(t)?(Rt(this,t),this.modelName=n,zu.models.set(n,t)):Rt(this,n)}}function Hu(n,t){return c(t)?I(zu,[n,t]):V(n,zu.models)}function Ku(n,t){return[n,t]}function Qu(n,t,r){const e=n.length,o=[];for(let u=0;uC(r,(r=>rn(n[r],t[r])));function tc(n,t,r){return t&&z(n)||pt(t)&&y(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function rc(n,t,r){return pt(r)&&y(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class ec{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Pt(n,(t=>{n[t]=new ec(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new ec(r),!0)})}}const oc=()=>[],uc=()=>({}),cc=()=>"";async function ic(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const lc=I(ac);class hc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function gc(n){return new hc(n)}export{zt as Chain,qu as Intervals,zu as Model,ec as Store,ur as Timers,ac as UniqID,hc as VirtualStorage,kr as add,Ct as after,ar as apply,we as arrayToRegex,_u as arraysToObject,St as ary,bu as assert,yu as assertAsync,Rt as assign,Mt as before,vu as bindAll,Ur as cacheNativeMethod,Wr as calcProgress,xe as camelCase,Ht as chain,n as chunk,Ne as chunkString,Au as clear,t as clearArray,zn as clearBuffer,Ju as clearIntervals,sr as clearTimers,Iu as clone,r as cloneArray,Ar as cloneType,xu as compact,ce as compactKeys,ju as compactMap,f as compactMapArray,l as compactMapAsyncArray,ie as compactMapAsyncObject,se as compactMapObject,Qu as concurrent,Xu as concurrentStatus,I as construct,Q as constructorName,Hn as countBy,Kn as countKey,Qn as countWithoutKey,Kt as curry,Qt as curryRight,lr as debounce,qr as deduct,_r as defProp,x as difference,Vr as divide,O as drop,$ as dropRight,Wt as each,s as eachArray,a as eachAsyncArray,Tt as eachAsyncObject,Pt as eachObject,j as eachRight,B as eachRightAsync,v as ensureArray,Wn as ensureBuffer,me as escapeRegex,de as escapeRegexRegex,Sr as every,Bu as everyArg,C as everyArray,S as everyAsyncArray,$r as everyAsyncObject,jr as everyObject,nr as falsy,Mu as filter,M as filterArray,F as filterAsyncArray,ae as filterAsyncObject,fe as filterObject,Yn as findIndex,Xn as findIndexCache,nt as findItem,R as first,T as flatten,A as flattenDeep,Ru as flow,Uu as flowAsync,Nu as flowAsyncRight,Tu as flowRight,w as forEach,Ut as forEachAsync,Lu as forMap,_t as forOf,kt as forOfAsync,$u as forOfCompactMap,Ou as forOfCompactMapAsync,Br as forOfEvery,Cr as forOfEveryAsync,Cu as forOfFilter,Su as forOfFilterAsync,Er as forOfMap,Ir as forOfMapAsync,Jt as generateLoop,V as get,ue as getEntries,Et as getFileExtension,It as getFilename,it as getHighest,st as getLowest,Mn as getNumberInsertIndex,Lr as getPropDesc,Nr as getPropNames,vr as getType,io as getTypeName,ft as groupBy,Du as has,W as hasAnyKeys,Zu as hasDot,J as hasKeys,o as hasLength,Dr as hasProp,c as hasValue,He as htmlEntities,hr as ifInvoke,ku as ifNotAssign,hu as ifValue,gr as inAsync,pr as inSync,Gr as increment,at as indexBy,P as initial,Le as initialString,Pe as insertInRange,U as intersection,Gu as interval,Vu as intervals,le as invert,N as invokeArray,lt as invokeCollection,ht as invokeCollectionAsync,so as isArguments,y as isArray,Eo as isArrayBuffer,Ao as isArrayBufferCall,mo as isArrayLike,Gt as isAsync,Vt as isAsyncCall,yo as isBigInt,wo as isBigIntCall,vo as isBoolean,bo as isBooleanCall,tn as isBuffer,nn as isBufferCall,Io as isChild,Oo as isCloneable,H as isConstructor,K as isConstructorFactory,X as isConstructorNameFactory,jo as isDate,$o as isDateCall,su as isDeno,Bo as isEmpty,rn as isEqual,Mo as isF32,So as isF32Call,Ro as isF64,Fo as isF64Call,Co as isFalse,lu as isFalsy,Ot as isFileCSS,$t as isFileHTML,jt as isFileJS,Bt as isFileJSON,Po as isFloat,qt as isFunction,Zt as isGenerator,Dt as isGeneratorCall,No as isI16,Uo as isI16Call,_o as isI32,Lo as isI32Call,Zo as isI8,Do as isI8Call,ko as isIterable,Vo as isKindAsync,lo as isMap,ao as isMapCall,en as isMatchArray,he as isMatchObject,g as isNegative,fu as isNodejs,b as isNotArray,dt as isNotNumber,wt as isNotString,u as isNull,pt as isNumber,gt as isNumberCall,$n as isNumberEqual,Yr as isNumberInRange,ne as isNumberNotInRange,Go as isParent,z as isPlainObject,re as isPositive,Jo as isPrimitive,qo as isPromise,pe as isRegex,ge as isRegexCall,Wo as isRelated,Ho as isSafeInt,Zr as isSame,Ko as isSameType,Lt as isSet,Nt as isSetCall,mt as isString,Qo as isTrue,au as isTruthy,Y as isTypeFactory,po as isTypedArray,Yo as isU16,Xo as isU16Call,tu as isU32,nu as isU32Call,eu as isU8,uu as isU8C,ou as isU8CCall,ru as isU8Call,e as isUndefined,iu as isWeakMap,cu as isWeakMapCall,ee as isZero,du as jsonParse,je as kebabCase,_ as keys,un as largest,cn as last,Te as lowerCase,xr as map,sn as mapArray,fn as mapAsyncArray,yr as mapAsyncObject,br as mapObject,an as mapRightArray,ln as mapWhile,Wu as merge,Hu as model,Jr as multiply,dr as negate,fo as noValue,rr as noop,gu as notEqual,mr as nthArg,Ft as objectAssign,oe as objectEntries,ve as objectSize,ye as omit,wr as once,Tn as onlyUnique,Or as over,Mr as overEvery,Ku as pair,pn as partition,be as pick,bt as pluck,yt as pluckObject,Yu as promise,nc as propertyMatch,Hr as randomFloat,In as randomInt,m as range,d as rangeDown,p as rangeUp,ze as rawURLDecode,Fr as reArg,xt as regexTestFactory,Kr as remainder,wn as remove,yn as removeBy,De as replaceList,bn as rest,_e as restString,i as returnValue,vn as right,Ue as rightString,Bn as sample,Ke as sanitize,tc as setKey,rc as setValue,jn as shuffle,Sn as smallest,Se as snakeCase,ot as sortCollectionAlphabetically,At as sortCollectionAlphabeticallyReverse,ct as sortCollectionAscending,ut as sortCollectionAscendingFilter,rt as sortCollectionDescending,tt as sortCollectionDescendingFilter,gn as sortNumberAscending,mn as sortNumberDescening,et as sortObjectsAlphabetically,vt as sortObjectsAlphabeticallyReverse,Pn as sortUnique,mu as stringify,oc as stubArray,tr as stubFalse,uc as stubObject,cc as stubString,Yt as stubTrue,hn as subtract,Qr as subtractAll,dn as subtractReverse,Xr as sumAll,Fn as take,Rn as takeRight,Rr as throttle,ir as timer,cr as timers,er as times,ic as timesAsync,or as timesMap,sc as timesMapAsync,On as toArray,q as toPath,fc as toggle,Ye as tokenize,Ze as truncate,ke as truncateRight,Xt as truth,Jn as unZip,Ee as unZipObject,Nn as union,lc as uniqID,Un as unique,Ln as untilFalseArray,_n as untilTrueArray,Fe as upperCase,eo as upperFirst,uo as upperFirstAll,ro as upperFirstLetter,oo as upperFirstOnly,co as upperFirstOnlyAll,gc as virtualStorage,Dn as whileCompactMap,Zn as whileEachArray,kn as whileMapArray,qn as without,no as words,Tr as wrap,Vn as xor,Gn as zip,Ae as zipObject}; //# sourceMappingURL=basic.js.map diff --git a/github/module/browser/index.js b/github/module/browser/index.js index eca9e620..f043b423 100644 --- a/github/module/browser/index.js +++ b/github/module/browser/index.js @@ -1,2 +1,2 @@ -function t(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r}function n(t){return t.length=0,t}function r(t){return t.slice()}function e(t){return void 0===t}function o(t){return Boolean(t.length)}function c(t){return null===t}function u(t){return!e(t)&&!c(t)}function i(t){return t}function s(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const f=n.call(e,t,c,r,i,s,o);u(f)&&r.push(f)})):s(t,((t,c,i,s)=>{const f=n(t,c,r,i,s,e,o);u(f)&&r.push(f)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const c=await n(t,e,r,o);u(c)&&r.push(c)})),r}const{sign:h}=Math;function d(t){return-1===h(t)}function g(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function m(t,n,r=1,e=[]){return d(r)?e:t{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function $(t,n=1,r=t.length){return t.splice(n,r)}const S=(t,n=1,r=t.length)=>$(t,0,r-n);function C(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function j(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function B(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,c,u,e)&&r.push(t)})),r}async function L(t,n,r=[],e){return await a(t,(async(t,o,c,u)=>{!0===await n(t,o,r,c,u,e)&&r.push(t)})),r}function T(t,n){return n?t.slice(0,n):t[0]}function M(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(v(n))),[]);return r}function R(t){return t.slice(0,t.length-1)}function N(t,...n){return f(t,(t=>{if(B(n,(n=>n.includes(t))))return t}))}const P=Object.keys;function U(t){if(t)return P(t)}const _=/\.|\[/,k=/]/g,D="";function H(t){return t.replace(k,D).split(_)}function W(t,n){if(!n)return!1;let r=n;return B(y(t)?t:H(t),(t=>(r=r[t],u(r)))),r}const Z=Object.hasOwn;function q(t,...n){if(t)return B(n,(n=>{const r=H(n);if(1===r.length)return Z(t,n);{const n=r.pop(),e=W(r,t);return!!e&&Z(e,n)}}))}function z(t,...n){if(t)return Boolean(n.find((n=>{const r=H(n);if(1===r.length)return Z(t,n);{const n=r.pop(),e=W(r,t);return!!e&&Z(e,n)}})))}const G=t=>!!u(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function V(t,n){return t?.constructor===n||!1}function J(t){return n=>V(n,t)}function K(t){return t?.constructor?.name}function Q(t){return n=>K(n)===t||!1}function X(t){return function(n,...r){return r?t(n)&&B(r,t):t(n)}}const Y=Q("Buffer"),tt=X(Y),nt=(t,n)=>{if(t===n)return!0;if(tt(t))return t.equals(n);if(t.toString()===n.toString())if(G(t)){const r=U(t);if(q(n,r))return B(r,(r=>nt(t[r],n[r])))}else if(y(t)&&t.length===n.length)return B(t,((t,r)=>nt(t,n[r])));return!1};function rt(t,n){return t.length===n.length&&B(t,((t,r)=>nt(n[r],t)))}const et=Math.max;function ot(t){return et(...t)}function ct(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]}function ut(t,n,r=[],e,o){return u(e)?s(t,((t,c,u,i)=>{r[c]=n.call(e,t,c,r,u,i,o)})):s(t,((t,e,c,u)=>{r[e]=n(t,e,r,c,u,o)})),r}async function it(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function st(t,n,r=[],e){let o=0;const c=t.length;for(let u=c-1;u>=0;u--)r[o]=n(t[u],u,t,c,e),o++;return r}function ft(t,n,r=[],e){const o=t.length;for(let c=0;c{if(n(t,e))return t;r.push(t)})),r]}function dt(t,n){return n-t}function gt(t){return t.sort(dt)}function pt(t,n){let r=t.length;for(let e=0;er)return $t(t);if(1===n)return[t[At(r-1,0)]];const e=[],o={};let c,u=0;for(;u(r=e,n>=t&&(r=e+1,!0)))),r}function Ot(t,n=1){return t.slice(0,n)}function Ft(t,n=1){const r=t.length;return t.slice(r-n,r)}function Lt(t,n,r){return r.indexOf(t)===n}function Tt(t,n,r){return t!==r[n-1]}function Mt(t,n){return n?t.filter(Tt):t.filter(Lt)}function Rt(...t){return Mt(A(t))}function Nt(t,n){const r=t.length;for(let e=0;e!r.has(t)))}function Ht(...t){const n=I(Map),r=[];return 2===t.length?x(t[0],t[1]):(s(t,((t,r)=>{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&r.push(t.child)})),r)}function Wt(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function Zt(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function qt(t){return tt(t)&&t||u(t)&&Buffer.from(t)||Buffer.alloc(0)}function zt(t){return t.fill(0),t}function Gt(t,n){const r={};let e;return s(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r}function Vt(t,n){let r=0;return s(t,(t=>{t[n]&&r++})),r}function Jt(t,n){let r=0;return s(t,(t=>{t[n]||r++})),r}function Kt(t,n,r,e,o){if(t[o]===e)return!0}function Qt(t,n,r="id"){const e=t.findIndex(((t,e)=>Kt(t,0,0,n,r)));return-1!==e&&e}function Xt(t,n,r="id"){const e=t.find(((t,e)=>Kt(t,0,0,n,r)));return-1!==e&&e}function Yt(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?-1:0:1:-1}function tn(t,n="id",r){return t.sort(((t,e)=>Yt(t,e,n,r)))}function nn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):o.localeCompare(c)}function rn(t,n="id",r){return t.sort(((t,e)=>nn(t,e,n,r)))}function en(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?1:0:-1:1}function on(t,n="id",r){return t.sort(((t,e)=>en(t,e,n,r)))}function cn(t,n="id"){return on(t,n)[0]}function un(t,n){return tn(t,n,!1)[0]}function sn(t,n){const r={};return s(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r}function fn(t,n="id"){const r={};return s(t,(t=>{r[t[n]]=t})),r}function an(t,n,r){return ut(t,((t,e)=>t[n](r,e)))}function ln(t,n,r){return it(t,(async(t,e)=>t[n](r,e)))}const hn=Q("Number"),dn=X(hn);function gn(t){return!dn(t)}const pn=J(String);function mn(t){return!pn(t)}function wn(t,n){if(t)return pn(n)?t[n]:ut(n,(n=>t[n]))}function yn(t,n){return ut(t,(t=>wn(t,n)))}function bn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c.localeCompare(o)}function vn(t,n="id",r){return t.sort(((t,e)=>bn(t,e,n,r)))}function An(t){if(t)return t.substring(t.lastIndexOf(".")+1)}function En(t){if(t)return t.substring(t.lastIndexOf("/")+1)}function In(t){return n=>!!u(n)&&t.test(n)}const xn=In(/\.css$/),$n=In(/\.html$/),Sn=In(/\.js$/),Cn=In(/\.json$/);function jn(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)}function Bn(t,n){return(...r)=>t(...r.splice(0,n))}function On(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)}const Fn=Object.assign;function Ln(t,...n){if(u(t))return Fn(t,...n)}const Tn=async(t,n,r,e)=>{if(!t)return;const o=U(t);return u(r)?await a(o,((c,u,i,s)=>n.call(r,t[c],c,t,s,o,e))):await a(o,((r,c,u,i)=>n(t[r],r,t,i,o,e))),t};function Mn(t,n,r,e){if(!t)return;const o=U(t);return u(r)?s(o,((o,c,u,i)=>{n.call(r,t[o],o,t,i,u,e)})):s(o,((r,o,c,u)=>{n(t[r],r,t,u,c,e)})),t}async function Rn(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t!!u(t)&&t instanceof Function,Wn=Q("AsyncFunction"),Zn=X(Wn);function qn(t,n,r,e,o,c){return(i,s,f,a,l)=>{let h;const d=Zn(s);if(u(i)&&s)return h=y(i)?d?n:t:G(i)||Hn(i)?d?e:r:o?d?c:o:kn(i)?c:d?e:r,h(i,s,f,a,l)}}const zn=qn(s,a,Mn,Tn,Un,Dn);class Gn{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;zn(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}function Vn(t){return I(Gn,[t])}function Jn(t,r=t.length){const e=[],o=(...c)=>{if(e.push(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}function Kn(t,r=t.length){const e=[],o=(...c)=>{if(e.unshift(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}const Qn=!0,Xn=()=>Qn,Yn=!1,tr=()=>Yn,nr=()=>{};function rr(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Qn),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const cr=I(or);function ur(t,n){return cr.set(t,n)}function ir(){rr(setTimeout(nr,0),(t=>{cr.remove(t)}))}const sr=Reflect.apply;function fr(t,n,r){if(Hn(t))return sr(t,n,r)}function ar(t,n){function r(...t){r.id!==Yn&&cr.remove(r.id),r.id=ur((()=>{r.callable(...t),r.id=Yn}),n)}return r.id=Yn,r.callable=t.bind(r),r.clear=()=>{r.id!==Yn&&(cr.remove(r.id),r.id=Yn)},r}function lr(t,...n){if(Hn(t))return t(...n)}async function hr(t,n){const r=t.length;for(let e=0;ezn(t,(t=>{t(n)}));function gr(t){return(...n)=>!t(...n)}function pr(t=0){return(...n)=>n[t]}const mr=t=>{let n;return(...r)=>(u(n)||(n=t(...r)),n)};async function wr(t,n,r={}){if(t)return await Tn(t,(async(t,e,o,c,u)=>{r[e]=await n(t,e,r,o,c,u)})),r}function yr(t,n,r={},e,o){if(t)return u(e)?Mn(t,((t,c,u,i,s)=>{r[c]=n.call(e,t,c,r,u,i,s,o)})):Mn(t,((t,e,c,u,i)=>{r[e]=n(t,e,r,c,u,i,o)})),r}function br(t){return t?.constructor}function vr(t,n=[]){const r=br(t);return r===Function&&"function"===r.name?function(){}:I(r,n)}function Ar(t,n=i,r){const e=r||vr(t);if(y(t)||Pn(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Hn(e.set);for(const[r,c]of t){const u=n(c,r,e,t);o?e.set(r,u):e[r]=u}return e}async function Er(t,n=i,r,e){if(kn(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||vr(t);if(y(t)||Pn(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const c=Hn(o.set);for await(const[r,e]of t){const u=await n(e,r,o,t);c?o.set(r,u):o[r]=u}return o}const Ir=qn(ut,it,yr,wr,Ar,Er);function xr(t){return(...n)=>Ir(t,(t=>t(...n)))}async function $r(t,n){if(!t)return;return O(U(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function Sr(t,n){if(!t)return;return B(U(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function Cr(t,n=i){if(y(t)||Pn(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function jr(t,n=i,r){if(kn(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(y(t)||Pn(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const Br=qn(B,O,Sr,$r,Cr,jr);function Or(t){return n=>Br(t,(t=>t(n)))}function Fr(t,n){return(...r)=>t(...n.map((t=>r[t])))}function Lr(t,n){function r(...t){r.id?r.shouldThrottle=Qn:(r.callable(...t),r.id=ur((()=>{r.shouldThrottle&&r.callable(...t),r.id=Yn}),n))}return r.id=Yn,r.callable=t.bind(r),r.clear=()=>{cr.remove(r.id),r.id=Yn},r}function Tr(t,n){return(...r)=>n(t,...r)}const Mr=Function.prototype;function Rr(t){return Mr.call.bind(t)}const Nr=Object.getOwnPropertyNames,Pr=Object.getOwnPropertyDescriptor,Ur=Object.defineProperty,_r=Rr(Object.hasOwnProperty),kr=Object.is;function Dr(t,n){return t+n}function Hr(t){return t-1}function Wr(t,n){return t/n}function Zr(t){return t+1}function qr(t,n){return t*n}function zr(t,n){return 0!==t&&(0===n?0:n/t*100)}const{random:Gr}=Math;function Vr(t,n=0){return Gr()*(t-n)+n}function Jr(t,n){return t%n}function Kr(t){return t.reduce(((t,n)=>t-n),0)}function Qr(t){return t.reduce(((t,n)=>t+n),0)}function Xr(t,n,r){return t>n&&tr}const{sign:te}=Math;function ne(t){return 1===te(t)}function re(t){return 0===t}const ee=Object.entries;function oe(t){if(u(t))return ee(t)}function ce(t){const n=[];return Mn(t,((t,r)=>{u(t)&&n.push(r)})),n}async function ue(t,n=i,r={}){return await Tn(t,(async(t,e,o,c,i)=>{const s=await n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function ie(t,n=i,r={}){return Mn(t,((t,e,o,c,i)=>{const s=n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function se(t,n,r={}){return Mn(t,((t,e,o,c,u)=>{!0===n(t,e,r,o,c,u)&&(r[e]=t)})),r}async function fe(t,n,r={}){return await Tn(t,(async(t,e,o,c,u)=>{!0===await n(t,e,r,o,c,u)&&(r[e]=t)})),r}function ae(t,n={}){if(t)return Mn(t,((t,r)=>{n[t]=r})),n}const le=(t,n)=>{if(t===n)return!0;const r=U(t),e=U(n);return r.length===e.length&&B(r,(r=>t[r]===n[r]))},he=Q("RegExp"),de=X(he),ge=/[()[\]{}*+?^$|#.,/\\\s-]/g;function pe(t){return t.replace(ge,"\\$&")}function me(t,n){return n?me(ut(t,pe)):RegExp(t.join("|"))}function we(t,n){if(t){if(y(n)){const r=me(n);return se(t,((t,n)=>!r.test(n)))}if(de(n))return se(t,((t,r)=>!n.test(r)));if(pn(n))return se(t,((t,r)=>r!==n));if(dn(n)){const r=n.toString();return se(t,((t,n)=>n!==r))}return Hn(n)?se(t,((t,r)=>!n(t,r))):void 0}}const ye=(t,n,r={})=>{if(t)return s(n,(n=>{r[n]=t[n]})),r};function be(t){if(t)return U(t).length}const ve=(t,n)=>{const r={};return s(t,((t,e)=>{r[t]=n[e]})),r},Ae=t=>{const n=[],r=[];return Mn(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},Ee=/[ _-]+/g;function Ie(t){let n="";return t.replace(Ee," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n}const xe=/[ _-]+/g,$e=/[ ]+/g;function Se(t){return t.replace(/([A-Z]+)/g," $1").replace(xe," ").trim().toLowerCase().replace($e,"-")}const Ce=/[ _-]+/g,je=/[ ]+/g;function Be(t){return t.replace(/([A-Z]+)/g," $1").replace(Ce," ").trim().toLowerCase().replace(je,"_")}const Oe=/[ _-]+/g;function Fe(t){return t.replace(/([A-Z]+)/g," $1").replace(Oe," ").trim().toUpperCase()}const Le=/[ _-]+/g;function Te(t){return t.replace(/([A-Z]+)/g," $1").replace(Le," ").trim().toLowerCase()}function Me(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)}function Re(t,n=1){return t[t.length-n]}function Ne(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))}function Pe(t,n=1){return t.slice(0,-1*n)}function Ue(t,n=1){return t.substring(n)}function _e(t,n,r){return t.replace(new RegExp(`\\b${n.join("|")}\\b`,"gi"),r)}function ke(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=r-n;for(;u=0&&(c=e[u]," "!==c);u--);return t.slice(0,u).trim()})(t,n,r):t}function De(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=n;for(;u0&&(c=e[u]," "!==c);u++);return t.substring(u,r).trim()})(t,n,r):t}const He=/%(?![\da-f]{2})/gi,We=/&/g,Ze=//g,ze=/"/g;function Ge(t){return decodeURIComponent(t.replace(He,(()=>"%25")))}function Ve(t){return t.replace(We,"&").replace(Ze,"<").replace(qe,">").replace(ze,""")}function Je(t){return Ve(Ge(t))}const Ke=/\S+/g,Qe=/\w+/g;function Xe(t){return t.match(Ke)||[]}function Ye(t){return t.match(Qe)||[]}const to=/\w+/g;function no(t){return t[0].toUpperCase()}function ro(t){return no(t)+Ue(t)}function eo(t){return no(t)+Ue(t).toLowerCase()}function oo(t){return t.replace(to,(t=>ro(t)))}function co(t){return t.replace(to,(t=>eo(t)))}function uo(t){return br(t)?.name}function io(t){return!!u(t)&&"[object Arguments]"===t.toString()}function so(t){return!u(t)}const fo=Q("Map"),ao=X(fo),lo=/Array/,ho="Array";function go(t){if(t){const n=uo(t);if(lo.test(n)&&n!==ho)return!0}return!1}function po(t,n){if(so(t)||Hn(t))return!1;if(y(t)||go(t))return!0;const r=t.length;if(!so(r)||!dn(r)||r<0)return!1;if(n){const n=U(t);return!!n&&Br(n,((t,n)=>n>=0&&dn(n)))}return!0}const mo=Q("BigInt"),wo=X(mo),yo=Q("Boolean"),bo=X(yo),vo=Q("ArrayBuffer"),Ao=X(vo);function Eo(t,n){return!(!t||!n)&&t instanceof n}const Io=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function xo(t){if(u(t)){const n=t?.constructor?.name;return Io.test(n)}return!1}const $o=Q("Date"),So=X($o);function Co(t){return pn(t)||y(t)?!o(t):G(t)?!be(t):!u(t)}function jo(t){return!1===t}const Bo=Q("Float32Array"),Oo=X(Bo),Fo=Q("Float64Array"),Lo=X(Fo),{isInteger:To}=Number,Mo=To,Ro=Q("Int16Array"),No=X(Ro),Po=Q("Int32Array"),Uo=X(Po),_o=Q("Int8Array"),ko=X(_o);function Do(t){return u(t)&&"function"==typeof t[Symbol.iterator]}function Ho(t){return!!t&&t instanceof Promise}function Wo(t){return!!t&&(Ho(t)||Zn(t)||kn(t))}function Zo(t,n){return!!(t&&n&&n.call)&&t instanceof n}function qo(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n}function zo(t,n){return!so(t)&&!so(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)}const{isSafeInteger:Go}=Number,Vo=Go;function Jo(t,n){const r=br(t),e=br(n);return r===e&&r.name===e.name}function Ko(t){return!0===t}const Qo=Q("Uint16Array"),Xo=X(Qo),Yo=Q("Uint32Array"),tc=X(Yo),nc=Q("Uint8Array"),rc=X(nc),ec=Q("Uint8ClampedArray"),oc=X(ec),cc=Q("WeakMap"),uc=X(cc),ic=void 0!==globalThis.Deno,sc=void 0!==globalThis.process&&process.versions&&process.versions.node;function fc(t,n=!0){return Boolean(t)&&n}function ac(t,n=!0){return!1===Boolean(t)&&n}function lc(t,n,r,e){if(u(t)){if(Hn(n))return r?fr(n,r,e):n(...e);if(G(n))return n[r]=t,n}}function hc(t,n){return jo(nt(t,n))}const dc=JSON;function gc(t,n){if(t)return dc.parse(t,n)}const pc=dc.stringify;function mc(t,n,r){const e=globalThis.options||r;let o;return Hn(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${pc(t)}\n\t\tExpected: ${pc(n)}`,e)}async function wc(t,n,r){const e=await t;return!(Hn(n)&&!1===await n(e,r))&&!hc(e,n)||mc(e,n,r)}function yc(t,n,r){if(Wo(t)||Wo(n))return wc(t,n,r);return!(Hn(n)&&!1===n(t,r))&&!hc(t,n)||mc(t,n,r)}function bc(t,n,r){const e=Ir(t,(t=>Hn(t)?t.bind(n):t));return r?Ln(r,e):e}function vc(t){if(t){if(tt(t))return zt(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t}const Ac=globalThis.structuredClone;function Ec(t){return Ac(t)}function Ic(t){if(G(t)){const n=U(t),r=n.length,e={};for(let o=0;ofc(t)))}async function xc(t,n=i,r,e){if(kn(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);u(e)&&r.push(e)}return r}const o=r||vr(t);if(y(t)||Pn(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);u(c)&&e(c)}return o}const c=Hn(o.set);for await(const[r,e]of t){const i=await n(e,r,o,t);u(i)&&(c?o.set(r,i):o[r]=i)}return o}function $c(t,n=i,r){const e=r||vr(t);if(y(t)||Pn(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);u(c)&&o(c)}return e}const o=Hn(e.set);for(const[r,c]of t){const i=n(c,r,e,t);u(i)&&(o?e.set(r,i):e[r]=i)}return e}const Sc=qn(f,l,ie,ue,$c,xc);function Cc(...t){return Zn(t[0])?async function(...n){return Br(t,(async t=>Br(n,(async n=>t(n)))))}:function(...n){return Br(t,(t=>Br(n,(n=>t(n)))))}}function jc(t,n=i,r){const e=r||vr(t);if(y(t)||Pn(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Hn(e.set);for(const[o,c]of t){!0===n(c,o,e,t)&&(r?e.set(o,c):e[o]=c)}}return e}async function Bc(t,n=i,r,e){if(kn(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||vr(t);if(y(t)||Pn(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Hn(o.set);for await(const[e,c]of t){!0===await n(c,e,o,t)&&(r?o.set(e,c):o[e]=c)}}return o}const Oc=qn(F,L,se,fe,jc,Bc);function Fc(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const Lc=Fc(s),Tc=Fc(C);function Mc(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const Rc=Mc(a),Nc=Mc(j);function Pc(t,n){const r=vr(t),e=r.push||r.add;if(e&&Hn(e)){const o=e.bind(r);t.forEach((t=>{const e=n(t,r);o(e)}))}else Hn(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r}function Uc(t,n){const r={};return s(t,((t,e)=>{r[n[e]]=t})),r}function _c(t,n,r){if(so(t)||so(n))return!1;if(pn(t))return pn(n)?t.includes(n,r):de(n)?n.test(t):Hn(n)?Boolean(n(t)):Br(n,(n=>Boolean(_c(t,n))));if(y(t)){if(pn(n))return t.includes(n,r);if(de(n))return Br(t,(t=>t.test(n)));if(y(n))return Br(n,(n=>Boolean(_c(t,n))))}return!1}const kc=In(/\./),Dc=(t,n,r)=>(n&&!u(t[n])&&(t[n]=r),t);class Hc{list=I(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Qn),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Wc=I(Hc);function Zc(t,n){return Wc.set(t,n)}function qc(){rr(setTimeout(nr,0),(t=>{Wc.remove(t)}))}function zc(t,...n){return zn(n,(n=>{zn(n,((n,r)=>{if(t[r]&&(G(n)||y(n)||n.forEach))return zc(t[r],n);t[r]=n}))})),t}class Gc{static models={};constructor(t,n){u(n)?(Ln(this,n),this.modelName=t,Gc.models.set(t,n)):Ln(this,t)}}function Vc(t,n){return u(n)?I(Gc,[t,n]):W(t,Gc.models)}function Jc(t,n){return[t,n]}function Kc(t,n,r){const e=t.length,o=[];for(let c=0;cB(r,(r=>nt(t[r],n[r])));function tu(t,n,r){return n&&G(t)||dn(n)&&y(t)?t[n]=r:t.set?t.set(n,r):t.push?t.push(r):t.add?t.add(r):t[n]=r,t}function nu(t,n,r){return dn(r)&&y(t)?t[r]=n:t.push?t.push(n):t.add?t.add(n):t[r]=n,t}class ru{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Mn(t,(n=>{t[n]=new ru(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new ru(r),!0)})}}const eu=()=>[],ou=()=>({}),cu=()=>"";async function uu(t,n){for(let r=0;r0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const au=I(fu);class lu{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function hu(t){return new lu(t)}function du(t){return t?du[t]:U(du)}const gu=globalThis.navigator?.userAgentData;if(gu)Mn(gu,((t,n)=>{bo(t)&&t&&(du[n]=t)})),s(gu.brands,(t=>{du[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{du[t]=!0}))}function pu(t,n,r,e){return t.addEventListener(n,r,e),t}function mu(t,n,r,e){return t.removeEventListener(n,r,e),t}function wu(t){return 13===t.keyCode}const yu=document.createDocumentFragment.bind(document);function bu(t,n){return t.appendChild(n),n}function vu(t,n){return y(n)?ve(n,ut(n,(n=>t.getAttribute(n)))):(Mn(n,((n,r)=>{t.setAttribute(r,n)})),t)}const Au=/^.[\w_-]+$/,Eu=/^[A-Za-z]+$/,Iu=/\s/,xu=document.getElementsByClassName.bind(document),$u=document.getElementsByTagName.bind(document),Su=document.getElementById.bind(document),Cu=document.querySelector.bind(document),ju=document.querySelectorAll.bind(document);function Bu(t){switch(t[0]){case"#":if(!Iu.test(t))return Su(Ue(t));break;case".":if(Au.test(t))return xu(Ue(t));break;default:if(Eu.test(t))return $u(t)}return ju(t)}const Ou=document.createElement.bind(document);function Fu(t){const n=kc(t)&&t||`${t}.js`;return(t=>Xc((n=>{pu(t,"load",n,!0),pu(t,"error",n,!0),bu(Cu("head"),t)})))(vu(Ou("script"),{async:"",src:n}))}function Lu(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&pu(document,"DOMContentLoaded",t),!1)}Lu((()=>{const t=Su("AcidLib");Fu(t&&t.getAttribute("data-index")||"/index")}));const Tu=location.protocol,Mu="http:"===Tu?"ws":"wss",Ru=location.hostname,Nu={hardware:{cores:navigator.hardwareConcurrency},host:{name:Ru,protocol:Tu,protocolSocket:Mu}};function Pu(){Ln(Nu,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function Uu(){Pu()}let _u;Lu(Uu),pu(window,"load",Uu,!0),pu(window,"resize",Uu,!0),function(t){try{t().removeItem("TESTING"),_u=!0}catch(t){_u=!1}}((()=>localStorage));class ku{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=hu(t)}hasLocal=_u;setItem(t,n){return this.hasLocal&&this.local.setItem(t,pn(n)?n:pc(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return u(n)?n:!u(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}function Du(t){return new ku(t)}const Hu=(t,n)=>`color:${t};background:${n};`,Wu={alert:Hu("#fff","#f44336"),important:Hu("#fff","#E91E63"),notify:Hu("#fff","#651FFF"),warning:Hu("#000","#FFEA00")},Zu=(t,n)=>{const r=pn(t)?t:pc(t);if("alert"===n||"warning"===n)return console.trace(`%c${r}`,`${Wu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${r}`,`${Wu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},qu=(t,n,r)=>{Wu[t]=Hu(n,r)};function zu(t){return t&&9!==t.nodeType}function Gu(t){return!!u(t)&&"[object HTMLCollection]"===t.toString()}function Vu(t){return!!u(t)&&"[object NodeList]"===t.toString()}export{Gn as Chain,ku as Crate,Hc as Intervals,Gc as Model,ru as Store,or as Timers,fu as UniqID,lu as VirtualStorage,Dr as add,jn as after,bu as append,fr as apply,me as arrayToRegex,Uc as arraysToObject,Bn as ary,yc as assert,wc as assertAsync,Ln as assign,On as before,bc as bindAll,Rr as cacheNativeMethod,zr as calcProgress,Ie as camelCase,Vn as chain,t as chunk,Ne as chunkString,vc as clear,n as clearArray,zt as clearBuffer,qc as clearIntervals,ir as clearTimers,Ec as clone,r as cloneArray,vr as cloneType,Zu as cnsl,qu as cnslTheme,Ic as compact,ce as compactKeys,Sc as compactMap,f as compactMapArray,l as compactMapAsyncArray,ue as compactMapAsyncObject,ie as compactMapObject,Kc as concurrent,Qc as concurrentStatus,I as construct,K as constructorName,Gt as countBy,Vt as countKey,Jt as countWithoutKey,Du as crate,yu as createFragment,Jn as curry,Kn as curryRight,ar as debounce,Hr as deduct,Ur as defProp,x as difference,Wr as divide,$ as drop,S as dropRight,zn as each,s as eachArray,a as eachAsyncArray,Tn as eachAsyncObject,Mn as eachObject,C as eachRight,j as eachRightAsync,v as ensureArray,qt as ensureBuffer,pe as escapeRegex,ge as escapeRegexRegex,pu as eventAdd,mu as eventRemove,Br as every,Cc as everyArg,B as everyArray,O as everyAsyncArray,$r as everyAsyncObject,Sr as everyObject,Yn as falsy,Oc as filter,F as filterArray,L as filterAsyncArray,fe as filterAsyncObject,se as filterObject,Qt as findIndex,Kt as findIndexCache,Xt as findItem,T as first,M as flatten,A as flattenDeep,Lc as flow,Rc as flowAsync,Nc as flowAsyncRight,Tc as flowRight,w as forEach,Rn as forEachAsync,Pc as forMap,Un as forOf,Dn as forOfAsync,$c as forOfCompactMap,xc as forOfCompactMapAsync,Cr as forOfEvery,jr as forOfEveryAsync,jc as forOfFilter,Bc as forOfFilterAsync,Ar as forOfMap,Er as forOfMapAsync,qn as generateLoop,W as get,xu as getByClass,Su as getById,$u as getByTag,oe as getEntries,An as getFileExtension,En as getFilename,cn as getHighest,un as getLowest,Bt as getNumberInsertIndex,Pr as getPropDesc,Nr as getPropNames,br as getType,uo as getTypeName,sn as groupBy,_c as has,z as hasAnyKeys,kc as hasDot,q as hasKeys,o as hasLength,_u as hasLocal,_r as hasProp,u as hasValue,Ve as htmlEntities,lr as ifInvoke,Dc as ifNotAssign,lc as ifValue,Fu as importjs,hr as inAsync,dr as inSync,Zr as increment,fn as indexBy,Nu as info,R as initial,Pe as initialString,Me as insertInRange,N as intersection,Zc as interval,Wc as intervals,ae as invert,an as invoke,ln as invokeAsync,du as isAgent,io as isArguments,y as isArray,Ao as isArrayBuffer,vo as isArrayBufferCall,po as isArrayLike,Zn as isAsync,Wn as isAsyncCall,wo as isBigInt,mo as isBigIntCall,bo as isBoolean,yo as isBooleanCall,tt as isBuffer,Y as isBufferCall,Eo as isChild,xo as isCloneable,V as isConstructor,J as isConstructorFactory,Q as isConstructorNameFactory,So as isDate,$o as isDateCall,ic as isDeno,Lu as isDocumentReady,zu as isDom,Co as isEmpty,wu as isEnter,nt as isEqual,Oo as isF32,Bo as isF32Call,Lo as isF64,Fo as isF64Call,jo as isFalse,ac as isFalsy,xn as isFileCSS,$n as isFileHTML,Sn as isFileJS,Cn as isFileJSON,Mo as isFloat,Hn as isFunction,kn as isGenerator,_n as isGeneratorCall,Gu as isHTMLCollection,No as isI16,Ro as isI16Call,Uo as isI32,Po as isI32Call,ko as isI8,_o as isI8Call,Do as isIterable,Wo as isKindAsync,ao as isMap,fo as isMapCall,rt as isMatchArray,le as isMatchObject,d as isNegative,Vu as isNodeList,sc as isNodejs,b as isNotArray,gn as isNotNumber,mn as isNotString,c as isNull,dn as isNumber,hn as isNumberCall,xt as isNumberEqual,Xr as isNumberInRange,Yr as isNumberNotInRange,Zo as isParent,G as isPlainObject,ne as isPositive,qo as isPrimitive,Ho as isPromise,de as isRegex,he as isRegexCall,zo as isRelated,Vo as isSafeInt,kr as isSame,Jo as isSameType,Pn as isSet,Nn as isSetCall,pn as isString,Ko as isTrue,fc as isTruthy,X as isTypeFactory,go as isTypedArray,Xo as isU16,Qo as isU16Call,tc as isU32,Yo as isU32Call,rc as isU8,oc as isU8C,ec as isU8CCall,nc as isU8Call,e as isUndefined,uc as isWeakMap,cc as isWeakMapCall,re as isZero,gc as jsonParse,Se as kebabCase,U as keys,ot as largest,ct as last,Te as lowerCase,Ir as map,ut as mapArray,it as mapAsyncArray,wr as mapAsyncObject,yr as mapObject,st as mapRightArray,ft as mapWhile,zc as merge,Vc as model,qr as multiply,gr as negate,so as noValue,vu as nodeAttribute,nr as noop,hc as notEqual,pr as nthArg,Fn as objectAssign,ee as objectEntries,be as objectSize,we as omit,mr as once,Lt as onlyUnique,xr as over,Or as overEvery,Jc as pair,ht as partition,ye as pick,yn as pluck,wn as pluckObject,Xc as promise,Yc as propertyMatch,Cu as querySelector,ju as querySelectorAll,Vr as randomFloat,At as randomInt,m as range,p as rangeDown,g as rangeUp,Ge as rawURLDecode,Fr as reArg,In as regexTestFactory,Jr as remainder,pt as remove,mt as removeBy,_e as replaceList,wt as rest,Ue as restString,i as returnValue,yt as right,Re as rightString,St as sample,Je as sanitize,Pu as saveDimensions,Bu as selector,tu as setKey,nu as setValue,$t as shuffle,jt as smallest,Be as snakeCase,rn as sortCollectionAlphabetically,vn as sortCollectionAlphabeticallyReverse,on as sortCollectionAscending,en as sortCollectionAscendingFilter,tn as sortCollectionDescending,Yt as sortCollectionDescendingFilter,lt as sortNumberAscending,gt as sortNumberDescening,nn as sortObjectsAlphabetically,bn as sortObjectsAlphabeticallyReverse,Tt as sortUnique,pc as stringify,eu as stubArray,tr as stubFalse,ou as stubObject,cu as stubString,Xn as stubTrue,at as subtract,Kr as subtractAll,dt as subtractReverse,Qr as sumAll,Ot as take,Ft as takeRight,Wu as themes,Lr as throttle,ur as timer,cr as timers,rr as times,uu as timesAsync,er as timesMap,iu as timesMapAsync,It as toArray,H as toPath,su as toggle,Xe as tokenize,ke as truncate,De as truncateRight,Qn as truth,Zt as unZip,Ae as unZipObject,Rt as union,au as uniqID,Mt as unique,Nt as untilFalseArray,Pt as untilTrueArray,Uu as updateDimensions,Fe as upperCase,ro as upperFirst,oo as upperFirstAll,no as upperFirstLetter,eo as upperFirstOnly,co as upperFirstOnlyAll,hu as virtualStorage,Ut as whileCompactMap,_t as whileEachArray,kt as whileMapArray,Dt as without,Ye as words,Tr as wrap,Ht as xor,Wt as zip,ve as zipObject}; +function t(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r}function n(t){return t.length=0,t}function r(t){return t.slice()}function e(t){return void 0===t}function o(t){return Boolean(t.length)}function c(t){return null===t}function u(t){return!e(t)&&!c(t)}function i(t){return t}function s(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const f=n.call(e,t,c,r,i,s,o);u(f)&&r.push(f)})):s(t,((t,c,i,s)=>{const f=n(t,c,r,i,s,e,o);u(f)&&r.push(f)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const c=await n(t,e,r,o);u(c)&&r.push(c)})),r}const{sign:h}=Math;function d(t){return-1===h(t)}function g(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function m(t,n,r=1,e=[]){return d(r)?e:t{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function $(t,n=1,r=t.length){return t.splice(n,r)}const S=(t,n=1,r=t.length)=>$(t,0,r-n);function C(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function j(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function B(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,c,u,e)&&r.push(t)})),r}async function L(t,n,r=[],e){return await a(t,(async(t,o,c,u)=>{!0===await n(t,o,r,c,u,e)&&r.push(t)})),r}function T(t,n){return n?t.slice(0,n):t[0]}function M(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(v(n))),[]);return r}function R(t){return t.slice(0,t.length-1)}function N(t,...n){return f(t,(t=>{if(B(n,(n=>n.includes(t))))return t}))}function P(t,n,r){if(!t)return;const e=t.length;if(u(r))for(let o=0;o(r=r[t],u(r)))),r}const q=Object.hasOwn;function z(t,...n){if(t)return B(n,(n=>{const r=W(n);if(1===r.length)return q(t,n);{const n=r.pop(),e=Z(r,t);return!!e&&q(e,n)}}))}function G(t,...n){if(t)return Boolean(n.find((n=>{const r=W(n);if(1===r.length)return q(t,n);{const n=r.pop(),e=Z(r,t);return!!e&&q(e,n)}})))}const V=t=>!!u(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function J(t,n){return t?.constructor===n||!1}function K(t){return n=>J(n,t)}function Q(t){return t?.constructor?.name}function X(t){return n=>Q(n)===t||!1}function Y(t){return function(n,...r){return r?t(n)&&B(r,t):t(n)}}const tt=X("Buffer"),nt=Y(tt),rt=(t,n)=>{if(t===n)return!0;if(nt(t))return t.equals(n);if(t.toString()===n.toString())if(V(t)){const r=_(t);if(z(n,r))return B(r,(r=>rt(t[r],n[r])))}else if(y(t)&&t.length===n.length)return B(t,((t,r)=>rt(t,n[r])));return!1};function et(t,n){return t.length===n.length&&B(t,((t,r)=>rt(n[r],t)))}const ot=Math.max;function ct(t){return ot(...t)}function ut(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]}function it(t,n,r=[],e,o){return u(e)?s(t,((t,c,u,i)=>{r[c]=n.call(e,t,c,r,u,i,o)})):s(t,((t,e,c,u)=>{r[e]=n(t,e,r,c,u,o)})),r}async function st(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function ft(t,n,r=[],e){let o=0;const c=t.length;for(let u=c-1;u>=0;u--)r[o]=n(t[u],u,t,c,e),o++;return r}function at(t,n,r=[],e){const o=t.length;for(let c=0;c{if(n(t,e))return t;r.push(t)})),r]}function gt(t,n){return n-t}function pt(t){return t.sort(gt)}function mt(t,n){let r=t.length;for(let e=0;er)return St(t);if(1===n)return[t[Et(r-1,0)]];const e=[],o={};let c,u=0;for(;u(r=e,n>=t&&(r=e+1,!0)))),r}function Ft(t,n=1){return t.slice(0,n)}function Lt(t,n=1){const r=t.length;return t.slice(r-n,r)}function Tt(t,n,r){return r.indexOf(t)===n}function Mt(t,n,r){return t!==r[n-1]}function Rt(t,n){return n?t.filter(Mt):t.filter(Tt)}function Nt(...t){return Rt(A(t))}function Pt(t,n){const r=t.length;for(let e=0;e!r.has(t)))}function Wt(...t){const n=I(Map),r=[];return 2===t.length?x(t[0],t[1]):(s(t,((t,r)=>{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&r.push(t.child)})),r)}function Zt(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function qt(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function zt(t){return nt(t)&&t||u(t)&&Buffer.from(t)||Buffer.alloc(0)}function Gt(t){return t.fill(0),t}function Vt(t,n){const r={};let e;return s(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r}function Jt(t,n){let r=0;return s(t,(t=>{t[n]&&r++})),r}function Kt(t,n){let r=0;return s(t,(t=>{t[n]||r++})),r}function Qt(t,n,r,e,o){if(t[o]===e)return!0}function Xt(t,n,r="id"){const e=t.findIndex(((t,e)=>Qt(t,0,0,n,r)));return-1!==e&&e}function Yt(t,n,r="id"){const e=t.find(((t,e)=>Qt(t,0,0,n,r)));return-1!==e&&e}function tn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?-1:0:1:-1}function nn(t,n="id",r){return t.sort(((t,e)=>tn(t,e,n,r)))}function rn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):o.localeCompare(c)}function en(t,n="id",r){return t.sort(((t,e)=>rn(t,e,n,r)))}function on(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?1:0:-1:1}function cn(t,n="id",r){return t.sort(((t,e)=>on(t,e,n,r)))}function un(t,n="id"){return cn(t,n)[0]}function sn(t,n){return nn(t,n,!1)[0]}function fn(t,n){const r={};return s(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r}function an(t,n="id"){const r={};return s(t,(t=>{r[t[n]]=t})),r}function ln(t,n,r,e){return it(t,e?(t,o)=>t[n].call(e,r):(t,e)=>t[n](r))}function hn(t,n,r,e){return st(t,e?t=>t[n].call(e,r):async t=>t[n](r))}const dn=X("Number"),gn=Y(dn);function pn(t){return!gn(t)}const mn=K(String);function wn(t){return!mn(t)}function yn(t,n){if(t)return mn(n)?t[n]:it(n,(n=>t[n]))}function bn(t,n){return it(t,(t=>yn(t,n)))}function vn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c.localeCompare(o)}function An(t,n="id",r){return t.sort(((t,e)=>vn(t,e,n,r)))}function En(t){if(t)return t.substring(t.lastIndexOf(".")+1)}function In(t){if(t)return t.substring(t.lastIndexOf("/")+1)}function xn(t){return n=>!!u(n)&&t.test(n)}const $n=xn(/\.css$/),Sn=xn(/\.html$/),Cn=xn(/\.js$/),jn=xn(/\.json$/);function Bn(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)}function On(t,n){return(...r)=>t(...r.splice(0,n))}function Fn(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)}const Ln=Object.assign;function Tn(t,...n){if(u(t))return Ln(t,...n)}const Mn=async(t,n,r,e)=>{if(!t)return;const o=_(t);return u(r)?await a(o,((c,u,i,s)=>n.call(r,t[c],c,t,s,o,e))):await a(o,((r,c,u,i)=>n(t[r],r,t,i,o,e))),t};function Rn(t,n,r,e){if(!t)return;const o=_(t);return u(r)?s(o,((o,c,u,i)=>{n.call(r,t[o],o,t,i,u,e)})):s(o,((r,o,c,u)=>{n(t[r],r,t,u,c,e)})),t}async function Nn(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t!!u(t)&&t instanceof Function,Zn=X("AsyncFunction"),qn=Y(Zn);function zn(t,n,r,e,o,c){return(i,s,f,a,l)=>{let h;const d=qn(s);if(u(i)&&s)return h=y(i)?d?n:t:V(i)||Wn(i)?d?e:r:o?d?c:o:Dn(i)?c:d?e:r,h(i,s,f,a,l)}}const Gn=zn(s,a,Rn,Mn,_n,Hn);class Vn{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Gn(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}function Jn(t){return I(Vn,[t])}function Kn(t,r=t.length){const e=[],o=(...c)=>{if(e.push(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}function Qn(t,r=t.length){const e=[],o=(...c)=>{if(e.unshift(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}const Xn=!0,Yn=()=>Xn,tr=!1,nr=()=>tr,rr=()=>{};function er(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Xn),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const ur=I(cr);function ir(t,n){return ur.set(t,n)}function sr(){er(setTimeout(rr,0),(t=>{ur.remove(t)}))}const fr=Reflect.apply;function ar(t,n,r){if(Wn(t))return fr(t,n,r)}function lr(t,n){function r(...t){r.id!==tr&&ur.remove(r.id),r.id=ir((()=>{r.callable(...t),r.id=tr}),n)}return r.id=tr,r.callable=t.bind(r),r.clear=()=>{r.id!==tr&&(ur.remove(r.id),r.id=tr)},r}function hr(t,...n){if(Wn(t))return t(...n)}async function dr(t,n){const r=t.length;for(let e=0;eGn(t,(t=>{t(n)}));function pr(t){return(...n)=>!t(...n)}function mr(t=0){return(...n)=>n[t]}const wr=t=>{let n;return(...r)=>(u(n)||(n=t(...r)),n)};async function yr(t,n,r={}){if(t)return await Mn(t,(async(t,e,o,c,u)=>{r[e]=await n(t,e,r,o,c,u)})),r}function br(t,n,r={},e,o){if(t)return u(e)?Rn(t,((t,c,u,i,s)=>{r[c]=n.call(e,t,c,r,u,i,s,o)})):Rn(t,((t,e,c,u,i)=>{r[e]=n(t,e,r,c,u,i,o)})),r}function vr(t){return t?.constructor}function Ar(t,n=[]){const r=vr(t);return r===Function&&"function"===r.name?function(){}:I(r,n)}function Er(t,n=i,r){const e=r||Ar(t);if(y(t)||Un(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Wn(e.set);for(const[r,c]of t){const u=n(c,r,e,t);o?e.set(r,u):e[r]=u}return e}async function Ir(t,n=i,r,e){if(Dn(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||Ar(t);if(y(t)||Un(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const c=Wn(o.set);for await(const[r,e]of t){const u=await n(e,r,o,t);c?o.set(r,u):o[r]=u}return o}const xr=zn(it,st,br,yr,Er,Ir);function $r(t){return(...n)=>xr(t,(t=>t(...n)))}async function Sr(t,n){if(!t)return;return O(_(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function Cr(t,n){if(!t)return;return B(_(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function jr(t,n=i){if(y(t)||Un(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function Br(t,n=i,r){if(Dn(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(y(t)||Un(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const Or=zn(B,O,Cr,Sr,jr,Br);function Fr(t){return n=>Or(t,(t=>t(n)))}function Lr(t,n){return(...r)=>t(...n.map((t=>r[t])))}function Tr(t,n){function r(...t){r.id?r.shouldThrottle=Xn:(r.callable(...t),r.id=ir((()=>{r.shouldThrottle&&r.callable(...t),r.id=tr}),n))}return r.id=tr,r.callable=t.bind(r),r.clear=()=>{ur.remove(r.id),r.id=tr},r}function Mr(t,n){return(...r)=>n(t,...r)}const Rr=Function.prototype;function Nr(t){return Rr.call.bind(t)}const Pr=Object.getOwnPropertyNames,Ur=Object.getOwnPropertyDescriptor,_r=Object.defineProperty,kr=Nr(Object.hasOwnProperty),Dr=Object.is;function Hr(t,n){return t+n}function Wr(t){return t-1}function Zr(t,n){return t/n}function qr(t){return t+1}function zr(t,n){return t*n}function Gr(t,n){return 0!==t&&(0===n?0:n/t*100)}const{random:Vr}=Math;function Jr(t,n=0){return Vr()*(t-n)+n}function Kr(t,n){return t%n}function Qr(t){return t.reduce(((t,n)=>t-n),0)}function Xr(t){return t.reduce(((t,n)=>t+n),0)}function Yr(t,n,r){return t>n&&tr}const{sign:ne}=Math;function re(t){return 1===ne(t)}function ee(t){return 0===t}const oe=Object.entries;function ce(t){if(u(t))return oe(t)}function ue(t){const n=[];return Rn(t,((t,r)=>{u(t)&&n.push(r)})),n}async function ie(t,n=i,r={}){return await Mn(t,(async(t,e,o,c,i)=>{const s=await n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function se(t,n=i,r={}){return Rn(t,((t,e,o,c,i)=>{const s=n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function fe(t,n,r={}){return Rn(t,((t,e,o,c,u)=>{!0===n(t,e,r,o,c,u)&&(r[e]=t)})),r}async function ae(t,n,r={}){return await Mn(t,(async(t,e,o,c,u)=>{!0===await n(t,e,r,o,c,u)&&(r[e]=t)})),r}function le(t,n={}){if(t)return Rn(t,((t,r)=>{n[t]=r})),n}const he=(t,n)=>{if(t===n)return!0;const r=_(t),e=_(n);return r.length===e.length&&B(r,(r=>t[r]===n[r]))},de=X("RegExp"),ge=Y(de),pe=/[()[\]{}*+?^$|#.,/\\\s-]/g;function me(t){return t.replace(pe,"\\$&")}function we(t,n){return n?we(it(t,me)):RegExp(t.join("|"))}function ye(t,n){if(t){if(y(n)){const r=we(n);return fe(t,((t,n)=>!r.test(n)))}if(ge(n))return fe(t,((t,r)=>!n.test(r)));if(mn(n))return fe(t,((t,r)=>r!==n));if(gn(n)){const r=n.toString();return fe(t,((t,n)=>n!==r))}return Wn(n)?fe(t,((t,r)=>!n(t,r))):void 0}}const be=(t,n,r={})=>{if(t)return s(n,(n=>{r[n]=t[n]})),r};function ve(t){if(t)return _(t).length}const Ae=(t,n)=>{const r={};return s(t,((t,e)=>{r[t]=n[e]})),r},Ee=t=>{const n=[],r=[];return Rn(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},Ie=/[ _-]+/g;function xe(t){let n="";return t.replace(Ie," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n}const $e=/[ _-]+/g,Se=/[ ]+/g;function Ce(t){return t.replace(/([A-Z]+)/g," $1").replace($e," ").trim().toLowerCase().replace(Se,"-")}const je=/[ _-]+/g,Be=/[ ]+/g;function Oe(t){return t.replace(/([A-Z]+)/g," $1").replace(je," ").trim().toLowerCase().replace(Be,"_")}const Fe=/[ _-]+/g;function Le(t){return t.replace(/([A-Z]+)/g," $1").replace(Fe," ").trim().toUpperCase()}const Te=/[ _-]+/g;function Me(t){return t.replace(/([A-Z]+)/g," $1").replace(Te," ").trim().toLowerCase()}function Re(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)}function Ne(t,n=1){return t[t.length-n]}function Pe(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))}function Ue(t,n=1){return t.slice(0,-1*n)}function _e(t,n=1){return t.substring(n)}function ke(t,n,r){return t.replace(new RegExp(`\\b${n.join("|")}\\b`,"gi"),r)}function De(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=r-n;for(;u=0&&(c=e[u]," "!==c);u--);return t.slice(0,u).trim()})(t,n,r):t}function He(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=n;for(;u0&&(c=e[u]," "!==c);u++);return t.substring(u,r).trim()})(t,n,r):t}const We=/%(?![\da-f]{2})/gi,Ze=/&/g,qe=//g,Ge=/"/g;function Ve(t){return decodeURIComponent(t.replace(We,(()=>"%25")))}function Je(t){return t.replace(Ze,"&").replace(qe,"<").replace(ze,">").replace(Ge,""")}function Ke(t){return Je(Ve(t))}const Qe=/\S+/g,Xe=/\w+/g;function Ye(t){return t.match(Qe)||[]}function to(t){return t.match(Xe)||[]}const no=/\w+/g;function ro(t){return t[0].toUpperCase()}function eo(t){return ro(t)+_e(t)}function oo(t){return ro(t)+_e(t).toLowerCase()}function co(t){return t.replace(no,(t=>eo(t)))}function uo(t){return t.replace(no,(t=>oo(t)))}function io(t){return vr(t)?.name}function so(t){return!!u(t)&&"[object Arguments]"===t.toString()}function fo(t){return!u(t)}const ao=X("Map"),lo=Y(ao),ho=/Array/,go="Array";function po(t){if(t){const n=io(t);if(ho.test(n)&&n!==go)return!0}return!1}function mo(t,n){if(fo(t)||Wn(t))return!1;if(y(t)||po(t))return!0;const r=t.length;if(!fo(r)||!gn(r)||r<0)return!1;if(n){const n=_(t);return!!n&&Or(n,((t,n)=>n>=0&&gn(n)))}return!0}const wo=X("BigInt"),yo=Y(wo),bo=X("Boolean"),vo=Y(bo),Ao=X("ArrayBuffer"),Eo=Y(Ao);function Io(t,n){return!(!t||!n)&&t instanceof n}const xo=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function $o(t){if(u(t)){const n=t?.constructor?.name;return xo.test(n)}return!1}const So=X("Date"),Co=Y(So);function jo(t){return mn(t)||y(t)?!o(t):V(t)?!ve(t):!u(t)}function Bo(t){return!1===t}const Oo=X("Float32Array"),Fo=Y(Oo),Lo=X("Float64Array"),To=Y(Lo),{isInteger:Mo}=Number,Ro=Mo,No=X("Int16Array"),Po=Y(No),Uo=X("Int32Array"),_o=Y(Uo),ko=X("Int8Array"),Do=Y(ko);function Ho(t){return u(t)&&"function"==typeof t[Symbol.iterator]}function Wo(t){return!!t&&t instanceof Promise}function Zo(t){return!!t&&(Wo(t)||qn(t)||Dn(t))}function qo(t,n){return!!(t&&n&&n.call)&&t instanceof n}function zo(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n}function Go(t,n){return!fo(t)&&!fo(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)}const{isSafeInteger:Vo}=Number,Jo=Vo;function Ko(t,n){const r=vr(t),e=vr(n);return r===e&&r.name===e.name}function Qo(t){return!0===t}const Xo=X("Uint16Array"),Yo=Y(Xo),tc=X("Uint32Array"),nc=Y(tc),rc=X("Uint8Array"),ec=Y(rc),oc=X("Uint8ClampedArray"),cc=Y(oc),uc=X("WeakMap"),ic=Y(uc),sc=void 0!==globalThis.Deno,fc=void 0!==globalThis.process&&process.versions&&process.versions.node;function ac(t,n=!0){return Boolean(t)&&n}function lc(t,n=!0){return!1===Boolean(t)&&n}function hc(t,n,r,e){if(u(t)){if(Wn(n))return r?ar(n,r,e):n(...e);if(V(n))return n[r]=t,n}}function dc(t,n){return Bo(rt(t,n))}const gc=JSON;function pc(t,n){if(t)return gc.parse(t,n)}const mc=gc.stringify;function wc(t,n,r){const e=globalThis.options||r;let o;return Wn(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${mc(t)}\n\t\tExpected: ${mc(n)}`,e)}async function yc(t,n,r){const e=await t;return!(Wn(n)&&!1===await n(e,r))&&!dc(e,n)||wc(e,n,r)}function bc(t,n,r){if(Zo(t)||Zo(n))return yc(t,n,r);return!(Wn(n)&&!1===n(t,r))&&!dc(t,n)||wc(t,n,r)}function vc(t,n,r){const e=xr(t,(t=>Wn(t)?t.bind(n):t));return r?Tn(r,e):e}function Ac(t){if(t){if(nt(t))return Gt(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t}const Ec=globalThis.structuredClone;function Ic(t){return Ec(t)}function xc(t){if(V(t)){const n=_(t),r=n.length,e={};for(let o=0;oac(t)))}async function $c(t,n=i,r,e){if(Dn(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);u(e)&&r.push(e)}return r}const o=r||Ar(t);if(y(t)||Un(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);u(c)&&e(c)}return o}const c=Wn(o.set);for await(const[r,e]of t){const i=await n(e,r,o,t);u(i)&&(c?o.set(r,i):o[r]=i)}return o}function Sc(t,n=i,r){const e=r||Ar(t);if(y(t)||Un(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);u(c)&&o(c)}return e}const o=Wn(e.set);for(const[r,c]of t){const i=n(c,r,e,t);u(i)&&(o?e.set(r,i):e[r]=i)}return e}const Cc=zn(f,l,se,ie,Sc,$c);function jc(...t){return qn(t[0])?async function(...n){return Or(t,(async t=>Or(n,(async n=>t(n)))))}:function(...n){return Or(t,(t=>Or(n,(n=>t(n)))))}}function Bc(t,n=i,r){const e=r||Ar(t);if(y(t)||Un(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Wn(e.set);for(const[o,c]of t){!0===n(c,o,e,t)&&(r?e.set(o,c):e[o]=c)}}return e}async function Oc(t,n=i,r,e){if(Dn(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||Ar(t);if(y(t)||Un(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Wn(o.set);for await(const[e,c]of t){!0===await n(c,e,o,t)&&(r?o.set(e,c):o[e]=c)}}return o}const Fc=zn(F,L,fe,ae,Bc,Oc);function Lc(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const Tc=Lc(s),Mc=Lc(C);function Rc(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const Nc=Rc(a),Pc=Rc(j);function Uc(t,n){const r=Ar(t),e=r.push||r.add;if(e&&Wn(e)){const o=e.bind(r);t.forEach((t=>{const e=n(t,r);o(e)}))}else Wn(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r}function _c(t,n){const r={};return s(t,((t,e)=>{r[n[e]]=t})),r}function kc(t,n,r){if(fo(t)||fo(n))return!1;if(mn(t))return mn(n)?t.includes(n,r):ge(n)?n.test(t):Wn(n)?Boolean(n(t)):Or(n,(n=>Boolean(kc(t,n))));if(y(t)){if(mn(n))return t.includes(n,r);if(ge(n))return Or(t,(t=>t.test(n)));if(y(n))return Or(n,(n=>Boolean(kc(t,n))))}return!1}const Dc=xn(/\./),Hc=(t,n,r)=>(n&&!u(t[n])&&(t[n]=r),t);class Wc{list=I(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Xn),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Zc=I(Wc);function qc(t,n){return Zc.set(t,n)}function zc(){er(setTimeout(rr,0),(t=>{Zc.remove(t)}))}function Gc(t,...n){return Gn(n,(n=>{Gn(n,((n,r)=>{if(t[r]&&(V(n)||y(n)||n.forEach))return Gc(t[r],n);t[r]=n}))})),t}class Vc{static models={};constructor(t,n){u(n)?(Tn(this,n),this.modelName=t,Vc.models.set(t,n)):Tn(this,t)}}function Jc(t,n){return u(n)?I(Vc,[t,n]):Z(t,Vc.models)}function Kc(t,n){return[t,n]}function Qc(t,n,r){const e=t.length,o=[];for(let c=0;cB(r,(r=>rt(t[r],n[r])));function nu(t,n,r){return n&&V(t)||gn(n)&&y(t)?t[n]=r:t.set?t.set(n,r):t.push?t.push(r):t.add?t.add(r):t[n]=r,t}function ru(t,n,r){return gn(r)&&y(t)?t[r]=n:t.push?t.push(n):t.add?t.add(n):t[r]=n,t}class eu{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Rn(t,(n=>{t[n]=new eu(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new eu(r),!0)})}}const ou=()=>[],cu=()=>({}),uu=()=>"";async function iu(t,n){for(let r=0;r0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const lu=I(au);class hu{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function du(t){return new hu(t)}function gu(t){return t?gu[t]:_(gu)}const pu=globalThis.navigator?.userAgentData;if(pu)Rn(pu,((t,n)=>{vo(t)&&t&&(gu[n]=t)})),s(pu.brands,(t=>{gu[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{gu[t]=!0}))}function mu(t,n,r,e){return t.addEventListener(n,r,e),t}function wu(t,n,r,e){return t.removeEventListener(n,r,e),t}function yu(t){return 13===t.keyCode}const bu=document.createDocumentFragment.bind(document);function vu(t,n){return t.appendChild(n),n}function Au(t,n){return y(n)?Ae(n,it(n,(n=>t.getAttribute(n)))):(Rn(n,((n,r)=>{t.setAttribute(r,n)})),t)}const Eu=/^.[\w_-]+$/,Iu=/^[A-Za-z]+$/,xu=/\s/,$u=document.getElementsByClassName.bind(document),Su=document.getElementsByTagName.bind(document),Cu=document.getElementById.bind(document),ju=document.querySelector.bind(document),Bu=document.querySelectorAll.bind(document);function Ou(t){switch(t[0]){case"#":if(!xu.test(t))return Cu(_e(t));break;case".":if(Eu.test(t))return $u(_e(t));break;default:if(Iu.test(t))return Su(t)}return Bu(t)}const Fu=document.createElement.bind(document);function Lu(t){const n=Dc(t)&&t||`${t}.js`;return(t=>Yc((n=>{mu(t,"load",n,!0),mu(t,"error",n,!0),vu(ju("head"),t)})))(Au(Fu("script"),{async:"",src:n}))}function Tu(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&mu(document,"DOMContentLoaded",t),!1)}Tu((()=>{const t=Cu("AcidLib");Lu(t&&t.getAttribute("data-index")||"/index")}));const Mu=location.protocol,Ru="http:"===Mu?"ws":"wss",Nu=location.hostname,Pu={hardware:{cores:navigator.hardwareConcurrency},host:{name:Nu,protocol:Mu,protocolSocket:Ru}};function Uu(){Tn(Pu,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function _u(){Uu()}let ku;Tu(_u),mu(window,"load",_u,!0),mu(window,"resize",_u,!0),function(t){try{t().removeItem("TESTING"),ku=!0}catch(t){ku=!1}}((()=>localStorage));class Du{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=du(t)}hasLocal=ku;setItem(t,n){return this.hasLocal&&this.local.setItem(t,mn(n)?n:mc(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return u(n)?n:!u(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}function Hu(t){return new Du(t)}const Wu=(t,n)=>`color:${t};background:${n};`,Zu={alert:Wu("#fff","#f44336"),important:Wu("#fff","#E91E63"),notify:Wu("#fff","#651FFF"),warning:Wu("#000","#FFEA00")},qu=(t,n)=>{const r=mn(t)?t:mc(t);if("alert"===n||"warning"===n)return console.trace(`%c${r}`,`${Zu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${r}`,`${Zu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},zu=(t,n,r)=>{Zu[t]=Wu(n,r)};function Gu(t){return t&&9!==t.nodeType}function Vu(t){return!!u(t)&&"[object HTMLCollection]"===t.toString()}function Ju(t){return!!u(t)&&"[object NodeList]"===t.toString()}export{Vn as Chain,Du as Crate,Wc as Intervals,Vc as Model,eu as Store,cr as Timers,au as UniqID,hu as VirtualStorage,Hr as add,Bn as after,vu as append,ar as apply,we as arrayToRegex,_c as arraysToObject,On as ary,bc as assert,yc as assertAsync,Tn as assign,Fn as before,vc as bindAll,Nr as cacheNativeMethod,Gr as calcProgress,xe as camelCase,Jn as chain,t as chunk,Pe as chunkString,Ac as clear,n as clearArray,Gt as clearBuffer,zc as clearIntervals,sr as clearTimers,Ic as clone,r as cloneArray,Ar as cloneType,qu as cnsl,zu as cnslTheme,xc as compact,ue as compactKeys,Cc as compactMap,f as compactMapArray,l as compactMapAsyncArray,ie as compactMapAsyncObject,se as compactMapObject,Qc as concurrent,Xc as concurrentStatus,I as construct,Q as constructorName,Vt as countBy,Jt as countKey,Kt as countWithoutKey,Hu as crate,bu as createFragment,Kn as curry,Qn as curryRight,lr as debounce,Wr as deduct,_r as defProp,x as difference,Zr as divide,$ as drop,S as dropRight,Gn as each,s as eachArray,a as eachAsyncArray,Mn as eachAsyncObject,Rn as eachObject,C as eachRight,j as eachRightAsync,v as ensureArray,zt as ensureBuffer,me as escapeRegex,pe as escapeRegexRegex,mu as eventAdd,wu as eventRemove,Or as every,jc as everyArg,B as everyArray,O as everyAsyncArray,Sr as everyAsyncObject,Cr as everyObject,tr as falsy,Fc as filter,F as filterArray,L as filterAsyncArray,ae as filterAsyncObject,fe as filterObject,Xt as findIndex,Qt as findIndexCache,Yt as findItem,T as first,M as flatten,A as flattenDeep,Tc as flow,Nc as flowAsync,Pc as flowAsyncRight,Mc as flowRight,w as forEach,Nn as forEachAsync,Uc as forMap,_n as forOf,Hn as forOfAsync,Sc as forOfCompactMap,$c as forOfCompactMapAsync,jr as forOfEvery,Br as forOfEveryAsync,Bc as forOfFilter,Oc as forOfFilterAsync,Er as forOfMap,Ir as forOfMapAsync,zn as generateLoop,Z as get,$u as getByClass,Cu as getById,Su as getByTag,ce as getEntries,En as getFileExtension,In as getFilename,un as getHighest,sn as getLowest,Ot as getNumberInsertIndex,Ur as getPropDesc,Pr as getPropNames,vr as getType,io as getTypeName,fn as groupBy,kc as has,G as hasAnyKeys,Dc as hasDot,z as hasKeys,o as hasLength,ku as hasLocal,kr as hasProp,u as hasValue,Je as htmlEntities,hr as ifInvoke,Hc as ifNotAssign,hc as ifValue,Lu as importjs,dr as inAsync,gr as inSync,qr as increment,an as indexBy,Pu as info,R as initial,Ue as initialString,Re as insertInRange,N as intersection,qc as interval,Zc as intervals,le as invert,P as invokeArray,ln as invokeCollection,hn as invokeCollectionAsync,gu as isAgent,so as isArguments,y as isArray,Eo as isArrayBuffer,Ao as isArrayBufferCall,mo as isArrayLike,qn as isAsync,Zn as isAsyncCall,yo as isBigInt,wo as isBigIntCall,vo as isBoolean,bo as isBooleanCall,nt as isBuffer,tt as isBufferCall,Io as isChild,$o as isCloneable,J as isConstructor,K as isConstructorFactory,X as isConstructorNameFactory,Co as isDate,So as isDateCall,sc as isDeno,Tu as isDocumentReady,Gu as isDom,jo as isEmpty,yu as isEnter,rt as isEqual,Fo as isF32,Oo as isF32Call,To as isF64,Lo as isF64Call,Bo as isFalse,lc as isFalsy,$n as isFileCSS,Sn as isFileHTML,Cn as isFileJS,jn as isFileJSON,Ro as isFloat,Wn as isFunction,Dn as isGenerator,kn as isGeneratorCall,Vu as isHTMLCollection,Po as isI16,No as isI16Call,_o as isI32,Uo as isI32Call,Do as isI8,ko as isI8Call,Ho as isIterable,Zo as isKindAsync,lo as isMap,ao as isMapCall,et as isMatchArray,he as isMatchObject,d as isNegative,Ju as isNodeList,fc as isNodejs,b as isNotArray,pn as isNotNumber,wn as isNotString,c as isNull,gn as isNumber,dn as isNumberCall,$t as isNumberEqual,Yr as isNumberInRange,te as isNumberNotInRange,qo as isParent,V as isPlainObject,re as isPositive,zo as isPrimitive,Wo as isPromise,ge as isRegex,de as isRegexCall,Go as isRelated,Jo as isSafeInt,Dr as isSame,Ko as isSameType,Un as isSet,Pn as isSetCall,mn as isString,Qo as isTrue,ac as isTruthy,Y as isTypeFactory,po as isTypedArray,Yo as isU16,Xo as isU16Call,nc as isU32,tc as isU32Call,ec as isU8,cc as isU8C,oc as isU8CCall,rc as isU8Call,e as isUndefined,ic as isWeakMap,uc as isWeakMapCall,ee as isZero,pc as jsonParse,Ce as kebabCase,_ as keys,ct as largest,ut as last,Me as lowerCase,xr as map,it as mapArray,st as mapAsyncArray,yr as mapAsyncObject,br as mapObject,ft as mapRightArray,at as mapWhile,Gc as merge,Jc as model,zr as multiply,pr as negate,fo as noValue,Au as nodeAttribute,rr as noop,dc as notEqual,mr as nthArg,Ln as objectAssign,oe as objectEntries,ve as objectSize,ye as omit,wr as once,Tt as onlyUnique,$r as over,Fr as overEvery,Kc as pair,dt as partition,be as pick,bn as pluck,yn as pluckObject,Yc as promise,tu as propertyMatch,ju as querySelector,Bu as querySelectorAll,Jr as randomFloat,Et as randomInt,m as range,p as rangeDown,g as rangeUp,Ve as rawURLDecode,Lr as reArg,xn as regexTestFactory,Kr as remainder,mt as remove,wt as removeBy,ke as replaceList,yt as rest,_e as restString,i as returnValue,bt as right,Ne as rightString,Ct as sample,Ke as sanitize,Uu as saveDimensions,Ou as selector,nu as setKey,ru as setValue,St as shuffle,Bt as smallest,Oe as snakeCase,en as sortCollectionAlphabetically,An as sortCollectionAlphabeticallyReverse,cn as sortCollectionAscending,on as sortCollectionAscendingFilter,nn as sortCollectionDescending,tn as sortCollectionDescendingFilter,ht as sortNumberAscending,pt as sortNumberDescening,rn as sortObjectsAlphabetically,vn as sortObjectsAlphabeticallyReverse,Mt as sortUnique,mc as stringify,ou as stubArray,nr as stubFalse,cu as stubObject,uu as stubString,Yn as stubTrue,lt as subtract,Qr as subtractAll,gt as subtractReverse,Xr as sumAll,Ft as take,Lt as takeRight,Zu as themes,Tr as throttle,ir as timer,ur as timers,er as times,iu as timesAsync,or as timesMap,su as timesMapAsync,xt as toArray,W as toPath,fu as toggle,Ye as tokenize,De as truncate,He as truncateRight,Xn as truth,qt as unZip,Ee as unZipObject,Nt as union,lu as uniqID,Rt as unique,Pt as untilFalseArray,Ut as untilTrueArray,_u as updateDimensions,Le as upperCase,eo as upperFirst,co as upperFirstAll,ro as upperFirstLetter,oo as upperFirstOnly,uo as upperFirstOnlyAll,du as virtualStorage,_t as whileCompactMap,kt as whileEachArray,Dt as whileMapArray,Ht as without,to as words,Mr as wrap,Wt as xor,Zt as zip,Ae as zipObject}; //# sourceMappingURL=index.js.map diff --git a/github/module/index.js b/github/module/index.js index 9ae01263..671a3a50 100644 --- a/github/module/index.js +++ b/github/module/index.js @@ -1,2 +1,2 @@ -import{readdir as n,stat as t,mkdir as r,copyFile as e}from"fs/promises";import o from"path";import{fileURLToPath as u}from"url";function c(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function i(n){return n.length=0,n}function s(n){return n.slice()}function f(n){return void 0===n}function a(n){return Boolean(n.length)}function l(n){return null===n}function h(n){return!f(n)&&!l(n)}function g(n){return n}function p(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const s=t.call(e,n,u,r,c,i,o);h(s)&&r.push(s)})):p(n,((n,u,c,i)=>{const s=t(n,u,r,c,i,e,o);h(s)&&r.push(s)})),r}async function m(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const u=await t(n,e,r,o);h(u)&&r.push(u)})),r}const{sign:y}=Math;function b(n){return-1===y(n)}function v(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function E(n,t,r=1,e=[]){return b(r)?e:n{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function M(n,t=1,r=n.length){return n.splice(t,r)}const T=(n,t=1,r=n.length)=>M(n,0,r-t);function _(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function F(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function R(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function N(n,t,r=[],e){return await m(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function D(n,t){return t?n.slice(0,t):n[0]}function L(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(O(t))),[]);return r}function Z(n){return n.slice(0,n.length-1)}function k(n,...t){return d(n,(n=>{if(R(t,(t=>t.includes(n))))return n}))}const q=Object.keys;function V(n){if(n)return q(n)}const G=/\.|\[/,J=/]/g,W="";function z(n){return n.replace(J,W).split(G)}function H(n,t){if(!t)return!1;let r=t;return R(I(n)?n:z(n),(n=>(r=r[n],h(r)))),r}const K=Object.hasOwn;function Q(n,...t){if(n)return R(t,(t=>{const r=z(t);if(1===r.length)return K(n,t);{const t=r.pop(),e=H(r,n);return!!e&&K(e,t)}}))}function X(n,...t){if(n)return Boolean(t.find((t=>{const r=z(t);if(1===r.length)return K(n,t);{const t=r.pop(),e=H(r,n);return!!e&&K(e,t)}})))}const Y=n=>!!h(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function nn(n,t){return n?.constructor===t||!1}function tn(n){return t=>nn(t,n)}function rn(n){return n?.constructor?.name}function en(n){return t=>rn(t)===n||!1}function on(n){return function(t,...r){return r?n(t)&&R(r,n):n(t)}}const un=en("Buffer"),cn=on(un),sn=(n,t)=>{if(n===t)return!0;if(cn(n))return n.equals(t);if(n.toString()===t.toString())if(Y(n)){const r=V(n);if(Q(t,r))return R(r,(r=>sn(n[r],t[r])))}else if(I(n)&&n.length===t.length)return R(n,((n,r)=>sn(n,t[r])));return!1};function fn(n,t){return n.length===t.length&&R(n,((n,r)=>sn(t[r],n)))}const an=Math.max;function ln(n){return an(...n)}function hn(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function gn(n,t,r=[],e,o){return h(e)?p(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):p(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function pn(n,t){const r=[];return await m(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function dn(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function mn(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function vn(n,t){return t-n}function An(n){return n.sort(vn)}function En(n,t){let r=n.length;for(let e=0;er)return Tn(n);if(1===t)return[n[Bn(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Un(n,t=1){return n.slice(0,t)}function Nn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Dn(n,t,r){return r.indexOf(n)===t}function Ln(n,t,r){return n!==r[t-1]}function Zn(n,t){return t?n.filter(Ln):n.filter(Dn)}function kn(...n){return Zn($(n))}function qn(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function Hn(...n){const t=C(Map),r=[];return 2===n.length?S(n[0],n[1]):(p(n,((n,r)=>{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Kn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Qn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Xn(n){return cn(n)&&n||h(n)&&Buffer.from(n)||Buffer.alloc(0)}function Yn(n){return n.fill(0),n}function nt(n,t){const r={};let e;return p(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function tt(n,t){let r=0;return p(n,(n=>{n[t]&&r++})),r}function rt(n,t){let r=0;return p(n,(n=>{n[t]||r++})),r}function et(n,t,r,e,o){if(n[o]===e)return!0}function ot(n,t,r="id"){const e=n.findIndex(((n,e)=>et(n,0,0,t,r)));return-1!==e&&e}function ut(n,t,r="id"){const e=n.find(((n,e)=>et(n,0,0,t,r)));return-1!==e&&e}function ct(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function it(n,t="id",r){return n.sort(((n,e)=>ct(n,e,t,r)))}function st(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function ft(n,t="id",r){return n.sort(((n,e)=>st(n,e,t,r)))}function at(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function lt(n,t="id",r){return n.sort(((n,e)=>at(n,e,t,r)))}function ht(n,t="id"){return lt(n,t)[0]}function gt(n,t){return it(n,t,!1)[0]}function pt(n,t){const r={};return p(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function dt(n,t="id"){const r={};return p(n,(n=>{r[n[t]]=n})),r}function mt(n,t,r){return gn(n,((n,e)=>n[t](r,e)))}function wt(n,t,r){return pn(n,(async(n,e)=>n[t](r,e)))}const yt=en("Number"),bt=on(yt);function vt(n){return!bt(n)}const At=tn(String);function Et(n){return!At(n)}function jt(n,t){if(n)return At(t)?n[t]:gn(t,(t=>n[t]))}function It(n,t){return gn(n,(n=>jt(n,t)))}function xt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function Ot(n,t="id",r){return n.sort(((n,e)=>xt(n,e,t,r)))}function $t(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function Bt(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function Ct(n){return t=>!!h(t)&&n.test(t)}const St=Ct(/\.css$/),Mt=Ct(/\.html$/),Tt=Ct(/\.js$/),_t=Ct(/\.json$/);function Ft(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function Rt(n,t){return(...r)=>n(...r.splice(0,t))}function Pt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Ut=Object.assign;function Nt(n,...t){if(h(n))return Ut(n,...t)}const Dt=async(n,t,r,e)=>{if(!n)return;const o=V(n);return h(r)?await m(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await m(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Lt(n,t,r,e){if(!n)return;const o=V(n);return h(r)?p(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):p(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function Zt(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!h(n)&&n instanceof Function,Ht=en("AsyncFunction"),Kt=on(Ht);function Qt(n,t,r,e,o,u){return(c,i,s,f,a)=>{let l;const g=Kt(i);if(h(c)&&i)return l=I(c)?g?t:n:Y(c)||zt(c)?g?e:r:o?g?u:o:Jt(c)?u:g?e:r,l(c,i,s,f,a)}}const Xt=Qt(p,m,Lt,Dt,Vt,Wt);class Yt{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Xt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function nr(n){return C(Yt,[n])}function tr(n,t=n.length){const r=[],e=(...o)=>{if(r.push(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}function rr(n,t=n.length){const r=[],e=(...o)=>{if(r.unshift(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}const er=!0,or=()=>er,ur=!1,cr=()=>ur,ir=()=>{};function sr(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,er),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const lr=C(ar);function hr(n,t){return lr.set(n,t)}function gr(){sr(setTimeout(ir,0),(n=>{lr.remove(n)}))}const pr=Reflect.apply;function dr(n,t,r){if(zt(n))return pr(n,t,r)}function mr(n,t){function r(...n){r.id!==ur&&lr.remove(r.id),r.id=hr((()=>{r.callable(...n),r.id=ur}),t)}return r.id=ur,r.callable=n.bind(r),r.clear=()=>{r.id!==ur&&(lr.remove(r.id),r.id=ur)},r}function wr(n,...t){if(zt(n))return n(...t)}async function yr(n,t){const r=n.length;for(let e=0;eXt(n,(n=>{n(t)}));function vr(n){return(...t)=>!n(...t)}function Ar(n=0){return(...t)=>t[n]}const Er=n=>{let t;return(...r)=>(h(t)||(t=n(...r)),t)};async function jr(n,t,r={}){if(n)return await Dt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function Ir(n,t,r={},e,o){if(n)return h(e)?Lt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Lt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function xr(n){return n?.constructor}function Or(n,t=[]){const r=xr(n);return r===Function&&"function"===r.name?function(){}:C(r,t)}function $r(n,t=g,r){const e=r||Or(n);if(I(n)||qt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=zt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Br(n,t=g,r,e){if(Jt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||Or(n);if(I(n)||qt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=zt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const Cr=Qt(gn,pn,Ir,jr,$r,Br);function Sr(n){return(...t)=>Cr(n,(n=>n(...t)))}async function Mr(n,t){if(!n)return;return P(V(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function Tr(n,t){if(!n)return;return R(V(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function _r(n,t=g){if(I(n)||qt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Fr(n,t=g,r){if(Jt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(I(n)||qt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Rr=Qt(R,P,Tr,Mr,_r,Fr);function Pr(n){return t=>Rr(n,(n=>n(t)))}function Ur(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Nr(n,t){function r(...n){r.id?r.shouldThrottle=er:(r.callable(...n),r.id=hr((()=>{r.shouldThrottle&&r.callable(...n),r.id=ur}),t))}return r.id=ur,r.callable=n.bind(r),r.clear=()=>{lr.remove(r.id),r.id=ur},r}function Dr(n,t){return(...r)=>t(n,...r)}const Lr=Function.prototype;function Zr(n){return Lr.call.bind(n)}const kr=Object.getOwnPropertyNames,qr=Object.getOwnPropertyDescriptor,Vr=Object.defineProperty,Gr=Zr(Object.hasOwnProperty),Jr=Object.is;function Wr(n,t){return n+t}function zr(n){return n-1}function Hr(n,t){return n/t}function Kr(n){return n+1}function Qr(n,t){return n*t}function Xr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:Yr}=Math;function ne(n,t=0){return Yr()*(n-t)+t}function te(n,t){return n%t}function re(n){return n.reduce(((n,t)=>n-t),0)}function ee(n){return n.reduce(((n,t)=>n+t),0)}function oe(n,t,r){return n>t&&nr}const{sign:ce}=Math;function ie(n){return 1===ce(n)}function se(n){return 0===n}const fe=Object.entries;function ae(n){if(h(n))return fe(n)}function le(n){const t=[];return Lt(n,((n,r)=>{h(n)&&t.push(r)})),t}async function he(n,t=g,r={}){return await Dt(n,(async(n,e,o,u,c)=>{const i=await t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function ge(n,t=g,r={}){return Lt(n,((n,e,o,u,c)=>{const i=t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function pe(n,t,r={}){return Lt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function de(n,t,r={}){return await Dt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function me(n,t={}){if(n)return Lt(n,((n,r)=>{t[n]=r})),t}const we=(n,t)=>{if(n===t)return!0;const r=V(n),e=V(t);return r.length===e.length&&R(r,(r=>n[r]===t[r]))},ye=en("RegExp"),be=on(ye),ve=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Ae(n){return n.replace(ve,"\\$&")}function Ee(n,t){return t?Ee(gn(n,Ae)):RegExp(n.join("|"))}function je(n,t){if(n){if(I(t)){const r=Ee(t);return pe(n,((n,t)=>!r.test(t)))}if(be(t))return pe(n,((n,r)=>!t.test(r)));if(At(t))return pe(n,((n,r)=>r!==t));if(bt(t)){const r=t.toString();return pe(n,((n,t)=>t!==r))}return zt(t)?pe(n,((n,r)=>!t(n,r))):void 0}}const Ie=(n,t,r={})=>{if(n)return p(t,(t=>{r[t]=n[t]})),r};function xe(n){if(n)return V(n).length}const Oe=(n,t)=>{const r={};return p(n,((n,e)=>{r[n]=t[e]})),r},$e=n=>{const t=[],r=[];return Lt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Be=/[ _-]+/g;function Ce(n){let t="";return n.replace(Be," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const Se=/[ _-]+/g,Me=/[ ]+/g;function Te(n){return n.replace(/([A-Z]+)/g," $1").replace(Se," ").trim().toLowerCase().replace(Me,"-")}const _e=/[ _-]+/g,Fe=/[ ]+/g;function Re(n){return n.replace(/([A-Z]+)/g," $1").replace(_e," ").trim().toLowerCase().replace(Fe,"_")}const Pe=/[ _-]+/g;function Ue(n){return n.replace(/([A-Z]+)/g," $1").replace(Pe," ").trim().toUpperCase()}const Ne=/[ _-]+/g;function De(n){return n.replace(/([A-Z]+)/g," $1").replace(Ne," ").trim().toLowerCase()}function Le(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function Ze(n,t=1){return n[n.length-t]}function ke(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function qe(n,t=1){return n.slice(0,-1*t)}function Ve(n,t=1){return n.substring(t)}function Ge(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function Je(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function We(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const ze=/%(?![\da-f]{2})/gi,He=/&/g,Ke=//g,Xe=/"/g;function Ye(n){return decodeURIComponent(n.replace(ze,(()=>"%25")))}function no(n){return n.replace(He,"&").replace(Ke,"<").replace(Qe,">").replace(Xe,""")}function to(n){return no(Ye(n))}const ro=/\S+/g,eo=/\w+/g;function oo(n){return n.match(ro)||[]}function uo(n){return n.match(eo)||[]}const co=/\w+/g;function io(n){return n[0].toUpperCase()}function so(n){return io(n)+Ve(n)}function fo(n){return io(n)+Ve(n).toLowerCase()}function ao(n){return n.replace(co,(n=>so(n)))}function lo(n){return n.replace(co,(n=>fo(n)))}function ho(n){return xr(n)?.name}function go(n){return!!h(n)&&"[object Arguments]"===n.toString()}function po(n){return!h(n)}const mo=en("Map"),wo=on(mo),yo=/Array/,bo="Array";function vo(n){if(n){const t=ho(n);if(yo.test(t)&&t!==bo)return!0}return!1}function Ao(n,t){if(po(n)||zt(n))return!1;if(I(n)||vo(n))return!0;const r=n.length;if(!po(r)||!bt(r)||r<0)return!1;if(t){const t=V(n);return!!t&&Rr(t,((n,t)=>t>=0&&bt(t)))}return!0}const Eo=en("BigInt"),jo=on(Eo),Io=en("Boolean"),xo=on(Io),Oo=en("ArrayBuffer"),$o=on(Oo);function Bo(n,t){return!(!n||!t)&&n instanceof t}const Co=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function So(n){if(h(n)){const t=n?.constructor?.name;return Co.test(t)}return!1}const Mo=en("Date"),To=on(Mo);function _o(n){return At(n)||I(n)?!a(n):Y(n)?!xe(n):!h(n)}function Fo(n){return!1===n}const Ro=en("Float32Array"),Po=on(Ro),Uo=en("Float64Array"),No=on(Uo),{isInteger:Do}=Number,Lo=Do,Zo=en("Int16Array"),ko=on(Zo),qo=en("Int32Array"),Vo=on(qo),Go=en("Int8Array"),Jo=on(Go);function Wo(n){return h(n)&&"function"==typeof n[Symbol.iterator]}function zo(n){return!!n&&n instanceof Promise}function Ho(n){return!!n&&(zo(n)||Kt(n)||Jt(n))}function Ko(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Qo(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Xo(n,t){return!po(n)&&!po(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:Yo}=Number,nu=Yo;function tu(n,t){const r=xr(n),e=xr(t);return r===e&&r.name===e.name}function ru(n){return!0===n}const eu=en("Uint16Array"),ou=on(eu),uu=en("Uint32Array"),cu=on(uu),iu=en("Uint8Array"),su=on(iu),fu=en("Uint8ClampedArray"),au=on(fu),lu=en("WeakMap"),hu=on(lu),gu=void 0!==globalThis.Deno,pu=void 0!==globalThis.process&&process.versions&&process.versions.node;function du(n,t=!0){return Boolean(n)&&t}function mu(n,t=!0){return!1===Boolean(n)&&t}function wu(n,t,r,e){if(h(n)){if(zt(t))return r?dr(t,r,e):t(...e);if(Y(t))return t[r]=n,t}}function yu(n,t){return Fo(sn(n,t))}const bu=JSON;function vu(n,t){if(n)return bu.parse(n,t)}const Au=bu.stringify;function Eu(n,t,r){const e=globalThis.options||r;let o;return zt(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Au(n)}\n\t\tExpected: ${Au(t)}`,e)}async function ju(n,t,r){const e=await n;return!(zt(t)&&!1===await t(e,r))&&!yu(e,t)||Eu(e,t,r)}function Iu(n,t,r){if(Ho(n)||Ho(t))return ju(n,t,r);return!(zt(t)&&!1===t(n,r))&&!yu(n,t)||Eu(n,t,r)}function xu(n,t,r){const e=Cr(n,(n=>zt(n)?n.bind(t):n));return r?Nt(r,e):e}function Ou(n){if(n){if(cn(n))return Yn(n);if(I(n))return i(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const $u=globalThis.structuredClone;function Bu(n){return $u(n)}function Cu(n){if(Y(n)){const t=V(n),r=t.length,e={};for(let o=0;odu(n)))}async function Su(n,t=g,r,e){if(Jt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);h(e)&&r.push(e)}return r}const o=r||Or(n);if(I(n)||qt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);h(u)&&e(u)}return o}const u=zt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);h(c)&&(u?o.set(r,c):o[r]=c)}return o}function Mu(n,t=g,r){const e=r||Or(n);if(I(n)||qt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);h(u)&&o(u)}return e}const o=zt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);h(c)&&(o?e.set(r,c):e[r]=c)}return e}const Tu=Qt(d,w,ge,he,Mu,Su);function _u(...n){return Kt(n[0])?async function(...t){return Rr(n,(async n=>Rr(t,(async t=>n(t)))))}:function(...t){return Rr(n,(n=>Rr(t,(t=>n(t)))))}}function Fu(n,t=g,r){const e=r||Or(n);if(I(n)||qt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=zt(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Ru(n,t=g,r,e){if(Jt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||Or(n);if(I(n)||qt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=zt(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Pu=Qt(U,N,pe,de,Fu,Ru);function Uu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Nu=Uu(p),Du=Uu(_);function Lu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const Zu=Lu(m),ku=Lu(F);function qu(n,t){const r=Or(n),e=r.push||r.add;if(e&&zt(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else zt(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function Vu(n,t){const r={};return p(n,((n,e)=>{r[t[e]]=n})),r}function Gu(n,t,r){if(po(n)||po(t))return!1;if(At(n))return At(t)?n.includes(t,r):be(t)?t.test(n):zt(t)?Boolean(t(n)):Rr(t,(t=>Boolean(Gu(n,t))));if(I(n)){if(At(t))return n.includes(t,r);if(be(t))return Rr(n,(n=>n.test(t)));if(I(t))return Rr(t,(t=>Boolean(Gu(n,t))))}return!1}const Ju=Ct(/\./),Wu=(n,t,r)=>(t&&!h(n[t])&&(n[t]=r),n);class zu{list=C(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,er),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const Hu=C(zu);function Ku(n,t){return Hu.set(n,t)}function Qu(){sr(setTimeout(ir,0),(n=>{Hu.remove(n)}))}function Xu(n,...t){return Xt(t,(t=>{Xt(t,((t,r)=>{if(n[r]&&(Y(t)||I(t)||t.forEach))return Xu(n[r],t);n[r]=t}))})),n}class Yu{static models={};constructor(n,t){h(t)?(Nt(this,t),this.modelName=n,Yu.models.set(n,t)):Nt(this,n)}}function nc(n,t){return h(t)?C(Yu,[n,t]):H(n,Yu.models)}function tc(n,t){return[n,t]}function rc(n,t,r){const e=n.length,o=[];for(let u=0;uR(r,(r=>sn(n[r],t[r])));function cc(n,t,r){return t&&Y(n)||bt(t)&&I(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function ic(n,t,r){return bt(r)&&I(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class sc{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Lt(n,(t=>{n[t]=new sc(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new sc(r),!0)})}}const fc=()=>[],ac=()=>({}),lc=()=>"";async function hc(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const mc=C(dc);class wc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function yc(n){return new wc(n)}async function bc(u,c){const i=await n(u);return await m(i,(async n=>{const i=o.join(u,n);if((await t(i)).isDirectory()){const t=o.join(c,n.replace(u,""));await r(t,{recursive:!0}),await bc(i,t)}else await async function(n,t,r){const u=o.join(n,r),c=o.join(t,r);await e(u,c)}(u,c,n)})),!0}function vc(n){return globalThis.__filename?__filename:u(n.url)}function Ac(n){return globalThis.__dirname?__dirname:o.dirname(u(n.url))}export{Yt as Chain,zu as Intervals,Yu as Model,sc as Store,ar as Timers,dc as UniqID,wc as VirtualStorage,Wr as add,Ft as after,dr as apply,Ee as arrayToRegex,Vu as arraysToObject,Rt as ary,Iu as assert,ju as assertAsync,Nt as assign,Pt as before,xu as bindAll,Zr as cacheNativeMethod,Xr as calcProgress,Ce as camelCase,nr as chain,c as chunk,ke as chunkString,Ou as clear,i as clearArray,Yn as clearBuffer,Qu as clearIntervals,gr as clearTimers,Bu as clone,s as cloneArray,Or as cloneType,Cu as compact,le as compactKeys,Tu as compactMap,d as compactMapArray,w as compactMapAsyncArray,he as compactMapAsyncObject,ge as compactMapObject,rc as concurrent,ec as concurrentStatus,C as construct,rn as constructorName,bc as copyFolder,nt as countBy,tt as countKey,rt as countWithoutKey,vc as currentFile,Ac as currentPath,tr as curry,rr as curryRight,mr as debounce,zr as deduct,Vr as defProp,S as difference,Hr as divide,M as drop,T as dropRight,Xt as each,p as eachArray,m as eachAsyncArray,Dt as eachAsyncObject,Lt as eachObject,_ as eachRight,F as eachRightAsync,O as ensureArray,Xn as ensureBuffer,Ae as escapeRegex,ve as escapeRegexRegex,Rr as every,_u as everyArg,R as everyArray,P as everyAsyncArray,Mr as everyAsyncObject,Tr as everyObject,ur as falsy,Pu as filter,U as filterArray,N as filterAsyncArray,de as filterAsyncObject,pe as filterObject,ot as findIndex,et as findIndexCache,ut as findItem,D as first,L as flatten,$ as flattenDeep,Nu as flow,Zu as flowAsync,ku as flowAsyncRight,Du as flowRight,j as forEach,Zt as forEachAsync,qu as forMap,Vt as forOf,Wt as forOfAsync,Mu as forOfCompactMap,Su as forOfCompactMapAsync,_r as forOfEvery,Fr as forOfEveryAsync,Fu as forOfFilter,Ru as forOfFilterAsync,$r as forOfMap,Br as forOfMapAsync,Qt as generateLoop,H as get,ae as getEntries,$t as getFileExtension,Bt as getFilename,ht as getHighest,gt as getLowest,Pn as getNumberInsertIndex,qr as getPropDesc,kr as getPropNames,xr as getType,ho as getTypeName,pt as groupBy,Gu as has,X as hasAnyKeys,Ju as hasDot,Q as hasKeys,a as hasLength,Gr as hasProp,h as hasValue,no as htmlEntities,wr as ifInvoke,Wu as ifNotAssign,wu as ifValue,yr as inAsync,br as inSync,Kr as increment,dt as indexBy,Z as initial,qe as initialString,Le as insertInRange,k as intersection,Ku as interval,Hu as intervals,me as invert,mt as invoke,wt as invokeAsync,go as isArguments,I as isArray,$o as isArrayBuffer,Oo as isArrayBufferCall,Ao as isArrayLike,Kt as isAsync,Ht as isAsyncCall,jo as isBigInt,Eo as isBigIntCall,xo as isBoolean,Io as isBooleanCall,cn as isBuffer,un as isBufferCall,Bo as isChild,So as isCloneable,nn as isConstructor,tn as isConstructorFactory,en as isConstructorNameFactory,To as isDate,Mo as isDateCall,gu as isDeno,_o as isEmpty,sn as isEqual,Po as isF32,Ro as isF32Call,No as isF64,Uo as isF64Call,Fo as isFalse,mu as isFalsy,St as isFileCSS,Mt as isFileHTML,Tt as isFileJS,_t as isFileJSON,Lo as isFloat,zt as isFunction,Jt as isGenerator,Gt as isGeneratorCall,ko as isI16,Zo as isI16Call,Vo as isI32,qo as isI32Call,Jo as isI8,Go as isI8Call,Wo as isIterable,Ho as isKindAsync,wo as isMap,mo as isMapCall,fn as isMatchArray,we as isMatchObject,b as isNegative,pu as isNodejs,x as isNotArray,vt as isNotNumber,Et as isNotString,l as isNull,bt as isNumber,yt as isNumberCall,Mn as isNumberEqual,oe as isNumberInRange,ue as isNumberNotInRange,Ko as isParent,Y as isPlainObject,ie as isPositive,Qo as isPrimitive,zo as isPromise,be as isRegex,ye as isRegexCall,Xo as isRelated,nu as isSafeInt,Jr as isSame,tu as isSameType,qt as isSet,kt as isSetCall,At as isString,ru as isTrue,du as isTruthy,on as isTypeFactory,vo as isTypedArray,ou as isU16,eu as isU16Call,cu as isU32,uu as isU32Call,su as isU8,au as isU8C,fu as isU8CCall,iu as isU8Call,f as isUndefined,hu as isWeakMap,lu as isWeakMapCall,se as isZero,vu as jsonParse,Te as kebabCase,V as keys,ln as largest,hn as last,De as lowerCase,Cr as map,gn as mapArray,pn as mapAsyncArray,jr as mapAsyncObject,Ir as mapObject,dn as mapRightArray,mn as mapWhile,Xu as merge,nc as model,Qr as multiply,vr as negate,po as noValue,ir as noop,yu as notEqual,Ar as nthArg,Ut as objectAssign,fe as objectEntries,xe as objectSize,je as omit,Er as once,Dn as onlyUnique,Sr as over,Pr as overEvery,tc as pair,bn as partition,Ie as pick,It as pluck,jt as pluckObject,oc as promise,uc as propertyMatch,ne as randomFloat,Bn as randomInt,E as range,A as rangeDown,v as rangeUp,Ye as rawURLDecode,Ur as reArg,Ct as regexTestFactory,te as remainder,En as remove,jn as removeBy,Ge as replaceList,In as rest,Ve as restString,g as returnValue,xn as right,Ze as rightString,_n as sample,to as sanitize,cc as setKey,ic as setValue,Tn as shuffle,Rn as smallest,Re as snakeCase,ft as sortCollectionAlphabetically,Ot as sortCollectionAlphabeticallyReverse,lt as sortCollectionAscending,at as sortCollectionAscendingFilter,it as sortCollectionDescending,ct as sortCollectionDescendingFilter,yn as sortNumberAscending,An as sortNumberDescening,st as sortObjectsAlphabetically,xt as sortObjectsAlphabeticallyReverse,Ln as sortUnique,Au as stringify,fc as stubArray,cr as stubFalse,ac as stubObject,lc as stubString,or as stubTrue,wn as subtract,re as subtractAll,vn as subtractReverse,ee as sumAll,Un as take,Nn as takeRight,Nr as throttle,hr as timer,lr as timers,sr as times,hc as timesAsync,fr as timesMap,gc as timesMapAsync,Sn as toArray,z as toPath,pc as toggle,oo as tokenize,Je as truncate,We as truncateRight,er as truth,Qn as unZip,$e as unZipObject,kn as union,mc as uniqID,Zn as unique,qn as untilFalseArray,Vn as untilTrueArray,Ue as upperCase,so as upperFirst,ao as upperFirstAll,io as upperFirstLetter,fo as upperFirstOnly,lo as upperFirstOnlyAll,yc as virtualStorage,Gn as whileCompactMap,Jn as whileEachArray,Wn as whileMapArray,zn as without,uo as words,Dr as wrap,Hn as xor,Kn as zip,Oe as zipObject}; +import{readdir as n,stat as t,mkdir as r,copyFile as e}from"fs/promises";import o from"path";import{fileURLToPath as u}from"url";function c(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function i(n){return n.length=0,n}function s(n){return n.slice()}function f(n){return void 0===n}function a(n){return Boolean(n.length)}function l(n){return null===n}function h(n){return!f(n)&&!l(n)}function g(n){return n}function p(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const s=t.call(e,n,u,r,c,i,o);h(s)&&r.push(s)})):p(n,((n,u,c,i)=>{const s=t(n,u,r,c,i,e,o);h(s)&&r.push(s)})),r}async function m(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const u=await t(n,e,r,o);h(u)&&r.push(u)})),r}const{sign:y}=Math;function b(n){return-1===y(n)}function v(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function E(n,t,r=1,e=[]){return b(r)?e:n{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function M(n,t=1,r=n.length){return n.splice(t,r)}const T=(n,t=1,r=n.length)=>M(n,0,r-t);function _(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function F(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function R(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function N(n,t,r=[],e){return await m(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function D(n,t){return t?n.slice(0,t):n[0]}function L(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(O(t))),[]);return r}function Z(n){return n.slice(0,n.length-1)}function k(n,...t){return d(n,(n=>{if(R(t,(t=>t.includes(n))))return n}))}function q(n,t,r){if(!n)return;const e=n.length;if(h(r))for(let o=0;o(r=r[n],h(r)))),r}const Q=Object.hasOwn;function X(n,...t){if(n)return R(t,(t=>{const r=H(t);if(1===r.length)return Q(n,t);{const t=r.pop(),e=K(r,n);return!!e&&Q(e,t)}}))}function Y(n,...t){if(n)return Boolean(t.find((t=>{const r=H(t);if(1===r.length)return Q(n,t);{const t=r.pop(),e=K(r,n);return!!e&&Q(e,t)}})))}const nn=n=>!!h(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function tn(n,t){return n?.constructor===t||!1}function rn(n){return t=>tn(t,n)}function en(n){return n?.constructor?.name}function on(n){return t=>en(t)===n||!1}function un(n){return function(t,...r){return r?n(t)&&R(r,n):n(t)}}const cn=on("Buffer"),sn=un(cn),fn=(n,t)=>{if(n===t)return!0;if(sn(n))return n.equals(t);if(n.toString()===t.toString())if(nn(n)){const r=G(n);if(X(t,r))return R(r,(r=>fn(n[r],t[r])))}else if(I(n)&&n.length===t.length)return R(n,((n,r)=>fn(n,t[r])));return!1};function an(n,t){return n.length===t.length&&R(n,((n,r)=>fn(t[r],n)))}const ln=Math.max;function hn(n){return ln(...n)}function gn(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function pn(n,t,r=[],e,o){return h(e)?p(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):p(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function dn(n,t){const r=[];return await m(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function mn(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function wn(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function An(n,t){return t-n}function En(n){return n.sort(An)}function jn(n,t){let r=n.length;for(let e=0;er)return _n(n);if(1===t)return[n[Cn(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Nn(n,t=1){return n.slice(0,t)}function Dn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Ln(n,t,r){return r.indexOf(n)===t}function Zn(n,t,r){return n!==r[t-1]}function kn(n,t){return t?n.filter(Zn):n.filter(Ln)}function qn(...n){return kn($(n))}function Vn(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function Kn(...n){const t=C(Map),r=[];return 2===n.length?S(n[0],n[1]):(p(n,((n,r)=>{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Qn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Xn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Yn(n){return sn(n)&&n||h(n)&&Buffer.from(n)||Buffer.alloc(0)}function nt(n){return n.fill(0),n}function tt(n,t){const r={};let e;return p(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function rt(n,t){let r=0;return p(n,(n=>{n[t]&&r++})),r}function et(n,t){let r=0;return p(n,(n=>{n[t]||r++})),r}function ot(n,t,r,e,o){if(n[o]===e)return!0}function ut(n,t,r="id"){const e=n.findIndex(((n,e)=>ot(n,0,0,t,r)));return-1!==e&&e}function ct(n,t,r="id"){const e=n.find(((n,e)=>ot(n,0,0,t,r)));return-1!==e&&e}function it(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function st(n,t="id",r){return n.sort(((n,e)=>it(n,e,t,r)))}function ft(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function at(n,t="id",r){return n.sort(((n,e)=>ft(n,e,t,r)))}function lt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function ht(n,t="id",r){return n.sort(((n,e)=>lt(n,e,t,r)))}function gt(n,t="id"){return ht(n,t)[0]}function pt(n,t){return st(n,t,!1)[0]}function dt(n,t){const r={};return p(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function mt(n,t="id"){const r={};return p(n,(n=>{r[n[t]]=n})),r}function wt(n,t,r,e){return pn(n,e?(n,o)=>n[t].call(e,r):(n,e)=>n[t](r))}function yt(n,t,r,e){return dn(n,e?n=>n[t].call(e,r):async n=>n[t](r))}const bt=on("Number"),vt=un(bt);function At(n){return!vt(n)}const Et=rn(String);function jt(n){return!Et(n)}function It(n,t){if(n)return Et(t)?n[t]:pn(t,(t=>n[t]))}function xt(n,t){return pn(n,(n=>It(n,t)))}function Ot(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function $t(n,t="id",r){return n.sort(((n,e)=>Ot(n,e,t,r)))}function Bt(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function Ct(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function St(n){return t=>!!h(t)&&n.test(t)}const Mt=St(/\.css$/),Tt=St(/\.html$/),_t=St(/\.js$/),Ft=St(/\.json$/);function Rt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function Pt(n,t){return(...r)=>n(...r.splice(0,t))}function Ut(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Nt=Object.assign;function Dt(n,...t){if(h(n))return Nt(n,...t)}const Lt=async(n,t,r,e)=>{if(!n)return;const o=G(n);return h(r)?await m(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await m(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Zt(n,t,r,e){if(!n)return;const o=G(n);return h(r)?p(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):p(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function kt(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!h(n)&&n instanceof Function,Kt=on("AsyncFunction"),Qt=un(Kt);function Xt(n,t,r,e,o,u){return(c,i,s,f,a)=>{let l;const g=Qt(i);if(h(c)&&i)return l=I(c)?g?t:n:nn(c)||Ht(c)?g?e:r:o?g?u:o:Wt(c)?u:g?e:r,l(c,i,s,f,a)}}const Yt=Xt(p,m,Zt,Lt,Gt,zt);class nr{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Yt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function tr(n){return C(nr,[n])}function rr(n,t=n.length){const r=[],e=(...o)=>{if(r.push(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}function er(n,t=n.length){const r=[],e=(...o)=>{if(r.unshift(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}const or=!0,ur=()=>or,cr=!1,ir=()=>cr,sr=()=>{};function fr(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,or),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const hr=C(lr);function gr(n,t){return hr.set(n,t)}function pr(){fr(setTimeout(sr,0),(n=>{hr.remove(n)}))}const dr=Reflect.apply;function mr(n,t,r){if(Ht(n))return dr(n,t,r)}function wr(n,t){function r(...n){r.id!==cr&&hr.remove(r.id),r.id=gr((()=>{r.callable(...n),r.id=cr}),t)}return r.id=cr,r.callable=n.bind(r),r.clear=()=>{r.id!==cr&&(hr.remove(r.id),r.id=cr)},r}function yr(n,...t){if(Ht(n))return n(...t)}async function br(n,t){const r=n.length;for(let e=0;eYt(n,(n=>{n(t)}));function Ar(n){return(...t)=>!n(...t)}function Er(n=0){return(...t)=>t[n]}const jr=n=>{let t;return(...r)=>(h(t)||(t=n(...r)),t)};async function Ir(n,t,r={}){if(n)return await Lt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function xr(n,t,r={},e,o){if(n)return h(e)?Zt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Zt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function Or(n){return n?.constructor}function $r(n,t=[]){const r=Or(n);return r===Function&&"function"===r.name?function(){}:C(r,t)}function Br(n,t=g,r){const e=r||$r(n);if(I(n)||Vt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=Ht(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Cr(n,t=g,r,e){if(Wt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||$r(n);if(I(n)||Vt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=Ht(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const Sr=Xt(pn,dn,xr,Ir,Br,Cr);function Mr(n){return(...t)=>Sr(n,(n=>n(...t)))}async function Tr(n,t){if(!n)return;return P(G(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function _r(n,t){if(!n)return;return R(G(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function Fr(n,t=g){if(I(n)||Vt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Rr(n,t=g,r){if(Wt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(I(n)||Vt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Pr=Xt(R,P,_r,Tr,Fr,Rr);function Ur(n){return t=>Pr(n,(n=>n(t)))}function Nr(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Dr(n,t){function r(...n){r.id?r.shouldThrottle=or:(r.callable(...n),r.id=gr((()=>{r.shouldThrottle&&r.callable(...n),r.id=cr}),t))}return r.id=cr,r.callable=n.bind(r),r.clear=()=>{hr.remove(r.id),r.id=cr},r}function Lr(n,t){return(...r)=>t(n,...r)}const Zr=Function.prototype;function kr(n){return Zr.call.bind(n)}const qr=Object.getOwnPropertyNames,Vr=Object.getOwnPropertyDescriptor,Gr=Object.defineProperty,Jr=kr(Object.hasOwnProperty),Wr=Object.is;function zr(n,t){return n+t}function Hr(n){return n-1}function Kr(n,t){return n/t}function Qr(n){return n+1}function Xr(n,t){return n*t}function Yr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:ne}=Math;function te(n,t=0){return ne()*(n-t)+t}function re(n,t){return n%t}function ee(n){return n.reduce(((n,t)=>n-t),0)}function oe(n){return n.reduce(((n,t)=>n+t),0)}function ue(n,t,r){return n>t&&nr}const{sign:ie}=Math;function se(n){return 1===ie(n)}function fe(n){return 0===n}const ae=Object.entries;function le(n){if(h(n))return ae(n)}function he(n){const t=[];return Zt(n,((n,r)=>{h(n)&&t.push(r)})),t}async function ge(n,t=g,r={}){return await Lt(n,(async(n,e,o,u,c)=>{const i=await t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function pe(n,t=g,r={}){return Zt(n,((n,e,o,u,c)=>{const i=t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function de(n,t,r={}){return Zt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function me(n,t,r={}){return await Lt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function we(n,t={}){if(n)return Zt(n,((n,r)=>{t[n]=r})),t}const ye=(n,t)=>{if(n===t)return!0;const r=G(n),e=G(t);return r.length===e.length&&R(r,(r=>n[r]===t[r]))},be=on("RegExp"),ve=un(be),Ae=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Ee(n){return n.replace(Ae,"\\$&")}function je(n,t){return t?je(pn(n,Ee)):RegExp(n.join("|"))}function Ie(n,t){if(n){if(I(t)){const r=je(t);return de(n,((n,t)=>!r.test(t)))}if(ve(t))return de(n,((n,r)=>!t.test(r)));if(Et(t))return de(n,((n,r)=>r!==t));if(vt(t)){const r=t.toString();return de(n,((n,t)=>t!==r))}return Ht(t)?de(n,((n,r)=>!t(n,r))):void 0}}const xe=(n,t,r={})=>{if(n)return p(t,(t=>{r[t]=n[t]})),r};function Oe(n){if(n)return G(n).length}const $e=(n,t)=>{const r={};return p(n,((n,e)=>{r[n]=t[e]})),r},Be=n=>{const t=[],r=[];return Zt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Ce=/[ _-]+/g;function Se(n){let t="";return n.replace(Ce," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const Me=/[ _-]+/g,Te=/[ ]+/g;function _e(n){return n.replace(/([A-Z]+)/g," $1").replace(Me," ").trim().toLowerCase().replace(Te,"-")}const Fe=/[ _-]+/g,Re=/[ ]+/g;function Pe(n){return n.replace(/([A-Z]+)/g," $1").replace(Fe," ").trim().toLowerCase().replace(Re,"_")}const Ue=/[ _-]+/g;function Ne(n){return n.replace(/([A-Z]+)/g," $1").replace(Ue," ").trim().toUpperCase()}const De=/[ _-]+/g;function Le(n){return n.replace(/([A-Z]+)/g," $1").replace(De," ").trim().toLowerCase()}function Ze(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function ke(n,t=1){return n[n.length-t]}function qe(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function Ve(n,t=1){return n.slice(0,-1*t)}function Ge(n,t=1){return n.substring(t)}function Je(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function We(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function ze(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const He=/%(?![\da-f]{2})/gi,Ke=/&/g,Qe=//g,Ye=/"/g;function no(n){return decodeURIComponent(n.replace(He,(()=>"%25")))}function to(n){return n.replace(Ke,"&").replace(Qe,"<").replace(Xe,">").replace(Ye,""")}function ro(n){return to(no(n))}const eo=/\S+/g,oo=/\w+/g;function uo(n){return n.match(eo)||[]}function co(n){return n.match(oo)||[]}const io=/\w+/g;function so(n){return n[0].toUpperCase()}function fo(n){return so(n)+Ge(n)}function ao(n){return so(n)+Ge(n).toLowerCase()}function lo(n){return n.replace(io,(n=>fo(n)))}function ho(n){return n.replace(io,(n=>ao(n)))}function go(n){return Or(n)?.name}function po(n){return!!h(n)&&"[object Arguments]"===n.toString()}function mo(n){return!h(n)}const wo=on("Map"),yo=un(wo),bo=/Array/,vo="Array";function Ao(n){if(n){const t=go(n);if(bo.test(t)&&t!==vo)return!0}return!1}function Eo(n,t){if(mo(n)||Ht(n))return!1;if(I(n)||Ao(n))return!0;const r=n.length;if(!mo(r)||!vt(r)||r<0)return!1;if(t){const t=G(n);return!!t&&Pr(t,((n,t)=>t>=0&&vt(t)))}return!0}const jo=on("BigInt"),Io=un(jo),xo=on("Boolean"),Oo=un(xo),$o=on("ArrayBuffer"),Bo=un($o);function Co(n,t){return!(!n||!t)&&n instanceof t}const So=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function Mo(n){if(h(n)){const t=n?.constructor?.name;return So.test(t)}return!1}const To=on("Date"),_o=un(To);function Fo(n){return Et(n)||I(n)?!a(n):nn(n)?!Oe(n):!h(n)}function Ro(n){return!1===n}const Po=on("Float32Array"),Uo=un(Po),No=on("Float64Array"),Do=un(No),{isInteger:Lo}=Number,Zo=Lo,ko=on("Int16Array"),qo=un(ko),Vo=on("Int32Array"),Go=un(Vo),Jo=on("Int8Array"),Wo=un(Jo);function zo(n){return h(n)&&"function"==typeof n[Symbol.iterator]}function Ho(n){return!!n&&n instanceof Promise}function Ko(n){return!!n&&(Ho(n)||Qt(n)||Wt(n))}function Qo(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Xo(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Yo(n,t){return!mo(n)&&!mo(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:nu}=Number,tu=nu;function ru(n,t){const r=Or(n),e=Or(t);return r===e&&r.name===e.name}function eu(n){return!0===n}const ou=on("Uint16Array"),uu=un(ou),cu=on("Uint32Array"),iu=un(cu),su=on("Uint8Array"),fu=un(su),au=on("Uint8ClampedArray"),lu=un(au),hu=on("WeakMap"),gu=un(hu),pu=void 0!==globalThis.Deno,du=void 0!==globalThis.process&&process.versions&&process.versions.node;function mu(n,t=!0){return Boolean(n)&&t}function wu(n,t=!0){return!1===Boolean(n)&&t}function yu(n,t,r,e){if(h(n)){if(Ht(t))return r?mr(t,r,e):t(...e);if(nn(t))return t[r]=n,t}}function bu(n,t){return Ro(fn(n,t))}const vu=JSON;function Au(n,t){if(n)return vu.parse(n,t)}const Eu=vu.stringify;function ju(n,t,r){const e=globalThis.options||r;let o;return Ht(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Eu(n)}\n\t\tExpected: ${Eu(t)}`,e)}async function Iu(n,t,r){const e=await n;return!(Ht(t)&&!1===await t(e,r))&&!bu(e,t)||ju(e,t,r)}function xu(n,t,r){if(Ko(n)||Ko(t))return Iu(n,t,r);return!(Ht(t)&&!1===t(n,r))&&!bu(n,t)||ju(n,t,r)}function Ou(n,t,r){const e=Sr(n,(n=>Ht(n)?n.bind(t):n));return r?Dt(r,e):e}function $u(n){if(n){if(sn(n))return nt(n);if(I(n))return i(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const Bu=globalThis.structuredClone;function Cu(n){return Bu(n)}function Su(n){if(nn(n)){const t=G(n),r=t.length,e={};for(let o=0;omu(n)))}async function Mu(n,t=g,r,e){if(Wt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);h(e)&&r.push(e)}return r}const o=r||$r(n);if(I(n)||Vt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);h(u)&&e(u)}return o}const u=Ht(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);h(c)&&(u?o.set(r,c):o[r]=c)}return o}function Tu(n,t=g,r){const e=r||$r(n);if(I(n)||Vt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);h(u)&&o(u)}return e}const o=Ht(e.set);for(const[r,u]of n){const c=t(u,r,e,n);h(c)&&(o?e.set(r,c):e[r]=c)}return e}const _u=Xt(d,w,pe,ge,Tu,Mu);function Fu(...n){return Qt(n[0])?async function(...t){return Pr(n,(async n=>Pr(t,(async t=>n(t)))))}:function(...t){return Pr(n,(n=>Pr(t,(t=>n(t)))))}}function Ru(n,t=g,r){const e=r||$r(n);if(I(n)||Vt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=Ht(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Pu(n,t=g,r,e){if(Wt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||$r(n);if(I(n)||Vt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=Ht(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Uu=Xt(U,N,de,me,Ru,Pu);function Nu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Du=Nu(p),Lu=Nu(_);function Zu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const ku=Zu(m),qu=Zu(F);function Vu(n,t){const r=$r(n),e=r.push||r.add;if(e&&Ht(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else Ht(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function Gu(n,t){const r={};return p(n,((n,e)=>{r[t[e]]=n})),r}function Ju(n,t,r){if(mo(n)||mo(t))return!1;if(Et(n))return Et(t)?n.includes(t,r):ve(t)?t.test(n):Ht(t)?Boolean(t(n)):Pr(t,(t=>Boolean(Ju(n,t))));if(I(n)){if(Et(t))return n.includes(t,r);if(ve(t))return Pr(n,(n=>n.test(t)));if(I(t))return Pr(t,(t=>Boolean(Ju(n,t))))}return!1}const Wu=St(/\./),zu=(n,t,r)=>(t&&!h(n[t])&&(n[t]=r),n);class Hu{list=C(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,or),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const Ku=C(Hu);function Qu(n,t){return Ku.set(n,t)}function Xu(){fr(setTimeout(sr,0),(n=>{Ku.remove(n)}))}function Yu(n,...t){return Yt(t,(t=>{Yt(t,((t,r)=>{if(n[r]&&(nn(t)||I(t)||t.forEach))return Yu(n[r],t);n[r]=t}))})),n}class nc{static models={};constructor(n,t){h(t)?(Dt(this,t),this.modelName=n,nc.models.set(n,t)):Dt(this,n)}}function tc(n,t){return h(t)?C(nc,[n,t]):K(n,nc.models)}function rc(n,t){return[n,t]}function ec(n,t,r){const e=n.length,o=[];for(let u=0;uR(r,(r=>fn(n[r],t[r])));function ic(n,t,r){return t&&nn(n)||vt(t)&&I(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function sc(n,t,r){return vt(r)&&I(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class fc{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Zt(n,(t=>{n[t]=new fc(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new fc(r),!0)})}}const ac=()=>[],lc=()=>({}),hc=()=>"";async function gc(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const wc=C(mc);class yc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function bc(n){return new yc(n)}async function vc(u,c){const i=await n(u);return await m(i,(async n=>{const i=o.join(u,n);if((await t(i)).isDirectory()){const t=o.join(c,n.replace(u,""));await r(t,{recursive:!0}),await vc(i,t)}else await async function(n,t,r){const u=o.join(n,r),c=o.join(t,r);await e(u,c)}(u,c,n)})),!0}function Ac(n){return globalThis.__filename?__filename:u(n.url)}function Ec(n){return globalThis.__dirname?__dirname:o.dirname(u(n.url))}export{nr as Chain,Hu as Intervals,nc as Model,fc as Store,lr as Timers,mc as UniqID,yc as VirtualStorage,zr as add,Rt as after,mr as apply,je as arrayToRegex,Gu as arraysToObject,Pt as ary,xu as assert,Iu as assertAsync,Dt as assign,Ut as before,Ou as bindAll,kr as cacheNativeMethod,Yr as calcProgress,Se as camelCase,tr as chain,c as chunk,qe as chunkString,$u as clear,i as clearArray,nt as clearBuffer,Xu as clearIntervals,pr as clearTimers,Cu as clone,s as cloneArray,$r as cloneType,Su as compact,he as compactKeys,_u as compactMap,d as compactMapArray,w as compactMapAsyncArray,ge as compactMapAsyncObject,pe as compactMapObject,ec as concurrent,oc as concurrentStatus,C as construct,en as constructorName,vc as copyFolder,tt as countBy,rt as countKey,et as countWithoutKey,Ac as currentFile,Ec as currentPath,rr as curry,er as curryRight,wr as debounce,Hr as deduct,Gr as defProp,S as difference,Kr as divide,M as drop,T as dropRight,Yt as each,p as eachArray,m as eachAsyncArray,Lt as eachAsyncObject,Zt as eachObject,_ as eachRight,F as eachRightAsync,O as ensureArray,Yn as ensureBuffer,Ee as escapeRegex,Ae as escapeRegexRegex,Pr as every,Fu as everyArg,R as everyArray,P as everyAsyncArray,Tr as everyAsyncObject,_r as everyObject,cr as falsy,Uu as filter,U as filterArray,N as filterAsyncArray,me as filterAsyncObject,de as filterObject,ut as findIndex,ot as findIndexCache,ct as findItem,D as first,L as flatten,$ as flattenDeep,Du as flow,ku as flowAsync,qu as flowAsyncRight,Lu as flowRight,j as forEach,kt as forEachAsync,Vu as forMap,Gt as forOf,zt as forOfAsync,Tu as forOfCompactMap,Mu as forOfCompactMapAsync,Fr as forOfEvery,Rr as forOfEveryAsync,Ru as forOfFilter,Pu as forOfFilterAsync,Br as forOfMap,Cr as forOfMapAsync,Xt as generateLoop,K as get,le as getEntries,Bt as getFileExtension,Ct as getFilename,gt as getHighest,pt as getLowest,Un as getNumberInsertIndex,Vr as getPropDesc,qr as getPropNames,Or as getType,go as getTypeName,dt as groupBy,Ju as has,Y as hasAnyKeys,Wu as hasDot,X as hasKeys,a as hasLength,Jr as hasProp,h as hasValue,to as htmlEntities,yr as ifInvoke,zu as ifNotAssign,yu as ifValue,br as inAsync,vr as inSync,Qr as increment,mt as indexBy,Z as initial,Ve as initialString,Ze as insertInRange,k as intersection,Qu as interval,Ku as intervals,we as invert,q as invokeArray,wt as invokeCollection,yt as invokeCollectionAsync,po as isArguments,I as isArray,Bo as isArrayBuffer,$o as isArrayBufferCall,Eo as isArrayLike,Qt as isAsync,Kt as isAsyncCall,Io as isBigInt,jo as isBigIntCall,Oo as isBoolean,xo as isBooleanCall,sn as isBuffer,cn as isBufferCall,Co as isChild,Mo as isCloneable,tn as isConstructor,rn as isConstructorFactory,on as isConstructorNameFactory,_o as isDate,To as isDateCall,pu as isDeno,Fo as isEmpty,fn as isEqual,Uo as isF32,Po as isF32Call,Do as isF64,No as isF64Call,Ro as isFalse,wu as isFalsy,Mt as isFileCSS,Tt as isFileHTML,_t as isFileJS,Ft as isFileJSON,Zo as isFloat,Ht as isFunction,Wt as isGenerator,Jt as isGeneratorCall,qo as isI16,ko as isI16Call,Go as isI32,Vo as isI32Call,Wo as isI8,Jo as isI8Call,zo as isIterable,Ko as isKindAsync,yo as isMap,wo as isMapCall,an as isMatchArray,ye as isMatchObject,b as isNegative,du as isNodejs,x as isNotArray,At as isNotNumber,jt as isNotString,l as isNull,vt as isNumber,bt as isNumberCall,Tn as isNumberEqual,ue as isNumberInRange,ce as isNumberNotInRange,Qo as isParent,nn as isPlainObject,se as isPositive,Xo as isPrimitive,Ho as isPromise,ve as isRegex,be as isRegexCall,Yo as isRelated,tu as isSafeInt,Wr as isSame,ru as isSameType,Vt as isSet,qt as isSetCall,Et as isString,eu as isTrue,mu as isTruthy,un as isTypeFactory,Ao as isTypedArray,uu as isU16,ou as isU16Call,iu as isU32,cu as isU32Call,fu as isU8,lu as isU8C,au as isU8CCall,su as isU8Call,f as isUndefined,gu as isWeakMap,hu as isWeakMapCall,fe as isZero,Au as jsonParse,_e as kebabCase,G as keys,hn as largest,gn as last,Le as lowerCase,Sr as map,pn as mapArray,dn as mapAsyncArray,Ir as mapAsyncObject,xr as mapObject,mn as mapRightArray,wn as mapWhile,Yu as merge,tc as model,Xr as multiply,Ar as negate,mo as noValue,sr as noop,bu as notEqual,Er as nthArg,Nt as objectAssign,ae as objectEntries,Oe as objectSize,Ie as omit,jr as once,Ln as onlyUnique,Mr as over,Ur as overEvery,rc as pair,vn as partition,xe as pick,xt as pluck,It as pluckObject,uc as promise,cc as propertyMatch,te as randomFloat,Cn as randomInt,E as range,A as rangeDown,v as rangeUp,no as rawURLDecode,Nr as reArg,St as regexTestFactory,re as remainder,jn as remove,In as removeBy,Je as replaceList,xn as rest,Ge as restString,g as returnValue,On as right,ke as rightString,Fn as sample,ro as sanitize,ic as setKey,sc as setValue,_n as shuffle,Pn as smallest,Pe as snakeCase,at as sortCollectionAlphabetically,$t as sortCollectionAlphabeticallyReverse,ht as sortCollectionAscending,lt as sortCollectionAscendingFilter,st as sortCollectionDescending,it as sortCollectionDescendingFilter,bn as sortNumberAscending,En as sortNumberDescening,ft as sortObjectsAlphabetically,Ot as sortObjectsAlphabeticallyReverse,Zn as sortUnique,Eu as stringify,ac as stubArray,ir as stubFalse,lc as stubObject,hc as stubString,ur as stubTrue,yn as subtract,ee as subtractAll,An as subtractReverse,oe as sumAll,Nn as take,Dn as takeRight,Dr as throttle,gr as timer,hr as timers,fr as times,gc as timesAsync,ar as timesMap,pc as timesMapAsync,Mn as toArray,H as toPath,dc as toggle,uo as tokenize,We as truncate,ze as truncateRight,or as truth,Xn as unZip,Be as unZipObject,qn as union,wc as uniqID,kn as unique,Vn as untilFalseArray,Gn as untilTrueArray,Ne as upperCase,fo as upperFirst,lo as upperFirstAll,so as upperFirstLetter,ao as upperFirstOnly,ho as upperFirstOnlyAll,bc as virtualStorage,Jn as whileCompactMap,Wn as whileEachArray,zn as whileMapArray,Hn as without,co as words,Lr as wrap,Kn as xor,Qn as zip,$e as zipObject}; //# sourceMappingURL=index.js.map diff --git a/github/package-lock.json b/github/package-lock.json index 65a37af8..d6ce4680 100644 --- a/github/package-lock.json +++ b/github/package-lock.json @@ -1,12 +1,12 @@ { "name": "Acid", - "version": "3.0.63", + "version": "3.0.65", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "Acid", - "version": "3.0.63", + "version": "3.0.65", "license": "ISC", "bin": { "Acid": "index.js" diff --git a/github/package.json b/github/package.json index ac6d5c29..27b4241b 100644 --- a/github/package.json +++ b/github/package.json @@ -1,6 +1,6 @@ { "name": "@universalweb/acid", - "version": "3.0.63", + "version": "3.0.65", "description": "Acidjs is a robust, modern, modular, & async focused Javascript utility library.", "keywords": [ "Acid", diff --git a/index.js b/index.js index 5ea6885a..c9848466 100644 --- a/index.js +++ b/index.js @@ -22,6 +22,8 @@ const app = express(); const expressRoot = '/'; const expressPort = 8890; import nodeExternals from 'rollup-plugin-node-externals'; +import eslintConfigRaw from './eslint.config.js'; +const eslintConfig = eslintConfigRaw[0]; async function liveServer() { const port = 35729; const server = await (new tinyLR.Server({ @@ -38,15 +40,9 @@ async function liveServer() { async function beautify(source, destination) { console.log('Beautify'); const text = fs.readFileSync(source).toString(); - const eslintConfigLocation = (source.includes('/module/') && './source/.eslintrc') || './.eslintrc'; - console.log('GET ESLINT CONFIG', source, eslintConfigLocation); - const eslintConfig = JSON.parse(fs.readFileSync(eslintConfigLocation).toString()); - const cleanedEslintConfig = {}; - Object.entries(eslintConfig).forEach(([key, value]) => { - if (!key.match(/plugins|extends/)) { - cleanedEslintConfig[key] = value; - } - }); + const cleanedEslintConfig = { + rules: eslintConfig.rules, + }; console.log('GOT ESLINT CONFIG'); const formattedCode = await format({ eslintConfig: cleanedEslintConfig, diff --git a/npm/basic.js b/npm/basic.js index 5c60b6b5..94a02001 100644 --- a/npm/basic.js +++ b/npm/basic.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function r(t){return void 0===t}function e(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!r(t)&&!o(t)}function c(t){return t}function u(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const a=n.call(e,t,c,r,u,s,o);i(a)&&r.push(a)})):u(t,((t,c,u,s)=>{const a=n(t,c,r,u,s,e,o);i(a)&&r.push(a)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const c=await n(t,e,r,o);i(c)&&r.push(c)})),r}const{sign:l}=Math;function h(t){return-1===l(t)}function p(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function y(t,n){return t.forEach(n),t}const d=Array.isArray;function m(t){return d(t)&&t||i(t)&&[t]||[]}function A(t){return t.flat(1/0)}const b=Reflect.construct;function w(t,n=[],r){const e=d(n)?n:[n];return r?b(t,e,r):b(t,e)}function v(...t){const n=w(Map),r=[];return u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function C(t,n=1,r=t.length){return t.splice(n,r)}function O(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function I(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function j(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function M(t,n,r=[],e){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const S=Object.keys;function R(t){if(t)return S(t)}const x=/\.|\[/,B=/]/g,N="";function T(t){return t.replace(B,N).split(x)}function U(t,n){if(!n)return!1;let r=n;return j(d(t)?t:T(t),(t=>(r=r[t],i(r)))),r}const P=Object.hasOwn;function k(t,...n){if(t)return j(n,(n=>{const r=T(n);if(1===r.length)return P(t,n);{const n=r.pop(),e=U(r,t);return!!e&&P(e,n)}}))}const $=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function D(t,n){return t?.constructor===n||!1}function L(t){return n=>D(n,t)}function q(t){return t?.constructor?.name}function V(t){return n=>q(n)===t||!1}function K(t){return function(n,...r){return r?t(n)&&j(r,t):t(n)}}const Z=V("Buffer"),_=K(Z),z=(t,n)=>{if(t===n)return!0;if(_(t))return t.equals(n);if(t.toString()===n.toString())if($(t)){const r=R(t);if(k(n,r))return j(r,(r=>z(t[r],n[r])))}else if(d(t)&&t.length===n.length)return j(t,((t,r)=>z(t,n[r])));return!1};const W=Math.max;function G(t,n,r=[],e,o){return i(e)?u(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):u(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function J(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function H(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function rt(t,n,r){if(i(t))return nt(t,n,r)}function et(t,n=t.length){if(t.length<=1)return rt(t);const r=rt(t);let e,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",r){return t.sort(((t,e)=>ft(t,e,n,r)))}function ht(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function pt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}const yt=V("Number"),dt=K(yt);const mt=L(String);function At(t,n){if(t)return mt(n)?t[n]:G(n,(n=>t[n]))}function bt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),Ot=wt(/\.js$/),It=wt(/\.json$/);const jt=Object.assign;function Ft(t,...n){if(i(t))return jt(t,...n)}const Et=async(t,n,r,e)=>{if(!t)return;const o=R(t);return i(r)?await a(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await a(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function Mt(t,n,r,e){if(!t)return;const o=R(t);return i(r)?u(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):u(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const St=V("Set"),Rt=K(St);function xt(t,n){if(Rt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Bt=V("GeneratorFunction"),Nt=K(Bt);async function Tt(t,n,r){if(Rt(t)){for(const r of t)await n(r,t);return t}if(Nt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const Ut=t=>!!i(t)&&t instanceof Function,Pt=V("AsyncFunction"),kt=K(Pt);function $t(t,n,r,e,o,c){return(u,s,a,f,l)=>{let h;const p=kt(s);if(i(u)&&s)return h=d(u)?p?n:t:$(u)||Ut(u)?p?e:r:o?p?c:o:Nt(u)?c:p?e:r,h(u,s,a,f,l)}}const Dt=$t(u,a,Mt,Et,xt,Tt);class Lt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Dt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,Vt=!1,Kt=()=>{};function Zt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const zt=w(_t);function Wt(t,n){return zt.set(t,n)}const Gt=Reflect.apply;function Jt(t,n,r){if(Ut(t))return Gt(t,n,r)}async function Ht(t,n,r={}){if(t)return await Et(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function Qt(t,n,r={},e,o){if(t)return i(e)?Mt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):Mt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function Xt(t){return t?.constructor}function Yt(t,n=[]){const r=Xt(t);return r===Function&&"function"===r.name?function(){}:w(r,n)}function tn(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Ut(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function nn(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const rn=$t(G,J,Qt,Ht,tn,nn);async function en(t,n){if(!t)return;return F(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function on(t,n){if(!t)return;return j(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function cn(t,n=c){if(d(t)||Rt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function un(t,n=c,r){if(Nt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(d(t)||Rt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const sn=$t(j,F,on,en,cn,un);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,pn=Object.defineProperty,gn=fn(Object.hasOwnProperty),yn=Object.is;const{random:dn}=Math;const{sign:mn}=Math;const An=Object.entries;async function bn(t,n=c,r={}){return await Et(t,(async(t,e,o,c,u)=>{const s=await n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function wn(t,n=c,r={}){return Mt(t,((t,e,o,c,u)=>{const s=n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function vn(t,n,r={}){return Mt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Cn(t,n,r={}){return await Et(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const On=V("RegExp"),In=K(On),jn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(jn,"\\$&")}function En(t,n){return n?En(G(t,Fn)):RegExp(t.join("|"))}function Mn(t){if(t)return R(t).length}const Sn=/[ _-]+/g;const Rn=/[ _-]+/g,xn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Tn=/[ _-]+/g;const Un=/[ _-]+/g;function Pn(t,n=1){return t.substring(n)}const kn=/%(?![\da-f]{2})/gi,$n=/&/g,Dn=//g,qn=/"/g;function Vn(t){return decodeURIComponent(t.replace(kn,(()=>"%25")))}function Kn(t){return t.replace($n,"&").replace(Dn,"<").replace(Ln,">").replace(qn,""")}const Zn=/\S+/g,_n=/\w+/g;const zn=/\w+/g;function Wn(t){return t[0].toUpperCase()}function Gn(t){return Wn(t)+Pn(t)}function Jn(t){return Wn(t)+Pn(t).toLowerCase()}function Hn(t){return Xt(t)?.name}function Qn(t){return!i(t)}const Xn=V("Map"),Yn=K(Xn),tr=/Array/,nr="Array";function rr(t){if(t){const n=Hn(t);if(tr.test(n)&&n!==nr)return!0}return!1}const er=V("BigInt"),or=K(er),ir=V("Boolean"),cr=K(ir),ur=V("ArrayBuffer"),sr=K(ur);const ar=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const fr=V("Date"),lr=K(fr);function hr(t){return!1===t}const pr=V("Float32Array"),gr=K(pr),yr=V("Float64Array"),dr=K(yr),{isInteger:mr}=Number,Ar=mr,br=V("Int16Array"),wr=K(br),vr=V("Int32Array"),Cr=K(vr),Or=V("Int8Array"),Ir=K(Or);function jr(t){return!!t&&t instanceof Promise}function Fr(t){return!!t&&(jr(t)||kt(t)||Nt(t))}const{isSafeInteger:Er}=Number,Mr=Er;const Sr=V("Uint16Array"),Rr=K(Sr),xr=V("Uint32Array"),Br=K(xr),Nr=V("Uint8Array"),Tr=K(Nr),Ur=V("Uint8ClampedArray"),Pr=K(Ur),kr=V("WeakMap"),$r=K(kr),Dr=void 0!==globalThis.Deno,Lr=void 0!==globalThis.process&&process.versions&&process.versions.node;function qr(t,n=!0){return Boolean(t)&&n}function Vr(t,n){return hr(z(t,n))}const Kr=JSON;const Zr=Kr.stringify;function _r(t,n,r){const e=globalThis.options||r;let o;return Ut(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Zr(t)}\n\t\tExpected: ${Zr(n)}`,e)}async function zr(t,n,r){const e=await t;return!(Ut(n)&&!1===await n(e,r))&&!Vr(e,n)||_r(e,n,r)}const Wr=globalThis.structuredClone;async function Gr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);i(e)&&r.push(e)}return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);i(c)&&e(c)}return o}const u=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i(c)&&(u?o.set(r,c):o[r]=c)}return o}function Jr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);i(c)&&o(c)}return e}const o=Ut(e.set);for(const[r,c]of t){const u=n(c,r,e,t);i(u)&&(o?e.set(r,u):e[r]=u)}return e}const Hr=$t(s,f,wn,bn,Jr,Gr);function Qr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Ut(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function Xr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Ut(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const Yr=$t(E,M,vn,Cn,Qr,Xr);function te(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const ne=te(u),re=te(O);function ee(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const oe=ee(a),ie=ee(I);const ce=wt(/\./);class ue{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const se=w(ue);class ae{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,ae.models.set(t,n)):Ft(this,t)}}class fe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Mt(t,(n=>{t[n]=new fe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new fe(r),!0)})}}class le{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const he=w(le);class pe{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Lt,t.Intervals=ue,t.Model=ae,t.Store=fe,t.Timers=_t,t.UniqID=le,t.VirtualStorage=pe,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Jt,t.arrayToRegex=En,t.arraysToObject=function(t,n){const r={};return u(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Fr(t)||Fr(n)?zr(t,n,r):!(Ut(n)&&!1===n(t,r))&&!Vr(t,n)||_r(t,n,r)},t.assertAsync=zr,t.assign=Ft,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=rn(t,(t=>Ut(t)?t.bind(n):t));return r?Ft(r,e):e},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Sn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Lt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(_(t))return st(t);if(d(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=st,t.clearIntervals=function(){Zt(setTimeout(Kt,0),(t=>{se.remove(t)}))},t.clearTimers=function(){Zt(setTimeout(Kt,0),(t=>{zt.remove(t)}))},t.clone=function(t){return Wr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.compact=function(t){if($(t)){const n=R(t),r=n.length,e={};for(let o=0;oqr(t)))},t.compactKeys=function(t){const n=[];return Mt(t,((t,r)=>{i(t)&&n.push(r)})),n},t.compactMap=Hr,t.compactMapArray=s,t.compactMapAsyncArray=f,t.compactMapAsyncObject=bn,t.compactMapObject=wn,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return u(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return u(t,(t=>{t[n]||r++})),r},t.curry=function(t,r=t.length){const e=[],o=(...i)=>{if(e.push(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.curryRight=function(t,r=t.length){const e=[],o=(...i)=>{if(e.unshift(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.debounce=function(t,n){function r(...t){r.id!==Vt&&zt.remove(r.id),r.id=Wt((()=>{r.callable(...t),r.id=Vt}),n)}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{r.id!==Vt&&(zt.remove(r.id),r.id=Vt)},r},t.deduct=function(t){return t-1},t.defProp=pn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,r=t.length)=>C(t,0,r-n),t.each=Dt,t.eachArray=u,t.eachAsyncArray=a,t.eachAsyncObject=Et,t.eachObject=Mt,t.eachRight=O,t.eachRightAsync=I,t.ensureArray=m,t.ensureBuffer=function(t){return _(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=jn,t.every=sn,t.everyArg=function(...t){return kt(t[0])?async function(...n){return sn(t,(async t=>sn(n,(async n=>t(n)))))}:function(...n){return sn(t,(t=>sn(n,(n=>t(n)))))}},t.everyArray=j,t.everyAsyncArray=F,t.everyAsyncObject=en,t.everyObject=on,t.falsy=Vt,t.filter=Yr,t.filterArray=E,t.filterAsyncArray=M,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=at,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(m(n))),[]);return r},t.flattenDeep=A,t.flow=ne,t.flowAsync=oe,t.flowAsyncRight=ie,t.flowRight=re,t.forEach=y,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else Ut(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=xt,t.forOfAsync=Tt,t.forOfCompactMap=Jr,t.forOfCompactMapAsync=Gr,t.forOfEvery=cn,t.forOfEveryAsync=un,t.forOfFilter=Qr,t.forOfFilterAsync=Xr,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=$t,t.get=U,t.getEntries=function(t){if(i(t))return An(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return gt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return j(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Hn,t.groupBy=function(t,n){const r={};return u(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(Qn(n)||Qn(r))return!1;if(mt(n))return mt(r)?n.includes(r,e):In(r)?r.test(n):Ut(r)?Boolean(r(n)):sn(r,(r=>Boolean(t(n,r))));if(d(n)){if(mt(r))return n.includes(r,e);if(In(r))return sn(n,(t=>t.test(r)));if(d(r))return sn(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=T(n);if(1===r.length)return P(t,n);{const n=r.pop(),e=U(r,t);return!!e&&P(e,n)}})))},t.hasDot=ce,t.hasKeys=k,t.hasLength=e,t.hasProp=gn,t.hasValue=i,t.htmlEntities=Kn,t.ifInvoke=function(t,...n){if(Ut(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!i(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(i(t)){if(Ut(n))return r?Jt(n,r,e):n(...e);if($(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eDt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return u(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return s(t,(t=>{if(j(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return se.set(t,n)},t.intervals=se,t.invert=function(t,n={}){if(t)return Mt(t,((t,r)=>{n[t]=r})),n},t.invoke=function(t,n,r){return G(t,((t,e)=>t[n](r,e)))},t.invokeAsync=function(t,n,r){return J(t,(async(t,e)=>t[n](r,e)))},t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=d,t.isArrayBuffer=sr,t.isArrayBufferCall=ur,t.isArrayLike=function(t,n){if(Qn(t)||Ut(t))return!1;if(d(t)||rr(t))return!0;const r=t.length;if(!Qn(r)||!dt(r)||r<0)return!1;if(n){const n=R(t);return!!n&&sn(n,((t,n)=>n>=0&&dt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=Pt,t.isBigInt=or,t.isBigIntCall=er,t.isBoolean=cr,t.isBooleanCall=ir,t.isBuffer=_,t.isBufferCall=Z,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return ar.test(n)}return!1},t.isConstructor=D,t.isConstructorFactory=L,t.isConstructorNameFactory=V,t.isDate=lr,t.isDateCall=fr,t.isDeno=Dr,t.isEmpty=function(t){return mt(t)||d(t)?!e(t):$(t)?!Mn(t):!i(t)},t.isEqual=z,t.isF32=gr,t.isF32Call=pr,t.isF64=dr,t.isF64Call=yr,t.isFalse=hr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=Ot,t.isFileJSON=It,t.isFloat=Ar,t.isFunction=Ut,t.isGenerator=Nt,t.isGeneratorCall=Bt,t.isI16=wr,t.isI16Call=br,t.isI32=Cr,t.isI32Call=vr,t.isI8=Ir,t.isI8Call=Or,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Fr,t.isMap=Yn,t.isMapCall=Xn,t.isMatchArray=function(t,n){return t.length===n.length&&j(t,((t,r)=>z(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=R(t),e=R(n);return r.length===e.length&&j(r,(r=>t[r]===n[r]))},t.isNegative=h,t.isNodejs=Lr,t.isNotArray=function(t){return!d(t)},t.isNotNumber=function(t){return!dt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=dt,t.isNumberCall=yt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=$,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=jr,t.isRegex=In,t.isRegexCall=On,t.isRelated=function(t,n){return!Qn(t)&&!Qn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=Mr,t.isSame=yn,t.isSameType=function(t,n){const r=Xt(t),e=Xt(n);return r===e&&r.name===e.name},t.isSet=Rt,t.isSetCall=St,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=qr,t.isTypeFactory=K,t.isTypedArray=rr,t.isU16=Rr,t.isU16Call=Sr,t.isU32=Br,t.isU32Call=xr,t.isU8=Tr,t.isU8C=Pr,t.isU8CCall=Ur,t.isU8Call=Nr,t.isUndefined=r,t.isWeakMap=$r,t.isWeakMapCall=kr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return Kr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Rn," ").trim().toLowerCase().replace(xn,"-")},t.keys=R,t.largest=function(t){return W(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Un," ").trim().toLowerCase()},t.map=rn,t.mapArray=G,t.mapAsyncArray=J,t.mapAsyncObject=Ht,t.mapObject=Qt,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{Dt(r,((r,e)=>{if(n[e]&&($(r)||d(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return i(n)?w(ae,[t,n]):U(t,ae.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Qn,t.noop=Kt,t.notEqual=Vr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=jt,t.objectEntries=An,t.objectSize=Mn,t.omit=function(t,n){if(t){if(d(n)){const r=En(n);return vn(t,((t,n)=>!r.test(n)))}if(In(n))return vn(t,((t,r)=>!n.test(r)));if(mt(n))return vn(t,((t,r)=>r!==n));if(dt(n)){const r=n.toString();return vn(t,((t,n)=>n!==r))}return Ut(n)?vn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(i(n)||(n=t(...r)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>rn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>sn(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[s(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return u(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return G(t,(t=>At(t,n)))},t.pluckObject=At,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=R(t))=>j(r,(r=>z(t[r],n[r]))),t.randomFloat=function(t,n=0){return dn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,r=1,e=[]){return h(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return et(t);if(1===n)return[t[tt(r-1,0)]];const e=[],o={};let i,c=0;for(;cht(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>bt(t,e,n,r)))},t.sortCollectionAscending=gt,t.sortCollectionAscendingFilter=pt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(H)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=bt,t.sortUnique=ct,t.stringify=Zr,t.stubArray=()=>[],t.stubFalse=()=>Vt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=H,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=qt:(r.callable(...t),r.id=Wt((()=>{r.shouldThrottle&&r.callable(...t),r.id=Vt}),n))}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{zt.remove(r.id),r.id=Vt},r},t.timer=Wt,t.timers=zt,t.times=Zt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return Mt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ut(A(t))},t.uniqID=he,t.unique=ut,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eGn(t)))},t.upperFirstLetter=Wn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(zn,(t=>Jn(t)))},t.virtualStorage=function(t){return new pe(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(_n)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=w(Map),r=[];return 2===t.length?v(t[0],t[1]):(u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return u(t,((t,e)=>{r[t]=n[e]})),r}})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function r(t){return void 0===t}function e(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!r(t)&&!o(t)}function c(t){return t}function u(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const a=n.call(e,t,c,r,u,s,o);i(a)&&r.push(a)})):u(t,((t,c,u,s)=>{const a=n(t,c,r,u,s,e,o);i(a)&&r.push(a)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const c=await n(t,e,r,o);i(c)&&r.push(c)})),r}const{sign:l}=Math;function h(t){return-1===l(t)}function p(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function y(t,n){return t.forEach(n),t}const d=Array.isArray;function m(t){return d(t)&&t||i(t)&&[t]||[]}function A(t){return t.flat(1/0)}const b=Reflect.construct;function w(t,n=[],r){const e=d(n)?n:[n];return r?b(t,e,r):b(t,e)}function v(...t){const n=w(Map),r=[];return u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function C(t,n=1,r=t.length){return t.splice(n,r)}function O(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function I(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function j(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function M(t,n,r=[],e){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const S=Object.keys;function R(t){if(t)return S(t)}const x=/\.|\[/,B=/]/g,N="";function T(t){return t.replace(B,N).split(x)}function U(t,n){if(!n)return!1;let r=n;return j(d(t)?t:T(t),(t=>(r=r[t],i(r)))),r}const k=Object.hasOwn;function P(t,...n){if(t)return j(n,(n=>{const r=T(n);if(1===r.length)return k(t,n);{const n=r.pop(),e=U(r,t);return!!e&&k(e,n)}}))}const $=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function D(t,n){return t?.constructor===n||!1}function L(t){return n=>D(n,t)}function q(t){return t?.constructor?.name}function V(t){return n=>q(n)===t||!1}function K(t){return function(n,...r){return r?t(n)&&j(r,t):t(n)}}const Z=V("Buffer"),_=K(Z),z=(t,n)=>{if(t===n)return!0;if(_(t))return t.equals(n);if(t.toString()===n.toString())if($(t)){const r=R(t);if(P(n,r))return j(r,(r=>z(t[r],n[r])))}else if(d(t)&&t.length===n.length)return j(t,((t,r)=>z(t,n[r])));return!1};const W=Math.max;function G(t,n,r=[],e,o){return i(e)?u(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):u(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function J(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function H(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function rt(t,n,r){if(i(t))return nt(t,n,r)}function et(t,n=t.length){if(t.length<=1)return rt(t);const r=rt(t);let e,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",r){return t.sort(((t,e)=>ft(t,e,n,r)))}function ht(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function pt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}const yt=V("Number"),dt=K(yt);const mt=L(String);function At(t,n){if(t)return mt(n)?t[n]:G(n,(n=>t[n]))}function bt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),Ot=wt(/\.js$/),It=wt(/\.json$/);const jt=Object.assign;function Ft(t,...n){if(i(t))return jt(t,...n)}const Et=async(t,n,r,e)=>{if(!t)return;const o=R(t);return i(r)?await a(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await a(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function Mt(t,n,r,e){if(!t)return;const o=R(t);return i(r)?u(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):u(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const St=V("Set"),Rt=K(St);function xt(t,n){if(Rt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Bt=V("GeneratorFunction"),Nt=K(Bt);async function Tt(t,n,r){if(Rt(t)){for(const r of t)await n(r,t);return t}if(Nt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const Ut=t=>!!i(t)&&t instanceof Function,kt=V("AsyncFunction"),Pt=K(kt);function $t(t,n,r,e,o,c){return(u,s,a,f,l)=>{let h;const p=Pt(s);if(i(u)&&s)return h=d(u)?p?n:t:$(u)||Ut(u)?p?e:r:o?p?c:o:Nt(u)?c:p?e:r,h(u,s,a,f,l)}}const Dt=$t(u,a,Mt,Et,xt,Tt);class Lt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Dt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,Vt=!1,Kt=()=>{};function Zt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const zt=w(_t);function Wt(t,n){return zt.set(t,n)}const Gt=Reflect.apply;function Jt(t,n,r){if(Ut(t))return Gt(t,n,r)}async function Ht(t,n,r={}){if(t)return await Et(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function Qt(t,n,r={},e,o){if(t)return i(e)?Mt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):Mt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function Xt(t){return t?.constructor}function Yt(t,n=[]){const r=Xt(t);return r===Function&&"function"===r.name?function(){}:w(r,n)}function tn(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Ut(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function nn(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const rn=$t(G,J,Qt,Ht,tn,nn);async function en(t,n){if(!t)return;return F(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function on(t,n){if(!t)return;return j(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function cn(t,n=c){if(d(t)||Rt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function un(t,n=c,r){if(Nt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(d(t)||Rt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const sn=$t(j,F,on,en,cn,un);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,pn=Object.defineProperty,gn=fn(Object.hasOwnProperty),yn=Object.is;const{random:dn}=Math;const{sign:mn}=Math;const An=Object.entries;async function bn(t,n=c,r={}){return await Et(t,(async(t,e,o,c,u)=>{const s=await n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function wn(t,n=c,r={}){return Mt(t,((t,e,o,c,u)=>{const s=n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function vn(t,n,r={}){return Mt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Cn(t,n,r={}){return await Et(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const On=V("RegExp"),In=K(On),jn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(jn,"\\$&")}function En(t,n){return n?En(G(t,Fn)):RegExp(t.join("|"))}function Mn(t){if(t)return R(t).length}const Sn=/[ _-]+/g;const Rn=/[ _-]+/g,xn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Tn=/[ _-]+/g;const Un=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Pn=/%(?![\da-f]{2})/gi,$n=/&/g,Dn=//g,qn=/"/g;function Vn(t){return decodeURIComponent(t.replace(Pn,(()=>"%25")))}function Kn(t){return t.replace($n,"&").replace(Dn,"<").replace(Ln,">").replace(qn,""")}const Zn=/\S+/g,_n=/\w+/g;const zn=/\w+/g;function Wn(t){return t[0].toUpperCase()}function Gn(t){return Wn(t)+kn(t)}function Jn(t){return Wn(t)+kn(t).toLowerCase()}function Hn(t){return Xt(t)?.name}function Qn(t){return!i(t)}const Xn=V("Map"),Yn=K(Xn),tr=/Array/,nr="Array";function rr(t){if(t){const n=Hn(t);if(tr.test(n)&&n!==nr)return!0}return!1}const er=V("BigInt"),or=K(er),ir=V("Boolean"),cr=K(ir),ur=V("ArrayBuffer"),sr=K(ur);const ar=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const fr=V("Date"),lr=K(fr);function hr(t){return!1===t}const pr=V("Float32Array"),gr=K(pr),yr=V("Float64Array"),dr=K(yr),{isInteger:mr}=Number,Ar=mr,br=V("Int16Array"),wr=K(br),vr=V("Int32Array"),Cr=K(vr),Or=V("Int8Array"),Ir=K(Or);function jr(t){return!!t&&t instanceof Promise}function Fr(t){return!!t&&(jr(t)||Pt(t)||Nt(t))}const{isSafeInteger:Er}=Number,Mr=Er;const Sr=V("Uint16Array"),Rr=K(Sr),xr=V("Uint32Array"),Br=K(xr),Nr=V("Uint8Array"),Tr=K(Nr),Ur=V("Uint8ClampedArray"),kr=K(Ur),Pr=V("WeakMap"),$r=K(Pr),Dr=void 0!==globalThis.Deno,Lr=void 0!==globalThis.process&&process.versions&&process.versions.node;function qr(t,n=!0){return Boolean(t)&&n}function Vr(t,n){return hr(z(t,n))}const Kr=JSON;const Zr=Kr.stringify;function _r(t,n,r){const e=globalThis.options||r;let o;return Ut(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Zr(t)}\n\t\tExpected: ${Zr(n)}`,e)}async function zr(t,n,r){const e=await t;return!(Ut(n)&&!1===await n(e,r))&&!Vr(e,n)||_r(e,n,r)}const Wr=globalThis.structuredClone;async function Gr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);i(e)&&r.push(e)}return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);i(c)&&e(c)}return o}const u=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i(c)&&(u?o.set(r,c):o[r]=c)}return o}function Jr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);i(c)&&o(c)}return e}const o=Ut(e.set);for(const[r,c]of t){const u=n(c,r,e,t);i(u)&&(o?e.set(r,u):e[r]=u)}return e}const Hr=$t(s,f,wn,bn,Jr,Gr);function Qr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Ut(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function Xr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Ut(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const Yr=$t(E,M,vn,Cn,Qr,Xr);function te(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const ne=te(u),re=te(O);function ee(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const oe=ee(a),ie=ee(I);const ce=wt(/\./);class ue{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const se=w(ue);class ae{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,ae.models.set(t,n)):Ft(this,t)}}class fe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Mt(t,(n=>{t[n]=new fe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new fe(r),!0)})}}class le{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const he=w(le);class pe{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Lt,t.Intervals=ue,t.Model=ae,t.Store=fe,t.Timers=_t,t.UniqID=le,t.VirtualStorage=pe,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Jt,t.arrayToRegex=En,t.arraysToObject=function(t,n){const r={};return u(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Fr(t)||Fr(n)?zr(t,n,r):!(Ut(n)&&!1===n(t,r))&&!Vr(t,n)||_r(t,n,r)},t.assertAsync=zr,t.assign=Ft,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=rn(t,(t=>Ut(t)?t.bind(n):t));return r?Ft(r,e):e},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Sn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Lt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(_(t))return st(t);if(d(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=st,t.clearIntervals=function(){Zt(setTimeout(Kt,0),(t=>{se.remove(t)}))},t.clearTimers=function(){Zt(setTimeout(Kt,0),(t=>{zt.remove(t)}))},t.clone=function(t){return Wr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.compact=function(t){if($(t)){const n=R(t),r=n.length,e={};for(let o=0;oqr(t)))},t.compactKeys=function(t){const n=[];return Mt(t,((t,r)=>{i(t)&&n.push(r)})),n},t.compactMap=Hr,t.compactMapArray=s,t.compactMapAsyncArray=f,t.compactMapAsyncObject=bn,t.compactMapObject=wn,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return u(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return u(t,(t=>{t[n]||r++})),r},t.curry=function(t,r=t.length){const e=[],o=(...i)=>{if(e.push(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.curryRight=function(t,r=t.length){const e=[],o=(...i)=>{if(e.unshift(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.debounce=function(t,n){function r(...t){r.id!==Vt&&zt.remove(r.id),r.id=Wt((()=>{r.callable(...t),r.id=Vt}),n)}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{r.id!==Vt&&(zt.remove(r.id),r.id=Vt)},r},t.deduct=function(t){return t-1},t.defProp=pn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,r=t.length)=>C(t,0,r-n),t.each=Dt,t.eachArray=u,t.eachAsyncArray=a,t.eachAsyncObject=Et,t.eachObject=Mt,t.eachRight=O,t.eachRightAsync=I,t.ensureArray=m,t.ensureBuffer=function(t){return _(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=jn,t.every=sn,t.everyArg=function(...t){return Pt(t[0])?async function(...n){return sn(t,(async t=>sn(n,(async n=>t(n)))))}:function(...n){return sn(t,(t=>sn(n,(n=>t(n)))))}},t.everyArray=j,t.everyAsyncArray=F,t.everyAsyncObject=en,t.everyObject=on,t.falsy=Vt,t.filter=Yr,t.filterArray=E,t.filterAsyncArray=M,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=at,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(m(n))),[]);return r},t.flattenDeep=A,t.flow=ne,t.flowAsync=oe,t.flowAsyncRight=ie,t.flowRight=re,t.forEach=y,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else Ut(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=xt,t.forOfAsync=Tt,t.forOfCompactMap=Jr,t.forOfCompactMapAsync=Gr,t.forOfEvery=cn,t.forOfEveryAsync=un,t.forOfFilter=Qr,t.forOfFilterAsync=Xr,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=$t,t.get=U,t.getEntries=function(t){if(i(t))return An(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return gt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return j(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Hn,t.groupBy=function(t,n){const r={};return u(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(Qn(n)||Qn(r))return!1;if(mt(n))return mt(r)?n.includes(r,e):In(r)?r.test(n):Ut(r)?Boolean(r(n)):sn(r,(r=>Boolean(t(n,r))));if(d(n)){if(mt(r))return n.includes(r,e);if(In(r))return sn(n,(t=>t.test(r)));if(d(r))return sn(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=T(n);if(1===r.length)return k(t,n);{const n=r.pop(),e=U(r,t);return!!e&&k(e,n)}})))},t.hasDot=ce,t.hasKeys=P,t.hasLength=e,t.hasProp=gn,t.hasValue=i,t.htmlEntities=Kn,t.ifInvoke=function(t,...n){if(Ut(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!i(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(i(t)){if(Ut(n))return r?Jt(n,r,e):n(...e);if($(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eDt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return u(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return s(t,(t=>{if(j(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return se.set(t,n)},t.intervals=se,t.invert=function(t,n={}){if(t)return Mt(t,((t,r)=>{n[t]=r})),n},t.invokeArray=function(t,n,r){if(!t)return;const e=t.length;if(i(r))for(let o=0;ot[n].call(e,r):(t,e)=>t[n](r))},t.invokeCollectionAsync=function(t,n,r,e){return J(t,e?t=>t[n].call(e,r):async t=>t[n](r))},t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=d,t.isArrayBuffer=sr,t.isArrayBufferCall=ur,t.isArrayLike=function(t,n){if(Qn(t)||Ut(t))return!1;if(d(t)||rr(t))return!0;const r=t.length;if(!Qn(r)||!dt(r)||r<0)return!1;if(n){const n=R(t);return!!n&&sn(n,((t,n)=>n>=0&&dt(n)))}return!0},t.isAsync=Pt,t.isAsyncCall=kt,t.isBigInt=or,t.isBigIntCall=er,t.isBoolean=cr,t.isBooleanCall=ir,t.isBuffer=_,t.isBufferCall=Z,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return ar.test(n)}return!1},t.isConstructor=D,t.isConstructorFactory=L,t.isConstructorNameFactory=V,t.isDate=lr,t.isDateCall=fr,t.isDeno=Dr,t.isEmpty=function(t){return mt(t)||d(t)?!e(t):$(t)?!Mn(t):!i(t)},t.isEqual=z,t.isF32=gr,t.isF32Call=pr,t.isF64=dr,t.isF64Call=yr,t.isFalse=hr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=Ot,t.isFileJSON=It,t.isFloat=Ar,t.isFunction=Ut,t.isGenerator=Nt,t.isGeneratorCall=Bt,t.isI16=wr,t.isI16Call=br,t.isI32=Cr,t.isI32Call=vr,t.isI8=Ir,t.isI8Call=Or,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Fr,t.isMap=Yn,t.isMapCall=Xn,t.isMatchArray=function(t,n){return t.length===n.length&&j(t,((t,r)=>z(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=R(t),e=R(n);return r.length===e.length&&j(r,(r=>t[r]===n[r]))},t.isNegative=h,t.isNodejs=Lr,t.isNotArray=function(t){return!d(t)},t.isNotNumber=function(t){return!dt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=dt,t.isNumberCall=yt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=$,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=jr,t.isRegex=In,t.isRegexCall=On,t.isRelated=function(t,n){return!Qn(t)&&!Qn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=Mr,t.isSame=yn,t.isSameType=function(t,n){const r=Xt(t),e=Xt(n);return r===e&&r.name===e.name},t.isSet=Rt,t.isSetCall=St,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=qr,t.isTypeFactory=K,t.isTypedArray=rr,t.isU16=Rr,t.isU16Call=Sr,t.isU32=Br,t.isU32Call=xr,t.isU8=Tr,t.isU8C=kr,t.isU8CCall=Ur,t.isU8Call=Nr,t.isUndefined=r,t.isWeakMap=$r,t.isWeakMapCall=Pr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return Kr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Rn," ").trim().toLowerCase().replace(xn,"-")},t.keys=R,t.largest=function(t){return W(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Un," ").trim().toLowerCase()},t.map=rn,t.mapArray=G,t.mapAsyncArray=J,t.mapAsyncObject=Ht,t.mapObject=Qt,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{Dt(r,((r,e)=>{if(n[e]&&($(r)||d(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return i(n)?w(ae,[t,n]):U(t,ae.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Qn,t.noop=Kt,t.notEqual=Vr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=jt,t.objectEntries=An,t.objectSize=Mn,t.omit=function(t,n){if(t){if(d(n)){const r=En(n);return vn(t,((t,n)=>!r.test(n)))}if(In(n))return vn(t,((t,r)=>!n.test(r)));if(mt(n))return vn(t,((t,r)=>r!==n));if(dt(n)){const r=n.toString();return vn(t,((t,n)=>n!==r))}return Ut(n)?vn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(i(n)||(n=t(...r)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>rn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>sn(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[s(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return u(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return G(t,(t=>At(t,n)))},t.pluckObject=At,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=R(t))=>j(r,(r=>z(t[r],n[r]))),t.randomFloat=function(t,n=0){return dn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,r=1,e=[]){return h(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return et(t);if(1===n)return[t[tt(r-1,0)]];const e=[],o={};let i,c=0;for(;cht(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>bt(t,e,n,r)))},t.sortCollectionAscending=gt,t.sortCollectionAscendingFilter=pt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(H)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=bt,t.sortUnique=ct,t.stringify=Zr,t.stubArray=()=>[],t.stubFalse=()=>Vt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=H,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=qt:(r.callable(...t),r.id=Wt((()=>{r.shouldThrottle&&r.callable(...t),r.id=Vt}),n))}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{zt.remove(r.id),r.id=Vt},r},t.timer=Wt,t.timers=zt,t.times=Zt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return Mt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ut(A(t))},t.uniqID=he,t.unique=ut,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eGn(t)))},t.upperFirstLetter=Wn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(zn,(t=>Jn(t)))},t.virtualStorage=function(t){return new pe(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(_n)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=w(Map),r=[];return 2===t.length?v(t[0],t[1]):(u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return u(t,((t,e)=>{r[t]=n[e]})),r}})); //# sourceMappingURL=basic.js.map diff --git a/npm/browser.js b/npm/browser.js index 4931347e..93bdd434 100644 --- a/npm/browser.js +++ b/npm/browser.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function e(t){return void 0===t}function r(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!e(t)&&!o(t)}function c(t){return t}function s(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const a=n.call(r,t,c,e,s,u,o);i(a)&&e.push(a)})):s(t,((t,c,s,u)=>{const a=n(t,c,e,s,u,r,o);i(a)&&e.push(a)})),e}async function a(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const c=await n(t,r,e,o);i(c)&&e.push(c)})),e}const{sign:l}=Math;function h(t){return-1===l(t)}function g(t,n,e,r){let o=t;for(;on;)r.push(o),o-=e;return r}function d(t,n){return t.forEach(n),t}const y=Array.isArray;function m(t){return y(t)&&t||i(t)&&[t]||[]}function b(t){return t.flat(1/0)}const A=Reflect.construct;function w(t,n=[],e){const r=y(n)?n:[n];return e?A(t,r,e):A(t,r)}function v(...t){const n=w(Map),e=[];return s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&0===t.parentIndex&&e.push(t.child)})),e}function C(t,n=1,e=t.length){return t.splice(n,e)}function I(t,n,e){if(!t)return;const r=t.length;for(let o=r-1;o>=0;o--)n(t[o],o,t,r,e);return t}async function O(t,n){if(!t)return;const e=t.length;for(let r=e-1;r>=0;r--)await n(t[r],r,t,e);return t}function E(t,n,e){if(!t)return;const r=t.length;for(let o=0;o{!0===n(t,o,e,i,c,r)&&e.push(t)})),e}async function j(t,n,e=[],r){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,e,i,c,r)&&e.push(t)})),e}const x=Object.keys;function M(t){if(t)return x(t)}const T=/\.|\[/,R=/]/g,B="";function N(t){return t.replace(R,B).split(T)}function L(t,n){if(!n)return!1;let e=n;return E(y(t)?t:N(t),(t=>(e=e[t],i(e)))),e}const $=Object.hasOwn;function k(t,...n){if(t)return E(n,(n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}}))}const D=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function U(t,n){return t?.constructor===n||!1}function P(t){return n=>U(n,t)}function q(t){return t?.constructor?.name}function z(t){return n=>q(n)===t||!1}function W(t){return function(n,...e){return e?t(n)&&E(e,t):t(n)}}const _=z("Buffer"),H=W(_),V=(t,n)=>{if(t===n)return!0;if(H(t))return t.equals(n);if(t.toString()===n.toString())if(D(t)){const e=M(t);if(k(n,e))return E(e,(e=>V(t[e],n[e])))}else if(y(t)&&t.length===n.length)return E(t,((t,e)=>V(t,n[e])));return!1};const Z=Math.max;function K(t,n,e=[],r,o){return i(r)?s(t,((t,i,c,s)=>{e[i]=n.call(r,t,i,e,c,s,o)})):s(t,((t,r,i,c)=>{e[r]=n(t,r,e,i,c,o)})),e}async function G(t,n){const e=[];return await a(t,(async(t,r,o)=>{e[r]=await n(t,r,o)})),e}function J(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function et(t,n,e){if(i(t))return nt(t,n,e)}function rt(t,n=t.length){if(t.length<=1)return et(t);const e=et(t);let r,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",e){return t.sort(((t,r)=>ft(t,r,n,e)))}function ht(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):o.localeCompare(i)}function gt(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i?o?oi?1:0:-1:1}function pt(t,n="id",e){return t.sort(((t,r)=>gt(t,r,n,e)))}const dt=z("Number"),yt=W(dt);const mt=P(String);function bt(t,n){if(t)return mt(n)?t[n]:K(n,(n=>t[n]))}function At(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),It=wt(/\.js$/),Ot=wt(/\.json$/);const Et=Object.assign;function Ft(t,...n){if(i(t))return Et(t,...n)}const St=async(t,n,e,r)=>{if(!t)return;const o=M(t);return i(e)?await a(o,((i,c,s,u)=>n.call(e,t[i],i,t,u,o,r))):await a(o,((e,i,c,s)=>n(t[e],e,t,s,o,r))),t};function jt(t,n,e,r){if(!t)return;const o=M(t);return i(e)?s(o,((o,i,c,s)=>{n.call(e,t[o],o,t,s,c,r)})):s(o,((e,o,i,c)=>{n(t[e],e,t,c,i,r)})),t}const xt=z("Set"),Mt=W(xt);function Tt(t,n){if(Mt(t)){for(const e of t)n(e,t);return t}for(const[e,r]of t)n(r,e,t);return t}const Rt=z("GeneratorFunction"),Bt=W(Rt);async function Nt(t,n,e){if(Mt(t)){for(const e of t)await n(e,t);return t}if(Bt(t))for await(const r of t(...e))await n(r,t);for(const[e,r]of t)await n(r,e,t);return t}const Lt=t=>!!i(t)&&t instanceof Function,$t=z("AsyncFunction"),kt=W($t);function Dt(t,n,e,r,o,c){return(s,u,a,f,l)=>{let h;const g=kt(u);if(i(s)&&u)return h=y(s)?g?n:t:D(s)||Lt(s)?g?r:e:o?g?c:o:Bt(s)?c:g?r:e,h(s,u,a,f,l)}}const Ut=Dt(s,a,jt,St,Tt,Nt);class Pt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Ut(t,((t,e)=>{n[e]=function(...e){return this.value=t.call(n,n.value,...e),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,zt=!1,Wt=()=>{};function _t(t,n){for(let e=0;e{t(),e.remove(r)}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Vt=w(Ht);function Zt(t,n){return Vt.set(t,n)}const Kt=Reflect.apply;function Gt(t,n,e){if(Lt(t))return Kt(t,n,e)}async function Jt(t,n,e={}){if(t)return await St(t,(async(t,r,o,i,c)=>{e[r]=await n(t,r,e,o,i,c)})),e}function Qt(t,n,e={},r,o){if(t)return i(r)?jt(t,((t,i,c,s,u)=>{e[i]=n.call(r,t,i,e,c,s,u,o)})):jt(t,((t,r,i,c,s)=>{e[r]=n(t,r,e,i,c,s,o)})),e}function Xt(t){return t?.constructor}function Yt(t,n=[]){const e=Xt(t);return e===Function&&"function"===e.name?function(){}:w(e,n)}function tn(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){o(n(e,r,t))}return r}const o=Lt(r.set);for(const[e,i]of t){const c=n(i,e,r,t);o?r.set(e,c):r[e]=c}return r}async function nn(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))e.push(await n(o,e,t));return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){r(await n(e,o,t))}return o}const i=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i?o.set(e,c):o[e]=c}return o}const en=Dt(K,G,Qt,Jt,tn,nn);async function rn(t,n){if(!t)return;return F(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function on(t,n){if(!t)return;return E(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function cn(t,n=c){if(y(t)||Mt(t))for(const e of t){if(!1===n(e,t))return!1}else for(const[e,r]of t){if(!1===n(r,e,t))return!1}return!0}async function sn(t,n=c,e){if(Bt(t))for await(const r of t(...e)){if(!1===await n(r,t))return!1}else if(y(t)||Mt(t))for(const e of t){if(!1===await n(e,t))return!1}else for(const[e,r]of t){if(!1===await n(r,e,t))return!1}return!0}const un=Dt(E,F,on,rn,cn,sn);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,gn=Object.defineProperty,pn=fn(Object.hasOwnProperty),dn=Object.is;const{random:yn}=Math;const{sign:mn}=Math;const bn=Object.entries;async function An(t,n=c,e={}){return await St(t,(async(t,r,o,c,s)=>{const u=await n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function wn(t,n=c,e={}){return jt(t,((t,r,o,c,s)=>{const u=n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function vn(t,n,e={}){return jt(t,((t,r,o,i,c)=>{!0===n(t,r,e,o,i,c)&&(e[r]=t)})),e}async function Cn(t,n,e={}){return await St(t,(async(t,r,o,i,c)=>{!0===await n(t,r,e,o,i,c)&&(e[r]=t)})),e}const In=z("RegExp"),On=W(In),En=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(En,"\\$&")}function Sn(t,n){return n?Sn(K(t,Fn)):RegExp(t.join("|"))}function jn(t){if(t)return M(t).length}const xn=(t,n)=>{const e={};return s(t,((t,r)=>{e[t]=n[r]})),e},Mn=/[ _-]+/g;const Tn=/[ _-]+/g,Rn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Ln=/[ _-]+/g;const $n=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Dn=/%(?![\da-f]{2})/gi,Un=/&/g,Pn=//g,zn=/"/g;function Wn(t){return decodeURIComponent(t.replace(Dn,(()=>"%25")))}function _n(t){return t.replace(Un,"&").replace(Pn,"<").replace(qn,">").replace(zn,""")}const Hn=/\S+/g,Vn=/\w+/g;const Zn=/\w+/g;function Kn(t){return t[0].toUpperCase()}function Gn(t){return Kn(t)+kn(t)}function Jn(t){return Kn(t)+kn(t).toLowerCase()}function Qn(t){return Xt(t)?.name}function Xn(t){return!i(t)}const Yn=z("Map"),te=W(Yn),ne=/Array/,ee="Array";function re(t){if(t){const n=Qn(t);if(ne.test(n)&&n!==ee)return!0}return!1}const oe=z("BigInt"),ie=W(oe),ce=z("Boolean"),se=W(ce),ue=z("ArrayBuffer"),ae=W(ue);const fe=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const le=z("Date"),he=W(le);function ge(t){return!1===t}const pe=z("Float32Array"),de=W(pe),ye=z("Float64Array"),me=W(ye),{isInteger:be}=Number,Ae=be,we=z("Int16Array"),ve=W(we),Ce=z("Int32Array"),Ie=W(Ce),Oe=z("Int8Array"),Ee=W(Oe);function Fe(t){return!!t&&t instanceof Promise}function Se(t){return!!t&&(Fe(t)||kt(t)||Bt(t))}const{isSafeInteger:je}=Number,xe=je;const Me=z("Uint16Array"),Te=W(Me),Re=z("Uint32Array"),Be=W(Re),Ne=z("Uint8Array"),Le=W(Ne),$e=z("Uint8ClampedArray"),ke=W($e),De=z("WeakMap"),Ue=W(De),Pe=void 0!==globalThis.Deno,qe=void 0!==globalThis.process&&process.versions&&process.versions.node;function ze(t,n=!0){return Boolean(t)&&n}function We(t,n){return ge(V(t,n))}const _e=JSON;const He=_e.stringify;function Ve(t,n,e){const r=globalThis.options||e;let o;return Lt(r)?o=`${r.name} : ${r.constructor.name}`:r&&(o=`${r.title||r.method.name} -> ${r.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${He(t)}\n\t\tExpected: ${He(n)}`,r)}async function Ze(t,n,e){const r=await t;return!(Lt(n)&&!1===await n(r,e))&&!We(r,n)||Ve(r,n,e)}const Ke=globalThis.structuredClone;async function Ge(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r)){const r=await n(o,e,t);i(r)&&e.push(r)}return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){const c=await n(e,o,t);i(c)&&r(c)}return o}const s=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i(c)&&(s?o.set(e,c):o[e]=c)}return o}function Je(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){const c=n(e,r,t);i(c)&&o(c)}return r}const o=Lt(r.set);for(const[e,c]of t){const s=n(c,e,r,t);i(s)&&(o?r.set(e,s):r[e]=s)}return r}const Qe=Dt(u,f,wn,An,Je,Ge);function Xe(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){!0===n(e,r,t)&&o(e)}}else{const e=Lt(r.set);for(const[o,i]of t){!0===n(i,o,r,t)&&(e?r.set(o,i):r[o]=i)}}return r}async function Ye(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))!0===await n(o,e,t)&&e.push(o);return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){!0===await n(e,o,t)&&r(e)}}else{const e=Lt(o.set);for await(const[r,i]of t){!0===await n(i,r,o,t)&&(e?o.set(r,i):o[r]=i)}}return o}const tr=Dt(S,j,vn,Cn,Xe,Ye);function nr(t){return(...n)=>e=>{let r=e;return t(n,(t=>{r=t(r)})),r}}const er=nr(s),rr=nr(I);function or(t){return(...n)=>async e=>{let r=e;return await t(n,(async t=>{r=await t(r)})),r}}const ir=or(a),cr=or(O);const sr=wt(/\./);class ur{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const e=setInterval((()=>{t()}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const ar=w(ur);class fr{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,fr.models.set(t,n)):Ft(this,t)}}function lr(t){return new Promise(t)}class hr{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;jt(t,(n=>{t[n]=new hr(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,e)=>(console.log(t,n,t[n]),t[n]=new hr(e),!0)})}}class gr{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,e=this.totalActive===this.totalFree;n&&e&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const pr=w(gr);class dr{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function yr(t){return new dr(t)}function mr(t){return t?mr[t]:M(mr)}const br=globalThis.navigator?.userAgentData;if(br)jt(br,((t,n)=>{se(t)&&t&&(mr[n]=t)})),s(br.brands,(t=>{mr[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{mr[t]=!0}))}function Ar(t,n,e,r){return t.addEventListener(n,e,r),t}const wr=document.createDocumentFragment.bind(document);function vr(t,n){return t.appendChild(n),n}function Cr(t,n){return y(n)?xn(n,K(n,(n=>t.getAttribute(n)))):(jt(n,((n,e)=>{t.setAttribute(e,n)})),t)}const Ir=/^.[\w_-]+$/,Or=/^[A-Za-z]+$/,Er=/\s/,Fr=document.getElementsByClassName.bind(document),Sr=document.getElementsByTagName.bind(document),jr=document.getElementById.bind(document),xr=document.querySelector.bind(document),Mr=document.querySelectorAll.bind(document);const Tr=document.createElement.bind(document);function Rr(t){const n=sr(t)&&t||`${t}.js`;return(t=>lr((n=>{Ar(t,"load",n,!0),Ar(t,"error",n,!0),vr(xr("head"),t)})))(Cr(Tr("script"),{async:"",src:n}))}function Br(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&Ar(document,"DOMContentLoaded",t),!1)}Br((()=>{const t=jr("AcidLib");Rr(t&&t.getAttribute("data-index")||"/index")}));const Nr=location.protocol,Lr="http:"===Nr?"ws":"wss",$r=location.hostname,kr={hardware:{cores:navigator.hardwareConcurrency},host:{name:$r,protocol:Nr,protocolSocket:Lr}};function Dr(){Ft(kr,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function Ur(){Dr()}Br(Ur),Ar(window,"load",Ur,!0),Ar(window,"resize",Ur,!0),t.hasLocal=void 0,function(n){try{n().removeItem("TESTING"),t.hasLocal=!0}catch(n){t.hasLocal=!1}}((()=>localStorage));class Pr{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=yr(t)}hasLocal=t.hasLocal;setItem(t,n){return this.hasLocal&&this.local.setItem(t,mt(n)?n:He(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return i(n)?n:!i(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}const qr=(t,n)=>`color:${t};background:${n};`,zr={alert:qr("#fff","#f44336"),important:qr("#fff","#E91E63"),notify:qr("#fff","#651FFF"),warning:qr("#000","#FFEA00")};t.Chain=Pt,t.Crate=Pr,t.Intervals=ur,t.Model=fr,t.Store=hr,t.Timers=Ht,t.UniqID=gr,t.VirtualStorage=dr,t.add=function(t,n){return t+n},t.after=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r<=0&&(e=n(...t),r=null),e)},t.append=vr,t.apply=Gt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const e={};return s(t,((t,r)=>{e[n[r]]=t})),e},t.ary=function(t,n){return(...e)=>t(...e.splice(0,n))},t.assert=function(t,n,e){return Se(t)||Se(n)?Ze(t,n,e):!(Lt(n)&&!1===n(t,e))&&!We(t,n)||Ve(t,n,e)},t.assertAsync=Ze,t.assign=Ft,t.before=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r>=1?e=n(...t):r=null,e)},t.bindAll=function(t,n,e){const r=en(t,(t=>Lt(t)?t.bind(n):t));return e?Ft(e,r):r},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Mn," ").trim().split(" ").forEach(((t,e)=>{n+=0===e?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Pt,[t])},t.chunk=function(t,n=1){const e=[];let r=0;return t.forEach(((t,o)=>{o%n||(e.push([]),o&&r++),e[r].push(t)})),e},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(H(t))return ut(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=ut,t.clearIntervals=function(){_t(setTimeout(Wt,0),(t=>{ar.remove(t)}))},t.clearTimers=function(){_t(setTimeout(Wt,0),(t=>{Vt.remove(t)}))},t.clone=function(t){return Ke(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.cnsl=(t,n)=>{const e=mt(t)?t:He(t);if("alert"===n||"warning"===n)return console.trace(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},t.cnslTheme=(t,n,e)=>{zr[t]=qr(n,e)},t.compact=function(t){if(D(t)){const n=M(t),e=n.length,r={};for(let o=0;oze(t)))},t.compactKeys=function(t){const n=[];return jt(t,((t,e)=>{i(t)&&n.push(e)})),n},t.compactMap=Qe,t.compactMapArray=u,t.compactMapAsyncArray=f,t.compactMapAsyncObject=An,t.compactMapObject=wn,t.concurrent=function(t,n,e){const r=t.length,o=[];for(let i=0;i{r=n(t),e[r]||(e[r]=0),e[r]++})),e},t.countKey=function(t,n){let e=0;return s(t,(t=>{t[n]&&e++})),e},t.countWithoutKey=function(t,n){let e=0;return s(t,(t=>{t[n]||e++})),e},t.crate=function(t){return new Pr(t)},t.createFragment=wr,t.curry=function(t,e=t.length){const r=[],o=(...i)=>{if(r.push(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.curryRight=function(t,e=t.length){const r=[],o=(...i)=>{if(r.unshift(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.debounce=function(t,n){function e(...t){e.id!==zt&&Vt.remove(e.id),e.id=Zt((()=>{e.callable(...t),e.id=zt}),n)}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{e.id!==zt&&(Vt.remove(e.id),e.id=zt)},e},t.deduct=function(t){return t-1},t.defProp=gn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,e=t.length)=>C(t,0,e-n),t.each=Ut,t.eachArray=s,t.eachAsyncArray=a,t.eachAsyncObject=St,t.eachObject=jt,t.eachRight=I,t.eachRightAsync=O,t.ensureArray=m,t.ensureBuffer=function(t){return H(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=En,t.eventAdd=Ar,t.eventRemove=function(t,n,e,r){return t.removeEventListener(n,e,r),t},t.every=un,t.everyArg=function(...t){return kt(t[0])?async function(...n){return un(t,(async t=>un(n,(async n=>t(n)))))}:function(...n){return un(t,(t=>un(n,(n=>t(n)))))}},t.everyArray=E,t.everyAsyncArray=F,t.everyAsyncObject=rn,t.everyObject=on,t.falsy=zt,t.filter=tr,t.filterArray=S,t.filterAsyncArray=j,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,e="id"){const r=t.findIndex(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.findIndexCache=at,t.findItem=function(t,n,e="id"){const r=t.find(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let e=t;for(let t=0;tt.concat(m(n))),[]);return e},t.flattenDeep=b,t.flow=er,t.flowAsync=ir,t.flowAsyncRight=cr,t.flowRight=rr,t.forEach=d,t.forEachAsync=async function(t,n){const e=[],r=[];let o=0;t.forEach(((t,n)=>{e[o]=t,r[o]=t,o++}));for(let t=0;t{const r=n(t,e);o(r)}))}else Lt(e.set)?t.forEach(((t,r)=>{const o=n(t,r,e);e.set(r,o)})):t.forEach(((t,r)=>{const o=n(t,r,e);e[r]=o}));return e},t.forOf=Tt,t.forOfAsync=Nt,t.forOfCompactMap=Je,t.forOfCompactMapAsync=Ge,t.forOfEvery=cn,t.forOfEveryAsync=sn,t.forOfFilter=Xe,t.forOfFilterAsync=Ye,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=Dt,t.get=L,t.getByClass=Fr,t.getById=jr,t.getByTag=Sr,t.getEntries=function(t){if(i(t))return bn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return pt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let e=0;return E(t,((t,r)=>(e=r,n>=t&&(e=r+1,!0)))),e},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Qn,t.groupBy=function(t,n){const e={};return s(t,(t=>{const r=n(t);e[r]||(e[r]=[]),e[r].push(t)})),e},t.has=function t(n,e,r){if(Xn(n)||Xn(e))return!1;if(mt(n))return mt(e)?n.includes(e,r):On(e)?e.test(n):Lt(e)?Boolean(e(n)):un(e,(e=>Boolean(t(n,e))));if(y(n)){if(mt(e))return n.includes(e,r);if(On(e))return un(n,(t=>t.test(e)));if(y(e))return un(e,(e=>Boolean(t(n,e))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}})))},t.hasDot=sr,t.hasKeys=k,t.hasLength=r,t.hasProp=pn,t.hasValue=i,t.htmlEntities=_n,t.ifInvoke=function(t,...n){if(Lt(t))return t(...n)},t.ifNotAssign=(t,n,e)=>(n&&!i(t[n])&&(t[n]=e),t),t.ifValue=function(t,n,e,r){if(i(t)){if(Lt(n))return e?Gt(n,e,r):n(...r);if(D(n))return n[e]=t,n}},t.importjs=Rr,t.inAsync=async function(t,n){const e=t.length;for(let r=0;rUt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const e={};return s(t,(t=>{e[t[n]]=t})),e},t.info=kr,t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,e){return t.slice(0,n)+e+t.slice(n,t.length)},t.intersection=function(t,...n){return u(t,(t=>{if(E(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return ar.set(t,n)},t.intervals=ar,t.invert=function(t,n={}){if(t)return jt(t,((t,e)=>{n[t]=e})),n},t.invoke=function(t,n,e){return K(t,((t,r)=>t[n](e,r)))},t.invokeAsync=function(t,n,e){return G(t,(async(t,r)=>t[n](e,r)))},t.isAgent=mr,t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=y,t.isArrayBuffer=ae,t.isArrayBufferCall=ue,t.isArrayLike=function(t,n){if(Xn(t)||Lt(t))return!1;if(y(t)||re(t))return!0;const e=t.length;if(!Xn(e)||!yt(e)||e<0)return!1;if(n){const n=M(t);return!!n&&un(n,((t,n)=>n>=0&&yt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=$t,t.isBigInt=ie,t.isBigIntCall=oe,t.isBoolean=se,t.isBooleanCall=ce,t.isBuffer=H,t.isBufferCall=_,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return fe.test(n)}return!1},t.isConstructor=U,t.isConstructorFactory=P,t.isConstructorNameFactory=z,t.isDate=he,t.isDateCall=le,t.isDeno=Pe,t.isDocumentReady=Br,t.isDom=function(t){return t&&9!==t.nodeType},t.isEmpty=function(t){return mt(t)||y(t)?!r(t):D(t)?!jn(t):!i(t)},t.isEnter=function(t){return 13===t.keyCode},t.isEqual=V,t.isF32=de,t.isF32Call=pe,t.isF64=me,t.isF64Call=ye,t.isFalse=ge,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=It,t.isFileJSON=Ot,t.isFloat=Ae,t.isFunction=Lt,t.isGenerator=Bt,t.isGeneratorCall=Rt,t.isHTMLCollection=function(t){return!!i(t)&&"[object HTMLCollection]"===t.toString()},t.isI16=ve,t.isI16Call=we,t.isI32=Ie,t.isI32Call=Ce,t.isI8=Ee,t.isI8Call=Oe,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Se,t.isMap=te,t.isMapCall=Yn,t.isMatchArray=function(t,n){return t.length===n.length&&E(t,((t,e)=>V(n[e],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const e=M(t),r=M(n);return e.length===r.length&&E(e,(e=>t[e]===n[e]))},t.isNegative=h,t.isNodeList=function(t){return!!i(t)&&"[object NodeList]"===t.toString()},t.isNodejs=qe,t.isNotArray=function(t){return!y(t)},t.isNotNumber=function(t){return!yt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=yt,t.isNumberCall=dt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,e){return t>n&&te},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=D,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Fe,t.isRegex=On,t.isRegexCall=In,t.isRelated=function(t,n){return!Xn(t)&&!Xn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xe,t.isSame=dn,t.isSameType=function(t,n){const e=Xt(t),r=Xt(n);return e===r&&e.name===r.name},t.isSet=Mt,t.isSetCall=xt,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=ze,t.isTypeFactory=W,t.isTypedArray=re,t.isU16=Te,t.isU16Call=Me,t.isU32=Be,t.isU32Call=Re,t.isU8=Le,t.isU8C=ke,t.isU8CCall=$e,t.isU8Call=Ne,t.isUndefined=e,t.isWeakMap=Ue,t.isWeakMapCall=De,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return _e.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Tn," ").trim().toLowerCase().replace(Rn,"-")},t.keys=M,t.largest=function(t){return Z(...t)},t.last=function(t,n){const e=t.length;return n?t.slice(e-n,e):t[e-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=en,t.mapArray=K,t.mapAsyncArray=G,t.mapAsyncObject=Jt,t.mapObject=Qt,t.mapRightArray=function(t,n,e=[],r){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)e[o]=n(t[c],c,t,i,r),o++;return e},t.mapWhile=function(t,n,e=[],r){const o=t.length;for(let i=0;i{Ut(e,((e,r)=>{if(n[r]&&(D(e)||y(e)||e.forEach))return t(n[r],e);n[r]=e}))})),n},t.model=function(t,n){return i(n)?w(fr,[t,n]):L(t,fr.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Xn,t.nodeAttribute=Cr,t.noop=Wt,t.notEqual=We,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Et,t.objectEntries=bn,t.objectSize=jn,t.omit=function(t,n){if(t){if(y(n)){const e=Sn(n);return vn(t,((t,n)=>!e.test(n)))}if(On(n))return vn(t,((t,e)=>!n.test(e)));if(mt(n))return vn(t,((t,e)=>e!==n));if(yt(n)){const e=n.toString();return vn(t,((t,n)=>n!==e))}return Lt(n)?vn(t,((t,e)=>!n(t,e))):void 0}},t.once=t=>{let n;return(...e)=>(i(n)||(n=t(...e)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>en(t,(t=>t(...n)))},t.overEvery=function(t){return n=>un(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const e=[];return[u(t,((t,r)=>{if(n(t,r))return t;e.push(t)})),e]},t.pick=(t,n,e={})=>{if(t)return s(n,(n=>{e[n]=t[n]})),e},t.pluck=function(t,n){return K(t,(t=>bt(t,n)))},t.pluckObject=bt,t.promise=lr,t.propertyMatch=(t,n,e=M(t))=>E(e,(e=>V(t[e],n[e]))),t.querySelector=xr,t.querySelectorAll=Mr,t.randomFloat=function(t,n=0){return yn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,e=1,r=[]){return h(e)?r:tt(...n.map((t=>e[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let e=t.length;for(let r=0;re)return rt(t);if(1===n)return[t[tt(e-1,0)]];const r=[],o={};let i,c=0;for(;cht(t,r,n,e)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",e){return t.sort(((t,r)=>At(t,r,n,e)))},t.sortCollectionAscending=pt,t.sortCollectionAscendingFilter=gt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(J)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=At,t.sortUnique=ct,t.stringify=He,t.stubArray=()=>[],t.stubFalse=()=>zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=J,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const e=t.length;return t.slice(e-n,e)},t.themes=zr,t.throttle=function(t,n){function e(...t){e.id?e.shouldThrottle=qt:(e.callable(...t),e.id=Zt((()=>{e.shouldThrottle&&e.callable(...t),e.id=zt}),n))}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{Vt.remove(e.id),e.id=zt},e},t.timer=Zt,t.timers=Vt,t.times=_t,t.timesAsync=async function(t,n){for(let e=0;en?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=e-n;for(;c=0&&(i=r[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,e):t},t.truncateRight=function(t,n){const e=t.length;return e>n?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=n;for(;c0&&(i=r[c]," "!==i);c++);return t.substring(c,e).trim()})(t,n,e):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.unZipObject=t=>{const n=[],e=[];return jt(t,((t,r)=>{n.push(r),e.push(t)})),[n,e]},t.union=function(...t){return st(b(t))},t.uniqID=pr,t.unique=st,t.untilFalseArray=function(t,n){const e=t.length;for(let r=0;rGn(t)))},t.upperFirstLetter=Kn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(Zn,(t=>Jn(t)))},t.virtualStorage=yr,t.whileCompactMap=function(t,n,e=[],r){let o=0;for(;o!e.has(t)))},t.words=function(t){return t.match(Vn)||[]},t.wrap=function(t,n){return(...e)=>n(t,...e)},t.xor=function(...t){const n=w(Map),e=[];return 2===t.length?v(t[0],t[1]):(s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&e.push(t.child)})),e)},t.zip=function(...t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.zipObject=xn})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function e(t){return void 0===t}function r(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!e(t)&&!o(t)}function c(t){return t}function s(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const a=n.call(r,t,c,e,s,u,o);i(a)&&e.push(a)})):s(t,((t,c,s,u)=>{const a=n(t,c,e,s,u,r,o);i(a)&&e.push(a)})),e}async function a(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const c=await n(t,r,e,o);i(c)&&e.push(c)})),e}const{sign:l}=Math;function h(t){return-1===l(t)}function g(t,n,e,r){let o=t;for(;on;)r.push(o),o-=e;return r}function d(t,n){return t.forEach(n),t}const y=Array.isArray;function m(t){return y(t)&&t||i(t)&&[t]||[]}function b(t){return t.flat(1/0)}const A=Reflect.construct;function w(t,n=[],e){const r=y(n)?n:[n];return e?A(t,r,e):A(t,r)}function v(...t){const n=w(Map),e=[];return s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&0===t.parentIndex&&e.push(t.child)})),e}function C(t,n=1,e=t.length){return t.splice(n,e)}function I(t,n,e){if(!t)return;const r=t.length;for(let o=r-1;o>=0;o--)n(t[o],o,t,r,e);return t}async function O(t,n){if(!t)return;const e=t.length;for(let r=e-1;r>=0;r--)await n(t[r],r,t,e);return t}function E(t,n,e){if(!t)return;const r=t.length;for(let o=0;o{!0===n(t,o,e,i,c,r)&&e.push(t)})),e}async function j(t,n,e=[],r){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,e,i,c,r)&&e.push(t)})),e}const x=Object.keys;function M(t){if(t)return x(t)}const T=/\.|\[/,R=/]/g,B="";function N(t){return t.replace(R,B).split(T)}function L(t,n){if(!n)return!1;let e=n;return E(y(t)?t:N(t),(t=>(e=e[t],i(e)))),e}const $=Object.hasOwn;function k(t,...n){if(t)return E(n,(n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}}))}const D=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function U(t,n){return t?.constructor===n||!1}function P(t){return n=>U(n,t)}function q(t){return t?.constructor?.name}function z(t){return n=>q(n)===t||!1}function W(t){return function(n,...e){return e?t(n)&&E(e,t):t(n)}}const _=z("Buffer"),H=W(_),V=(t,n)=>{if(t===n)return!0;if(H(t))return t.equals(n);if(t.toString()===n.toString())if(D(t)){const e=M(t);if(k(n,e))return E(e,(e=>V(t[e],n[e])))}else if(y(t)&&t.length===n.length)return E(t,((t,e)=>V(t,n[e])));return!1};const Z=Math.max;function K(t,n,e=[],r,o){return i(r)?s(t,((t,i,c,s)=>{e[i]=n.call(r,t,i,e,c,s,o)})):s(t,((t,r,i,c)=>{e[r]=n(t,r,e,i,c,o)})),e}async function G(t,n){const e=[];return await a(t,(async(t,r,o)=>{e[r]=await n(t,r,o)})),e}function J(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function et(t,n,e){if(i(t))return nt(t,n,e)}function rt(t,n=t.length){if(t.length<=1)return et(t);const e=et(t);let r,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",e){return t.sort(((t,r)=>ft(t,r,n,e)))}function ht(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):o.localeCompare(i)}function gt(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i?o?oi?1:0:-1:1}function pt(t,n="id",e){return t.sort(((t,r)=>gt(t,r,n,e)))}const dt=z("Number"),yt=W(dt);const mt=P(String);function bt(t,n){if(t)return mt(n)?t[n]:K(n,(n=>t[n]))}function At(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),It=wt(/\.js$/),Ot=wt(/\.json$/);const Et=Object.assign;function Ft(t,...n){if(i(t))return Et(t,...n)}const St=async(t,n,e,r)=>{if(!t)return;const o=M(t);return i(e)?await a(o,((i,c,s,u)=>n.call(e,t[i],i,t,u,o,r))):await a(o,((e,i,c,s)=>n(t[e],e,t,s,o,r))),t};function jt(t,n,e,r){if(!t)return;const o=M(t);return i(e)?s(o,((o,i,c,s)=>{n.call(e,t[o],o,t,s,c,r)})):s(o,((e,o,i,c)=>{n(t[e],e,t,c,i,r)})),t}const xt=z("Set"),Mt=W(xt);function Tt(t,n){if(Mt(t)){for(const e of t)n(e,t);return t}for(const[e,r]of t)n(r,e,t);return t}const Rt=z("GeneratorFunction"),Bt=W(Rt);async function Nt(t,n,e){if(Mt(t)){for(const e of t)await n(e,t);return t}if(Bt(t))for await(const r of t(...e))await n(r,t);for(const[e,r]of t)await n(r,e,t);return t}const Lt=t=>!!i(t)&&t instanceof Function,$t=z("AsyncFunction"),kt=W($t);function Dt(t,n,e,r,o,c){return(s,u,a,f,l)=>{let h;const g=kt(u);if(i(s)&&u)return h=y(s)?g?n:t:D(s)||Lt(s)?g?r:e:o?g?c:o:Bt(s)?c:g?r:e,h(s,u,a,f,l)}}const Ut=Dt(s,a,jt,St,Tt,Nt);class Pt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Ut(t,((t,e)=>{n[e]=function(...e){return this.value=t.call(n,n.value,...e),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,zt=!1,Wt=()=>{};function _t(t,n){for(let e=0;e{t(),e.remove(r)}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Vt=w(Ht);function Zt(t,n){return Vt.set(t,n)}const Kt=Reflect.apply;function Gt(t,n,e){if(Lt(t))return Kt(t,n,e)}async function Jt(t,n,e={}){if(t)return await St(t,(async(t,r,o,i,c)=>{e[r]=await n(t,r,e,o,i,c)})),e}function Qt(t,n,e={},r,o){if(t)return i(r)?jt(t,((t,i,c,s,u)=>{e[i]=n.call(r,t,i,e,c,s,u,o)})):jt(t,((t,r,i,c,s)=>{e[r]=n(t,r,e,i,c,s,o)})),e}function Xt(t){return t?.constructor}function Yt(t,n=[]){const e=Xt(t);return e===Function&&"function"===e.name?function(){}:w(e,n)}function tn(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){o(n(e,r,t))}return r}const o=Lt(r.set);for(const[e,i]of t){const c=n(i,e,r,t);o?r.set(e,c):r[e]=c}return r}async function nn(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))e.push(await n(o,e,t));return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){r(await n(e,o,t))}return o}const i=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i?o.set(e,c):o[e]=c}return o}const en=Dt(K,G,Qt,Jt,tn,nn);async function rn(t,n){if(!t)return;return F(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function on(t,n){if(!t)return;return E(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function cn(t,n=c){if(y(t)||Mt(t))for(const e of t){if(!1===n(e,t))return!1}else for(const[e,r]of t){if(!1===n(r,e,t))return!1}return!0}async function sn(t,n=c,e){if(Bt(t))for await(const r of t(...e)){if(!1===await n(r,t))return!1}else if(y(t)||Mt(t))for(const e of t){if(!1===await n(e,t))return!1}else for(const[e,r]of t){if(!1===await n(r,e,t))return!1}return!0}const un=Dt(E,F,on,rn,cn,sn);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,gn=Object.defineProperty,pn=fn(Object.hasOwnProperty),dn=Object.is;const{random:yn}=Math;const{sign:mn}=Math;const bn=Object.entries;async function An(t,n=c,e={}){return await St(t,(async(t,r,o,c,s)=>{const u=await n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function wn(t,n=c,e={}){return jt(t,((t,r,o,c,s)=>{const u=n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function vn(t,n,e={}){return jt(t,((t,r,o,i,c)=>{!0===n(t,r,e,o,i,c)&&(e[r]=t)})),e}async function Cn(t,n,e={}){return await St(t,(async(t,r,o,i,c)=>{!0===await n(t,r,e,o,i,c)&&(e[r]=t)})),e}const In=z("RegExp"),On=W(In),En=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(En,"\\$&")}function Sn(t,n){return n?Sn(K(t,Fn)):RegExp(t.join("|"))}function jn(t){if(t)return M(t).length}const xn=(t,n)=>{const e={};return s(t,((t,r)=>{e[t]=n[r]})),e},Mn=/[ _-]+/g;const Tn=/[ _-]+/g,Rn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Ln=/[ _-]+/g;const $n=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Dn=/%(?![\da-f]{2})/gi,Un=/&/g,Pn=//g,zn=/"/g;function Wn(t){return decodeURIComponent(t.replace(Dn,(()=>"%25")))}function _n(t){return t.replace(Un,"&").replace(Pn,"<").replace(qn,">").replace(zn,""")}const Hn=/\S+/g,Vn=/\w+/g;const Zn=/\w+/g;function Kn(t){return t[0].toUpperCase()}function Gn(t){return Kn(t)+kn(t)}function Jn(t){return Kn(t)+kn(t).toLowerCase()}function Qn(t){return Xt(t)?.name}function Xn(t){return!i(t)}const Yn=z("Map"),te=W(Yn),ne=/Array/,ee="Array";function re(t){if(t){const n=Qn(t);if(ne.test(n)&&n!==ee)return!0}return!1}const oe=z("BigInt"),ie=W(oe),ce=z("Boolean"),se=W(ce),ue=z("ArrayBuffer"),ae=W(ue);const fe=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const le=z("Date"),he=W(le);function ge(t){return!1===t}const pe=z("Float32Array"),de=W(pe),ye=z("Float64Array"),me=W(ye),{isInteger:be}=Number,Ae=be,we=z("Int16Array"),ve=W(we),Ce=z("Int32Array"),Ie=W(Ce),Oe=z("Int8Array"),Ee=W(Oe);function Fe(t){return!!t&&t instanceof Promise}function Se(t){return!!t&&(Fe(t)||kt(t)||Bt(t))}const{isSafeInteger:je}=Number,xe=je;const Me=z("Uint16Array"),Te=W(Me),Re=z("Uint32Array"),Be=W(Re),Ne=z("Uint8Array"),Le=W(Ne),$e=z("Uint8ClampedArray"),ke=W($e),De=z("WeakMap"),Ue=W(De),Pe=void 0!==globalThis.Deno,qe=void 0!==globalThis.process&&process.versions&&process.versions.node;function ze(t,n=!0){return Boolean(t)&&n}function We(t,n){return ge(V(t,n))}const _e=JSON;const He=_e.stringify;function Ve(t,n,e){const r=globalThis.options||e;let o;return Lt(r)?o=`${r.name} : ${r.constructor.name}`:r&&(o=`${r.title||r.method.name} -> ${r.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${He(t)}\n\t\tExpected: ${He(n)}`,r)}async function Ze(t,n,e){const r=await t;return!(Lt(n)&&!1===await n(r,e))&&!We(r,n)||Ve(r,n,e)}const Ke=globalThis.structuredClone;async function Ge(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r)){const r=await n(o,e,t);i(r)&&e.push(r)}return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){const c=await n(e,o,t);i(c)&&r(c)}return o}const s=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i(c)&&(s?o.set(e,c):o[e]=c)}return o}function Je(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){const c=n(e,r,t);i(c)&&o(c)}return r}const o=Lt(r.set);for(const[e,c]of t){const s=n(c,e,r,t);i(s)&&(o?r.set(e,s):r[e]=s)}return r}const Qe=Dt(u,f,wn,An,Je,Ge);function Xe(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){!0===n(e,r,t)&&o(e)}}else{const e=Lt(r.set);for(const[o,i]of t){!0===n(i,o,r,t)&&(e?r.set(o,i):r[o]=i)}}return r}async function Ye(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))!0===await n(o,e,t)&&e.push(o);return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){!0===await n(e,o,t)&&r(e)}}else{const e=Lt(o.set);for await(const[r,i]of t){!0===await n(i,r,o,t)&&(e?o.set(r,i):o[r]=i)}}return o}const tr=Dt(S,j,vn,Cn,Xe,Ye);function nr(t){return(...n)=>e=>{let r=e;return t(n,(t=>{r=t(r)})),r}}const er=nr(s),rr=nr(I);function or(t){return(...n)=>async e=>{let r=e;return await t(n,(async t=>{r=await t(r)})),r}}const ir=or(a),cr=or(O);const sr=wt(/\./);class ur{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const e=setInterval((()=>{t()}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const ar=w(ur);class fr{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,fr.models.set(t,n)):Ft(this,t)}}function lr(t){return new Promise(t)}class hr{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;jt(t,(n=>{t[n]=new hr(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,e)=>(console.log(t,n,t[n]),t[n]=new hr(e),!0)})}}class gr{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,e=this.totalActive===this.totalFree;n&&e&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const pr=w(gr);class dr{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function yr(t){return new dr(t)}function mr(t){return t?mr[t]:M(mr)}const br=globalThis.navigator?.userAgentData;if(br)jt(br,((t,n)=>{se(t)&&t&&(mr[n]=t)})),s(br.brands,(t=>{mr[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{mr[t]=!0}))}function Ar(t,n,e,r){return t.addEventListener(n,e,r),t}const wr=document.createDocumentFragment.bind(document);function vr(t,n){return t.appendChild(n),n}function Cr(t,n){return y(n)?xn(n,K(n,(n=>t.getAttribute(n)))):(jt(n,((n,e)=>{t.setAttribute(e,n)})),t)}const Ir=/^.[\w_-]+$/,Or=/^[A-Za-z]+$/,Er=/\s/,Fr=document.getElementsByClassName.bind(document),Sr=document.getElementsByTagName.bind(document),jr=document.getElementById.bind(document),xr=document.querySelector.bind(document),Mr=document.querySelectorAll.bind(document);const Tr=document.createElement.bind(document);function Rr(t){const n=sr(t)&&t||`${t}.js`;return(t=>lr((n=>{Ar(t,"load",n,!0),Ar(t,"error",n,!0),vr(xr("head"),t)})))(Cr(Tr("script"),{async:"",src:n}))}function Br(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&Ar(document,"DOMContentLoaded",t),!1)}Br((()=>{const t=jr("AcidLib");Rr(t&&t.getAttribute("data-index")||"/index")}));const Nr=location.protocol,Lr="http:"===Nr?"ws":"wss",$r=location.hostname,kr={hardware:{cores:navigator.hardwareConcurrency},host:{name:$r,protocol:Nr,protocolSocket:Lr}};function Dr(){Ft(kr,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function Ur(){Dr()}Br(Ur),Ar(window,"load",Ur,!0),Ar(window,"resize",Ur,!0),t.hasLocal=void 0,function(n){try{n().removeItem("TESTING"),t.hasLocal=!0}catch(n){t.hasLocal=!1}}((()=>localStorage));class Pr{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=yr(t)}hasLocal=t.hasLocal;setItem(t,n){return this.hasLocal&&this.local.setItem(t,mt(n)?n:He(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return i(n)?n:!i(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}const qr=(t,n)=>`color:${t};background:${n};`,zr={alert:qr("#fff","#f44336"),important:qr("#fff","#E91E63"),notify:qr("#fff","#651FFF"),warning:qr("#000","#FFEA00")};t.Chain=Pt,t.Crate=Pr,t.Intervals=ur,t.Model=fr,t.Store=hr,t.Timers=Ht,t.UniqID=gr,t.VirtualStorage=dr,t.add=function(t,n){return t+n},t.after=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r<=0&&(e=n(...t),r=null),e)},t.append=vr,t.apply=Gt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const e={};return s(t,((t,r)=>{e[n[r]]=t})),e},t.ary=function(t,n){return(...e)=>t(...e.splice(0,n))},t.assert=function(t,n,e){return Se(t)||Se(n)?Ze(t,n,e):!(Lt(n)&&!1===n(t,e))&&!We(t,n)||Ve(t,n,e)},t.assertAsync=Ze,t.assign=Ft,t.before=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r>=1?e=n(...t):r=null,e)},t.bindAll=function(t,n,e){const r=en(t,(t=>Lt(t)?t.bind(n):t));return e?Ft(e,r):r},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Mn," ").trim().split(" ").forEach(((t,e)=>{n+=0===e?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Pt,[t])},t.chunk=function(t,n=1){const e=[];let r=0;return t.forEach(((t,o)=>{o%n||(e.push([]),o&&r++),e[r].push(t)})),e},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(H(t))return ut(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=ut,t.clearIntervals=function(){_t(setTimeout(Wt,0),(t=>{ar.remove(t)}))},t.clearTimers=function(){_t(setTimeout(Wt,0),(t=>{Vt.remove(t)}))},t.clone=function(t){return Ke(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.cnsl=(t,n)=>{const e=mt(t)?t:He(t);if("alert"===n||"warning"===n)return console.trace(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},t.cnslTheme=(t,n,e)=>{zr[t]=qr(n,e)},t.compact=function(t){if(D(t)){const n=M(t),e=n.length,r={};for(let o=0;oze(t)))},t.compactKeys=function(t){const n=[];return jt(t,((t,e)=>{i(t)&&n.push(e)})),n},t.compactMap=Qe,t.compactMapArray=u,t.compactMapAsyncArray=f,t.compactMapAsyncObject=An,t.compactMapObject=wn,t.concurrent=function(t,n,e){const r=t.length,o=[];for(let i=0;i{r=n(t),e[r]||(e[r]=0),e[r]++})),e},t.countKey=function(t,n){let e=0;return s(t,(t=>{t[n]&&e++})),e},t.countWithoutKey=function(t,n){let e=0;return s(t,(t=>{t[n]||e++})),e},t.crate=function(t){return new Pr(t)},t.createFragment=wr,t.curry=function(t,e=t.length){const r=[],o=(...i)=>{if(r.push(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.curryRight=function(t,e=t.length){const r=[],o=(...i)=>{if(r.unshift(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.debounce=function(t,n){function e(...t){e.id!==zt&&Vt.remove(e.id),e.id=Zt((()=>{e.callable(...t),e.id=zt}),n)}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{e.id!==zt&&(Vt.remove(e.id),e.id=zt)},e},t.deduct=function(t){return t-1},t.defProp=gn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,e=t.length)=>C(t,0,e-n),t.each=Ut,t.eachArray=s,t.eachAsyncArray=a,t.eachAsyncObject=St,t.eachObject=jt,t.eachRight=I,t.eachRightAsync=O,t.ensureArray=m,t.ensureBuffer=function(t){return H(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=En,t.eventAdd=Ar,t.eventRemove=function(t,n,e,r){return t.removeEventListener(n,e,r),t},t.every=un,t.everyArg=function(...t){return kt(t[0])?async function(...n){return un(t,(async t=>un(n,(async n=>t(n)))))}:function(...n){return un(t,(t=>un(n,(n=>t(n)))))}},t.everyArray=E,t.everyAsyncArray=F,t.everyAsyncObject=rn,t.everyObject=on,t.falsy=zt,t.filter=tr,t.filterArray=S,t.filterAsyncArray=j,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,e="id"){const r=t.findIndex(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.findIndexCache=at,t.findItem=function(t,n,e="id"){const r=t.find(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let e=t;for(let t=0;tt.concat(m(n))),[]);return e},t.flattenDeep=b,t.flow=er,t.flowAsync=ir,t.flowAsyncRight=cr,t.flowRight=rr,t.forEach=d,t.forEachAsync=async function(t,n){const e=[],r=[];let o=0;t.forEach(((t,n)=>{e[o]=t,r[o]=t,o++}));for(let t=0;t{const r=n(t,e);o(r)}))}else Lt(e.set)?t.forEach(((t,r)=>{const o=n(t,r,e);e.set(r,o)})):t.forEach(((t,r)=>{const o=n(t,r,e);e[r]=o}));return e},t.forOf=Tt,t.forOfAsync=Nt,t.forOfCompactMap=Je,t.forOfCompactMapAsync=Ge,t.forOfEvery=cn,t.forOfEveryAsync=sn,t.forOfFilter=Xe,t.forOfFilterAsync=Ye,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=Dt,t.get=L,t.getByClass=Fr,t.getById=jr,t.getByTag=Sr,t.getEntries=function(t){if(i(t))return bn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return pt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let e=0;return E(t,((t,r)=>(e=r,n>=t&&(e=r+1,!0)))),e},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Qn,t.groupBy=function(t,n){const e={};return s(t,(t=>{const r=n(t);e[r]||(e[r]=[]),e[r].push(t)})),e},t.has=function t(n,e,r){if(Xn(n)||Xn(e))return!1;if(mt(n))return mt(e)?n.includes(e,r):On(e)?e.test(n):Lt(e)?Boolean(e(n)):un(e,(e=>Boolean(t(n,e))));if(y(n)){if(mt(e))return n.includes(e,r);if(On(e))return un(n,(t=>t.test(e)));if(y(e))return un(e,(e=>Boolean(t(n,e))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}})))},t.hasDot=sr,t.hasKeys=k,t.hasLength=r,t.hasProp=pn,t.hasValue=i,t.htmlEntities=_n,t.ifInvoke=function(t,...n){if(Lt(t))return t(...n)},t.ifNotAssign=(t,n,e)=>(n&&!i(t[n])&&(t[n]=e),t),t.ifValue=function(t,n,e,r){if(i(t)){if(Lt(n))return e?Gt(n,e,r):n(...r);if(D(n))return n[e]=t,n}},t.importjs=Rr,t.inAsync=async function(t,n){const e=t.length;for(let r=0;rUt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const e={};return s(t,(t=>{e[t[n]]=t})),e},t.info=kr,t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,e){return t.slice(0,n)+e+t.slice(n,t.length)},t.intersection=function(t,...n){return u(t,(t=>{if(E(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return ar.set(t,n)},t.intervals=ar,t.invert=function(t,n={}){if(t)return jt(t,((t,e)=>{n[t]=e})),n},t.invokeArray=function(t,n,e){if(!t)return;const r=t.length;if(i(e))for(let o=0;ot[n].call(r,e):(t,r)=>t[n](e))},t.invokeCollectionAsync=function(t,n,e,r){return G(t,r?t=>t[n].call(r,e):async t=>t[n](e))},t.isAgent=mr,t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=y,t.isArrayBuffer=ae,t.isArrayBufferCall=ue,t.isArrayLike=function(t,n){if(Xn(t)||Lt(t))return!1;if(y(t)||re(t))return!0;const e=t.length;if(!Xn(e)||!yt(e)||e<0)return!1;if(n){const n=M(t);return!!n&&un(n,((t,n)=>n>=0&&yt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=$t,t.isBigInt=ie,t.isBigIntCall=oe,t.isBoolean=se,t.isBooleanCall=ce,t.isBuffer=H,t.isBufferCall=_,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return fe.test(n)}return!1},t.isConstructor=U,t.isConstructorFactory=P,t.isConstructorNameFactory=z,t.isDate=he,t.isDateCall=le,t.isDeno=Pe,t.isDocumentReady=Br,t.isDom=function(t){return t&&9!==t.nodeType},t.isEmpty=function(t){return mt(t)||y(t)?!r(t):D(t)?!jn(t):!i(t)},t.isEnter=function(t){return 13===t.keyCode},t.isEqual=V,t.isF32=de,t.isF32Call=pe,t.isF64=me,t.isF64Call=ye,t.isFalse=ge,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=It,t.isFileJSON=Ot,t.isFloat=Ae,t.isFunction=Lt,t.isGenerator=Bt,t.isGeneratorCall=Rt,t.isHTMLCollection=function(t){return!!i(t)&&"[object HTMLCollection]"===t.toString()},t.isI16=ve,t.isI16Call=we,t.isI32=Ie,t.isI32Call=Ce,t.isI8=Ee,t.isI8Call=Oe,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Se,t.isMap=te,t.isMapCall=Yn,t.isMatchArray=function(t,n){return t.length===n.length&&E(t,((t,e)=>V(n[e],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const e=M(t),r=M(n);return e.length===r.length&&E(e,(e=>t[e]===n[e]))},t.isNegative=h,t.isNodeList=function(t){return!!i(t)&&"[object NodeList]"===t.toString()},t.isNodejs=qe,t.isNotArray=function(t){return!y(t)},t.isNotNumber=function(t){return!yt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=yt,t.isNumberCall=dt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,e){return t>n&&te},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=D,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Fe,t.isRegex=On,t.isRegexCall=In,t.isRelated=function(t,n){return!Xn(t)&&!Xn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xe,t.isSame=dn,t.isSameType=function(t,n){const e=Xt(t),r=Xt(n);return e===r&&e.name===r.name},t.isSet=Mt,t.isSetCall=xt,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=ze,t.isTypeFactory=W,t.isTypedArray=re,t.isU16=Te,t.isU16Call=Me,t.isU32=Be,t.isU32Call=Re,t.isU8=Le,t.isU8C=ke,t.isU8CCall=$e,t.isU8Call=Ne,t.isUndefined=e,t.isWeakMap=Ue,t.isWeakMapCall=De,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return _e.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Tn," ").trim().toLowerCase().replace(Rn,"-")},t.keys=M,t.largest=function(t){return Z(...t)},t.last=function(t,n){const e=t.length;return n?t.slice(e-n,e):t[e-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=en,t.mapArray=K,t.mapAsyncArray=G,t.mapAsyncObject=Jt,t.mapObject=Qt,t.mapRightArray=function(t,n,e=[],r){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)e[o]=n(t[c],c,t,i,r),o++;return e},t.mapWhile=function(t,n,e=[],r){const o=t.length;for(let i=0;i{Ut(e,((e,r)=>{if(n[r]&&(D(e)||y(e)||e.forEach))return t(n[r],e);n[r]=e}))})),n},t.model=function(t,n){return i(n)?w(fr,[t,n]):L(t,fr.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Xn,t.nodeAttribute=Cr,t.noop=Wt,t.notEqual=We,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Et,t.objectEntries=bn,t.objectSize=jn,t.omit=function(t,n){if(t){if(y(n)){const e=Sn(n);return vn(t,((t,n)=>!e.test(n)))}if(On(n))return vn(t,((t,e)=>!n.test(e)));if(mt(n))return vn(t,((t,e)=>e!==n));if(yt(n)){const e=n.toString();return vn(t,((t,n)=>n!==e))}return Lt(n)?vn(t,((t,e)=>!n(t,e))):void 0}},t.once=t=>{let n;return(...e)=>(i(n)||(n=t(...e)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>en(t,(t=>t(...n)))},t.overEvery=function(t){return n=>un(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const e=[];return[u(t,((t,r)=>{if(n(t,r))return t;e.push(t)})),e]},t.pick=(t,n,e={})=>{if(t)return s(n,(n=>{e[n]=t[n]})),e},t.pluck=function(t,n){return K(t,(t=>bt(t,n)))},t.pluckObject=bt,t.promise=lr,t.propertyMatch=(t,n,e=M(t))=>E(e,(e=>V(t[e],n[e]))),t.querySelector=xr,t.querySelectorAll=Mr,t.randomFloat=function(t,n=0){return yn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,e=1,r=[]){return h(e)?r:tt(...n.map((t=>e[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let e=t.length;for(let r=0;re)return rt(t);if(1===n)return[t[tt(e-1,0)]];const r=[],o={};let i,c=0;for(;cht(t,r,n,e)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",e){return t.sort(((t,r)=>At(t,r,n,e)))},t.sortCollectionAscending=pt,t.sortCollectionAscendingFilter=gt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(J)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=At,t.sortUnique=ct,t.stringify=He,t.stubArray=()=>[],t.stubFalse=()=>zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=J,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const e=t.length;return t.slice(e-n,e)},t.themes=zr,t.throttle=function(t,n){function e(...t){e.id?e.shouldThrottle=qt:(e.callable(...t),e.id=Zt((()=>{e.shouldThrottle&&e.callable(...t),e.id=zt}),n))}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{Vt.remove(e.id),e.id=zt},e},t.timer=Zt,t.timers=Vt,t.times=_t,t.timesAsync=async function(t,n){for(let e=0;en?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=e-n;for(;c=0&&(i=r[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,e):t},t.truncateRight=function(t,n){const e=t.length;return e>n?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=n;for(;c0&&(i=r[c]," "!==i);c++);return t.substring(c,e).trim()})(t,n,e):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.unZipObject=t=>{const n=[],e=[];return jt(t,((t,r)=>{n.push(r),e.push(t)})),[n,e]},t.union=function(...t){return st(b(t))},t.uniqID=pr,t.unique=st,t.untilFalseArray=function(t,n){const e=t.length;for(let r=0;rGn(t)))},t.upperFirstLetter=Kn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(Zn,(t=>Jn(t)))},t.virtualStorage=yr,t.whileCompactMap=function(t,n,e=[],r){let o=0;for(;o!e.has(t)))},t.words=function(t){return t.match(Vn)||[]},t.wrap=function(t,n){return(...e)=>n(t,...e)},t.xor=function(...t){const n=w(Map),e=[];return 2===t.length?v(t[0],t[1]):(s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&e.push(t.child)})),e)},t.zip=function(...t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.zipObject=xn})); //# sourceMappingURL=browser.js.map diff --git a/npm/index.js b/npm/index.js index 05f8b035..10ae692b 100644 --- a/npm/index.js +++ b/npm/index.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("fs/promises"),require("path"),require("url")):"function"==typeof define&&define.amd?define(["exports","fs/promises","path","url"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={},t.promises,t.path,t.url)}(this,(function(t,n,r,e){"use strict";function o(t){return t.length=0,t}function i(t){return void 0===t}function c(t){return Boolean(t.length)}function u(t){return null===t}function s(t){return!i(t)&&!u(t)}function a(t){return t}function f(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const a=n.call(e,t,i,r,c,u,o);s(a)&&r.push(a)})):f(t,((t,i,c,u)=>{const a=n(t,i,r,c,u,e,o);s(a)&&r.push(a)})),r}async function h(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const i=await n(t,e,r,o);s(i)&&r.push(i)})),r}const{sign:g}=Math;function y(t){return-1===g(t)}function d(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function A(t,n){return t.forEach(n),t}const b=Array.isArray;function w(t){return b(t)&&t||s(t)&&[t]||[]}function v(t){return t.flat(1/0)}const C=Reflect.construct;function O(t,n=[],r){const e=b(n)?n:[n];return r?C(t,e,r):C(t,e)}function j(...t){const n=O(Map),r=[];return f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function F(t,n=1,r=t.length){return t.splice(n,r)}function I(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function E(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function M(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function x(t,n,r=[],e){return await h(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const T=Object.keys;function B(t){if(t)return T(t)}const N=/\.|\[/,U=/]/g,P="";function k(t){return t.replace(U,P).split(N)}function $(t,n){if(!n)return!1;let r=n;return M(b(t)?t:k(t),(t=>(r=r[t],s(r)))),r}const D=Object.hasOwn;function L(t,...n){if(t)return M(n,(n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}}))}const _=t=>!!s(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function q(t,n){return t?.constructor===n||!1}function V(t){return n=>q(n,t)}function K(t){return t?.constructor?.name}function Z(t){return n=>K(n)===t||!1}function z(t){return function(n,...r){return r?t(n)&&M(r,t):t(n)}}const W=Z("Buffer"),G=z(W),J=(t,n)=>{if(t===n)return!0;if(G(t))return t.equals(n);if(t.toString()===n.toString())if(_(t)){const r=B(t);if(L(n,r))return M(r,(r=>J(t[r],n[r])))}else if(b(t)&&t.length===n.length)return M(t,((t,r)=>J(t,n[r])));return!1};const H=Math.max;function Q(t,n,r=[],e,o){return s(e)?f(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):f(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function X(t,n){const r=[];return await h(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function Y(t,n){return t-n}function tt(t,n){return n-t}const{floor:nt,random:rt}=Math;function et(t,n=0){return nt(rt()*(t-n))+n}const ot=Array.from;function it(t,n,r){if(s(t))return ot(t,n,r)}function ct(t,n=t.length){if(t.length<=1)return it(t);const r=it(t);let e,o,i=0;for(;ii?-1:0:1:-1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}function yt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function dt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function mt(t,n="id",r){return t.sort(((t,e)=>dt(t,e,n,r)))}const At=Z("Number"),bt=z(At);const wt=V(String);function vt(t,n){if(t)return wt(n)?t[n]:Q(n,(n=>t[n]))}function Ct(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function Ot(t){return n=>!!s(n)&&t.test(n)}const jt=Ot(/\.css$/),Ft=Ot(/\.html$/),It=Ot(/\.js$/),Et=Ot(/\.json$/);const Mt=Object.assign;function Rt(t,...n){if(s(t))return Mt(t,...n)}const St=async(t,n,r,e)=>{if(!t)return;const o=B(t);return s(r)?await h(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await h(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function xt(t,n,r,e){if(!t)return;const o=B(t);return s(r)?f(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):f(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const Tt=Z("Set"),Bt=z(Tt);function Nt(t,n){if(Bt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Ut=Z("GeneratorFunction"),Pt=z(Ut);async function kt(t,n,r){if(Bt(t)){for(const r of t)await n(r,t);return t}if(Pt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const $t=t=>!!s(t)&&t instanceof Function,Dt=Z("AsyncFunction"),Lt=z(Dt);function _t(t,n,r,e,o,i){return(c,u,a,f,l)=>{let h;const p=Lt(u);if(s(c)&&u)return h=b(c)?p?n:t:_(c)||$t(c)?p?e:r:o?p?i:o:Pt(c)?i:p?e:r,h(c,u,a,f,l)}}const qt=_t(f,h,xt,St,Nt,kt);class Vt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;qt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const Kt=!0,Zt=!1,zt=()=>{};function Wt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Kt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Jt=O(Gt);function Ht(t,n){return Jt.set(t,n)}const Qt=Reflect.apply;function Xt(t,n,r){if($t(t))return Qt(t,n,r)}async function Yt(t,n,r={}){if(t)return await St(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function tn(t,n,r={},e,o){if(t)return s(e)?xt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):xt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function nn(t){return t?.constructor}function rn(t,n=[]){const r=nn(t);return r===Function&&"function"===r.name?function(){}:O(r,n)}function en(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function on(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const cn=_t(Q,X,tn,Yt,en,on);async function un(t,n){if(!t)return;return R(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function sn(t,n){if(!t)return;return M(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function an(t,n=a){if(b(t)||Bt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function fn(t,n=a,r){if(Pt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(b(t)||Bt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const ln=_t(M,R,sn,un,an,fn);const hn=Function.prototype;function pn(t){return hn.call.bind(t)}const gn=Object.getOwnPropertyNames,yn=Object.getOwnPropertyDescriptor,dn=Object.defineProperty,mn=pn(Object.hasOwnProperty),An=Object.is;const{random:bn}=Math;const{sign:wn}=Math;const vn=Object.entries;async function Cn(t,n=a,r={}){return await St(t,(async(t,e,o,i,c)=>{const u=await n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function On(t,n=a,r={}){return xt(t,((t,e,o,i,c)=>{const u=n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function jn(t,n,r={}){return xt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Fn(t,n,r={}){return await St(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const In=Z("RegExp"),En=z(In),Mn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Rn(t){return t.replace(Mn,"\\$&")}function Sn(t,n){return n?Sn(Q(t,Rn)):RegExp(t.join("|"))}function xn(t){if(t)return B(t).length}const Tn=/[ _-]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Un=/[ _-]+/g,Pn=/[ ]+/g;const kn=/[ _-]+/g;const $n=/[ _-]+/g;function Dn(t,n=1){return t.substring(n)}const Ln=/%(?![\da-f]{2})/gi,_n=/&/g,qn=//g,Kn=/"/g;function Zn(t){return decodeURIComponent(t.replace(Ln,(()=>"%25")))}function zn(t){return t.replace(_n,"&").replace(qn,"<").replace(Vn,">").replace(Kn,""")}const Wn=/\S+/g,Gn=/\w+/g;const Jn=/\w+/g;function Hn(t){return t[0].toUpperCase()}function Qn(t){return Hn(t)+Dn(t)}function Xn(t){return Hn(t)+Dn(t).toLowerCase()}function Yn(t){return nn(t)?.name}function tr(t){return!s(t)}const nr=Z("Map"),rr=z(nr),er=/Array/,or="Array";function ir(t){if(t){const n=Yn(t);if(er.test(n)&&n!==or)return!0}return!1}const cr=Z("BigInt"),ur=z(cr),sr=Z("Boolean"),ar=z(sr),fr=Z("ArrayBuffer"),lr=z(fr);const hr=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const pr=Z("Date"),gr=z(pr);function yr(t){return!1===t}const dr=Z("Float32Array"),mr=z(dr),Ar=Z("Float64Array"),br=z(Ar),{isInteger:wr}=Number,vr=wr,Cr=Z("Int16Array"),Or=z(Cr),jr=Z("Int32Array"),Fr=z(jr),Ir=Z("Int8Array"),Er=z(Ir);function Mr(t){return!!t&&t instanceof Promise}function Rr(t){return!!t&&(Mr(t)||Lt(t)||Pt(t))}const{isSafeInteger:Sr}=Number,xr=Sr;const Tr=Z("Uint16Array"),Br=z(Tr),Nr=Z("Uint32Array"),Ur=z(Nr),Pr=Z("Uint8Array"),kr=z(Pr),$r=Z("Uint8ClampedArray"),Dr=z($r),Lr=Z("WeakMap"),_r=z(Lr),qr=void 0!==globalThis.Deno,Vr=void 0!==globalThis.process&&process.versions&&process.versions.node;function Kr(t,n=!0){return Boolean(t)&&n}function Zr(t,n){return yr(J(t,n))}const zr=JSON;const Wr=zr.stringify;function Gr(t,n,r){const e=globalThis.options||r;let o;return $t(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Wr(t)}\n\t\tExpected: ${Wr(n)}`,e)}async function Jr(t,n,r){const e=await t;return!($t(n)&&!1===await n(e,r))&&!Zr(e,n)||Gr(e,n,r)}const Hr=globalThis.structuredClone;async function Qr(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);s(e)&&r.push(e)}return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const i=await n(r,o,t);s(i)&&e(i)}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);s(c)&&(i?o.set(r,c):o[r]=c)}return o}function Xr(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const i=n(r,e,t);s(i)&&o(i)}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);s(c)&&(o?e.set(r,c):e[r]=c)}return e}const Yr=_t(l,p,On,Cn,Xr,Qr);function te(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=$t(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function ne(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=$t(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const re=_t(S,x,jn,Fn,te,ne);function ee(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const oe=ee(f),ie=ee(I);function ce(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const ue=ce(h),se=ce(E);const ae=Ot(/\./);class fe{list=O(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Kt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const le=O(fe);class he{static models={};constructor(t,n){s(n)?(Rt(this,n),this.modelName=t,he.models.set(t,n)):Rt(this,t)}}class pe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;xt(t,(n=>{t[n]=new pe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new pe(r),!0)})}}class ge{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return s(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ye=O(ge);class de{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Vt,t.Intervals=fe,t.Model=he,t.Store=pe,t.Timers=Gt,t.UniqID=ge,t.VirtualStorage=de,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Xt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const r={};return f(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Rr(t)||Rr(n)?Jr(t,n,r):!($t(n)&&!1===n(t,r))&&!Zr(t,n)||Gr(t,n,r)},t.assertAsync=Jr,t.assign=Rt,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=cn(t,(t=>$t(t)?t.bind(n):t));return r?Rt(r,e):e},t.cacheNativeMethod=pn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Tn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return O(Vt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(G(t))return lt(t);if(b(t))return o(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=o,t.clearBuffer=lt,t.clearIntervals=function(){Wt(setTimeout(zt,0),(t=>{le.remove(t)}))},t.clearTimers=function(){Wt(setTimeout(zt,0),(t=>{Jt.remove(t)}))},t.clone=function(t){return Hr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=rn,t.compact=function(t){if(_(t)){const n=B(t),r=n.length,e={};for(let o=0;oKr(t)))},t.compactKeys=function(t){const n=[];return xt(t,((t,r)=>{s(t)&&n.push(r)})),n},t.compactMap=Yr,t.compactMapArray=l,t.compactMapAsyncArray=p,t.compactMapAsyncObject=Cn,t.compactMapObject=On,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{const c=r.join(e,i);if((await n.stat(c)).isDirectory()){const u=r.join(o,i.replace(e,""));await n.mkdir(u,{recursive:!0}),await t(c,u)}else await async function(t,e,o){const i=r.join(t,o),c=r.join(e,o);await n.copyFile(i,c)}(e,o,i)})),!0},t.countBy=function(t,n){const r={};let e;return f(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return f(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return f(t,(t=>{t[n]||r++})),r},t.currentFile=function(t){return globalThis.__filename?__filename:e.fileURLToPath(t.url)},t.currentPath=function(t){return globalThis.__dirname?__dirname:r.dirname(e.fileURLToPath(t.url))},t.curry=function(t,n=t.length){const r=[],e=(...i)=>{if(r.push(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.curryRight=function(t,n=t.length){const r=[],e=(...i)=>{if(r.unshift(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.debounce=function(t,n){function r(...t){r.id!==Zt&&Jt.remove(r.id),r.id=Ht((()=>{r.callable(...t),r.id=Zt}),n)}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{r.id!==Zt&&(Jt.remove(r.id),r.id=Zt)},r},t.deduct=function(t){return t-1},t.defProp=dn,t.difference=j,t.divide=function(t,n){return t/n},t.drop=F,t.dropRight=(t,n=1,r=t.length)=>F(t,0,r-n),t.each=qt,t.eachArray=f,t.eachAsyncArray=h,t.eachAsyncObject=St,t.eachObject=xt,t.eachRight=I,t.eachRightAsync=E,t.ensureArray=w,t.ensureBuffer=function(t){return G(t)&&t||s(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Rn,t.escapeRegexRegex=Mn,t.every=ln,t.everyArg=function(...t){return Lt(t[0])?async function(...n){return ln(t,(async t=>ln(n,(async n=>t(n)))))}:function(...n){return ln(t,(t=>ln(n,(n=>t(n)))))}},t.everyArray=M,t.everyAsyncArray=R,t.everyAsyncObject=un,t.everyObject=sn,t.falsy=Zt,t.filter=re,t.filterArray=S,t.filterAsyncArray=x,t.filterAsyncObject=Fn,t.filterObject=jn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=ht,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(w(n))),[]);return r},t.flattenDeep=v,t.flow=oe,t.flowAsync=ue,t.flowAsyncRight=se,t.flowRight=ie,t.forEach=A,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else $t(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=Nt,t.forOfAsync=kt,t.forOfCompactMap=Xr,t.forOfCompactMapAsync=Qr,t.forOfEvery=an,t.forOfEveryAsync=fn,t.forOfFilter=te,t.forOfFilterAsync=ne,t.forOfMap=en,t.forOfMapAsync=on,t.generateLoop=_t,t.get=$,t.getEntries=function(t){if(s(t))return vn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return mt(t,n)[0]},t.getLowest=function(t,n){return gt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return M(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=yn,t.getPropNames=gn,t.getType=nn,t.getTypeName=Yn,t.groupBy=function(t,n){const r={};return f(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(tr(n)||tr(r))return!1;if(wt(n))return wt(r)?n.includes(r,e):En(r)?r.test(n):$t(r)?Boolean(r(n)):ln(r,(r=>Boolean(t(n,r))));if(b(n)){if(wt(r))return n.includes(r,e);if(En(r))return ln(n,(t=>t.test(r)));if(b(r))return ln(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}})))},t.hasDot=ae,t.hasKeys=L,t.hasLength=c,t.hasProp=mn,t.hasValue=s,t.htmlEntities=zn,t.ifInvoke=function(t,...n){if($t(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!s(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(s(t)){if($t(n))return r?Xt(n,r,e):n(...e);if(_(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eqt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return f(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return l(t,(t=>{if(M(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return le.set(t,n)},t.intervals=le,t.invert=function(t,n={}){if(t)return xt(t,((t,r)=>{n[t]=r})),n},t.invoke=function(t,n,r){return Q(t,((t,e)=>t[n](r,e)))},t.invokeAsync=function(t,n,r){return X(t,(async(t,e)=>t[n](r,e)))},t.isArguments=function(t){return!!s(t)&&"[object Arguments]"===t.toString()},t.isArray=b,t.isArrayBuffer=lr,t.isArrayBufferCall=fr,t.isArrayLike=function(t,n){if(tr(t)||$t(t))return!1;if(b(t)||ir(t))return!0;const r=t.length;if(!tr(r)||!bt(r)||r<0)return!1;if(n){const n=B(t);return!!n&&ln(n,((t,n)=>n>=0&&bt(n)))}return!0},t.isAsync=Lt,t.isAsyncCall=Dt,t.isBigInt=ur,t.isBigIntCall=cr,t.isBoolean=ar,t.isBooleanCall=sr,t.isBuffer=G,t.isBufferCall=W,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(s(t)){const n=t?.constructor?.name;return hr.test(n)}return!1},t.isConstructor=q,t.isConstructorFactory=V,t.isConstructorNameFactory=Z,t.isDate=gr,t.isDateCall=pr,t.isDeno=qr,t.isEmpty=function(t){return wt(t)||b(t)?!c(t):_(t)?!xn(t):!s(t)},t.isEqual=J,t.isF32=mr,t.isF32Call=dr,t.isF64=br,t.isF64Call=Ar,t.isFalse=yr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=jt,t.isFileHTML=Ft,t.isFileJS=It,t.isFileJSON=Et,t.isFloat=vr,t.isFunction=$t,t.isGenerator=Pt,t.isGeneratorCall=Ut,t.isI16=Or,t.isI16Call=Cr,t.isI32=Fr,t.isI32Call=jr,t.isI8=Er,t.isI8Call=Ir,t.isIterable=function(t){return s(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Rr,t.isMap=rr,t.isMapCall=nr,t.isMatchArray=function(t,n){return t.length===n.length&&M(t,((t,r)=>J(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=B(t),e=B(n);return r.length===e.length&&M(r,(r=>t[r]===n[r]))},t.isNegative=y,t.isNodejs=Vr,t.isNotArray=function(t){return!b(t)},t.isNotNumber=function(t){return!bt(t)},t.isNotString=function(t){return!wt(t)},t.isNull=u,t.isNumber=bt,t.isNumberCall=At,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=_,t.isPositive=function(t){return 1===wn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Mr,t.isRegex=En,t.isRegexCall=In,t.isRelated=function(t,n){return!tr(t)&&!tr(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xr,t.isSame=An,t.isSameType=function(t,n){const r=nn(t),e=nn(n);return r===e&&r.name===e.name},t.isSet=Bt,t.isSetCall=Tt,t.isString=wt,t.isTrue=function(t){return!0===t},t.isTruthy=Kr,t.isTypeFactory=z,t.isTypedArray=ir,t.isU16=Br,t.isU16Call=Tr,t.isU32=Ur,t.isU32Call=Nr,t.isU8=kr,t.isU8C=Dr,t.isU8CCall=$r,t.isU8Call=Pr,t.isUndefined=i,t.isWeakMap=_r,t.isWeakMapCall=Lr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return zr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Bn," ").trim().toLowerCase().replace(Nn,"-")},t.keys=B,t.largest=function(t){return H(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=cn,t.mapArray=Q,t.mapAsyncArray=X,t.mapAsyncObject=Yt,t.mapObject=tn,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{qt(r,((r,e)=>{if(n[e]&&(_(r)||b(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return s(n)?O(he,[t,n]):$(t,he.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=tr,t.noop=zt,t.notEqual=Zr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Mt,t.objectEntries=vn,t.objectSize=xn,t.omit=function(t,n){if(t){if(b(n)){const r=Sn(n);return jn(t,((t,n)=>!r.test(n)))}if(En(n))return jn(t,((t,r)=>!n.test(r)));if(wt(n))return jn(t,((t,r)=>r!==n));if(bt(n)){const r=n.toString();return jn(t,((t,n)=>n!==r))}return $t(n)?jn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(s(n)||(n=t(...r)),n)},t.onlyUnique=st,t.over=function(t){return(...n)=>cn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>ln(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[l(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return f(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return Q(t,(t=>vt(t,n)))},t.pluckObject=vt,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=B(t))=>M(r,(r=>J(t[r],n[r]))),t.randomFloat=function(t,n=0){return bn()*(t-n)+n},t.randomInt=et,t.range=function(t,n,r=1,e=[]){return y(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=Ot,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return ct(t);if(1===n)return[t[et(r-1,0)]];const e=[],o={};let i,c=0;for(;cyt(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>Ct(t,e,n,r)))},t.sortCollectionAscending=mt,t.sortCollectionAscendingFilter=dt,t.sortCollectionDescending=gt,t.sortCollectionDescendingFilter=pt,t.sortNumberAscending=function(t){return t.sort(Y)},t.sortNumberDescening=function(t){return t.sort(tt)},t.sortObjectsAlphabetically=yt,t.sortObjectsAlphabeticallyReverse=Ct,t.sortUnique=at,t.stringify=Wr,t.stubArray=()=>[],t.stubFalse=()=>Zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>Kt,t.subtract=Y,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=tt,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=Kt:(r.callable(...t),r.id=Ht((()=>{r.shouldThrottle&&r.callable(...t),r.id=Zt}),n))}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{Jt.remove(r.id),r.id=Zt},r},t.timer=Ht,t.timers=Jt,t.times=Wt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=Kt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return xt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ft(v(t))},t.uniqID=ye,t.unique=ft,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eQn(t)))},t.upperFirstLetter=Hn,t.upperFirstOnly=Xn,t.upperFirstOnlyAll=function(t){return t.replace(Jn,(t=>Xn(t)))},t.virtualStorage=function(t){return new de(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(Gn)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=O(Map),r=[];return 2===t.length?j(t[0],t[1]):(f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return f(t,((t,e)=>{r[t]=n[e]})),r}})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("fs/promises"),require("path"),require("url")):"function"==typeof define&&define.amd?define(["exports","fs/promises","path","url"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={},t.promises,t.path,t.url)}(this,(function(t,n,r,e){"use strict";function o(t){return t.length=0,t}function i(t){return void 0===t}function c(t){return Boolean(t.length)}function u(t){return null===t}function s(t){return!i(t)&&!u(t)}function a(t){return t}function f(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const a=n.call(e,t,i,r,c,u,o);s(a)&&r.push(a)})):f(t,((t,i,c,u)=>{const a=n(t,i,r,c,u,e,o);s(a)&&r.push(a)})),r}async function h(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const i=await n(t,e,r,o);s(i)&&r.push(i)})),r}const{sign:g}=Math;function y(t){return-1===g(t)}function d(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function A(t,n){return t.forEach(n),t}const b=Array.isArray;function w(t){return b(t)&&t||s(t)&&[t]||[]}function v(t){return t.flat(1/0)}const C=Reflect.construct;function O(t,n=[],r){const e=b(n)?n:[n];return r?C(t,e,r):C(t,e)}function j(...t){const n=O(Map),r=[];return f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function F(t,n=1,r=t.length){return t.splice(n,r)}function I(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function E(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function M(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function x(t,n,r=[],e){return await h(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const T=Object.keys;function B(t){if(t)return T(t)}const N=/\.|\[/,U=/]/g,P="";function k(t){return t.replace(U,P).split(N)}function $(t,n){if(!n)return!1;let r=n;return M(b(t)?t:k(t),(t=>(r=r[t],s(r)))),r}const D=Object.hasOwn;function L(t,...n){if(t)return M(n,(n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}}))}const _=t=>!!s(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function q(t,n){return t?.constructor===n||!1}function V(t){return n=>q(n,t)}function K(t){return t?.constructor?.name}function Z(t){return n=>K(n)===t||!1}function z(t){return function(n,...r){return r?t(n)&&M(r,t):t(n)}}const W=Z("Buffer"),G=z(W),J=(t,n)=>{if(t===n)return!0;if(G(t))return t.equals(n);if(t.toString()===n.toString())if(_(t)){const r=B(t);if(L(n,r))return M(r,(r=>J(t[r],n[r])))}else if(b(t)&&t.length===n.length)return M(t,((t,r)=>J(t,n[r])));return!1};const H=Math.max;function Q(t,n,r=[],e,o){return s(e)?f(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):f(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function X(t,n){const r=[];return await h(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function Y(t,n){return t-n}function tt(t,n){return n-t}const{floor:nt,random:rt}=Math;function et(t,n=0){return nt(rt()*(t-n))+n}const ot=Array.from;function it(t,n,r){if(s(t))return ot(t,n,r)}function ct(t,n=t.length){if(t.length<=1)return it(t);const r=it(t);let e,o,i=0;for(;ii?-1:0:1:-1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}function yt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function dt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function mt(t,n="id",r){return t.sort(((t,e)=>dt(t,e,n,r)))}const At=Z("Number"),bt=z(At);const wt=V(String);function vt(t,n){if(t)return wt(n)?t[n]:Q(n,(n=>t[n]))}function Ct(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function Ot(t){return n=>!!s(n)&&t.test(n)}const jt=Ot(/\.css$/),Ft=Ot(/\.html$/),It=Ot(/\.js$/),Et=Ot(/\.json$/);const Mt=Object.assign;function Rt(t,...n){if(s(t))return Mt(t,...n)}const St=async(t,n,r,e)=>{if(!t)return;const o=B(t);return s(r)?await h(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await h(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function xt(t,n,r,e){if(!t)return;const o=B(t);return s(r)?f(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):f(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const Tt=Z("Set"),Bt=z(Tt);function Nt(t,n){if(Bt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Ut=Z("GeneratorFunction"),Pt=z(Ut);async function kt(t,n,r){if(Bt(t)){for(const r of t)await n(r,t);return t}if(Pt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const $t=t=>!!s(t)&&t instanceof Function,Dt=Z("AsyncFunction"),Lt=z(Dt);function _t(t,n,r,e,o,i){return(c,u,a,f,l)=>{let h;const p=Lt(u);if(s(c)&&u)return h=b(c)?p?n:t:_(c)||$t(c)?p?e:r:o?p?i:o:Pt(c)?i:p?e:r,h(c,u,a,f,l)}}const qt=_t(f,h,xt,St,Nt,kt);class Vt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;qt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const Kt=!0,Zt=!1,zt=()=>{};function Wt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Kt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Jt=O(Gt);function Ht(t,n){return Jt.set(t,n)}const Qt=Reflect.apply;function Xt(t,n,r){if($t(t))return Qt(t,n,r)}async function Yt(t,n,r={}){if(t)return await St(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function tn(t,n,r={},e,o){if(t)return s(e)?xt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):xt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function nn(t){return t?.constructor}function rn(t,n=[]){const r=nn(t);return r===Function&&"function"===r.name?function(){}:O(r,n)}function en(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function on(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const cn=_t(Q,X,tn,Yt,en,on);async function un(t,n){if(!t)return;return R(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function sn(t,n){if(!t)return;return M(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function an(t,n=a){if(b(t)||Bt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function fn(t,n=a,r){if(Pt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(b(t)||Bt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const ln=_t(M,R,sn,un,an,fn);const hn=Function.prototype;function pn(t){return hn.call.bind(t)}const gn=Object.getOwnPropertyNames,yn=Object.getOwnPropertyDescriptor,dn=Object.defineProperty,mn=pn(Object.hasOwnProperty),An=Object.is;const{random:bn}=Math;const{sign:wn}=Math;const vn=Object.entries;async function Cn(t,n=a,r={}){return await St(t,(async(t,e,o,i,c)=>{const u=await n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function On(t,n=a,r={}){return xt(t,((t,e,o,i,c)=>{const u=n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function jn(t,n,r={}){return xt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Fn(t,n,r={}){return await St(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const In=Z("RegExp"),En=z(In),Mn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Rn(t){return t.replace(Mn,"\\$&")}function Sn(t,n){return n?Sn(Q(t,Rn)):RegExp(t.join("|"))}function xn(t){if(t)return B(t).length}const Tn=/[ _-]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Un=/[ _-]+/g,Pn=/[ ]+/g;const kn=/[ _-]+/g;const $n=/[ _-]+/g;function Dn(t,n=1){return t.substring(n)}const Ln=/%(?![\da-f]{2})/gi,_n=/&/g,qn=//g,Kn=/"/g;function Zn(t){return decodeURIComponent(t.replace(Ln,(()=>"%25")))}function zn(t){return t.replace(_n,"&").replace(qn,"<").replace(Vn,">").replace(Kn,""")}const Wn=/\S+/g,Gn=/\w+/g;const Jn=/\w+/g;function Hn(t){return t[0].toUpperCase()}function Qn(t){return Hn(t)+Dn(t)}function Xn(t){return Hn(t)+Dn(t).toLowerCase()}function Yn(t){return nn(t)?.name}function tr(t){return!s(t)}const nr=Z("Map"),rr=z(nr),er=/Array/,or="Array";function ir(t){if(t){const n=Yn(t);if(er.test(n)&&n!==or)return!0}return!1}const cr=Z("BigInt"),ur=z(cr),sr=Z("Boolean"),ar=z(sr),fr=Z("ArrayBuffer"),lr=z(fr);const hr=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const pr=Z("Date"),gr=z(pr);function yr(t){return!1===t}const dr=Z("Float32Array"),mr=z(dr),Ar=Z("Float64Array"),br=z(Ar),{isInteger:wr}=Number,vr=wr,Cr=Z("Int16Array"),Or=z(Cr),jr=Z("Int32Array"),Fr=z(jr),Ir=Z("Int8Array"),Er=z(Ir);function Mr(t){return!!t&&t instanceof Promise}function Rr(t){return!!t&&(Mr(t)||Lt(t)||Pt(t))}const{isSafeInteger:Sr}=Number,xr=Sr;const Tr=Z("Uint16Array"),Br=z(Tr),Nr=Z("Uint32Array"),Ur=z(Nr),Pr=Z("Uint8Array"),kr=z(Pr),$r=Z("Uint8ClampedArray"),Dr=z($r),Lr=Z("WeakMap"),_r=z(Lr),qr=void 0!==globalThis.Deno,Vr=void 0!==globalThis.process&&process.versions&&process.versions.node;function Kr(t,n=!0){return Boolean(t)&&n}function Zr(t,n){return yr(J(t,n))}const zr=JSON;const Wr=zr.stringify;function Gr(t,n,r){const e=globalThis.options||r;let o;return $t(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Wr(t)}\n\t\tExpected: ${Wr(n)}`,e)}async function Jr(t,n,r){const e=await t;return!($t(n)&&!1===await n(e,r))&&!Zr(e,n)||Gr(e,n,r)}const Hr=globalThis.structuredClone;async function Qr(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);s(e)&&r.push(e)}return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const i=await n(r,o,t);s(i)&&e(i)}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);s(c)&&(i?o.set(r,c):o[r]=c)}return o}function Xr(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const i=n(r,e,t);s(i)&&o(i)}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);s(c)&&(o?e.set(r,c):e[r]=c)}return e}const Yr=_t(l,p,On,Cn,Xr,Qr);function te(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=$t(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function ne(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=$t(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const re=_t(S,x,jn,Fn,te,ne);function ee(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const oe=ee(f),ie=ee(I);function ce(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const ue=ce(h),se=ce(E);const ae=Ot(/\./);class fe{list=O(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Kt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const le=O(fe);class he{static models={};constructor(t,n){s(n)?(Rt(this,n),this.modelName=t,he.models.set(t,n)):Rt(this,t)}}class pe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;xt(t,(n=>{t[n]=new pe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new pe(r),!0)})}}class ge{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return s(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ye=O(ge);class de{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Vt,t.Intervals=fe,t.Model=he,t.Store=pe,t.Timers=Gt,t.UniqID=ge,t.VirtualStorage=de,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Xt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const r={};return f(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Rr(t)||Rr(n)?Jr(t,n,r):!($t(n)&&!1===n(t,r))&&!Zr(t,n)||Gr(t,n,r)},t.assertAsync=Jr,t.assign=Rt,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=cn(t,(t=>$t(t)?t.bind(n):t));return r?Rt(r,e):e},t.cacheNativeMethod=pn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Tn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return O(Vt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(G(t))return lt(t);if(b(t))return o(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=o,t.clearBuffer=lt,t.clearIntervals=function(){Wt(setTimeout(zt,0),(t=>{le.remove(t)}))},t.clearTimers=function(){Wt(setTimeout(zt,0),(t=>{Jt.remove(t)}))},t.clone=function(t){return Hr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=rn,t.compact=function(t){if(_(t)){const n=B(t),r=n.length,e={};for(let o=0;oKr(t)))},t.compactKeys=function(t){const n=[];return xt(t,((t,r)=>{s(t)&&n.push(r)})),n},t.compactMap=Yr,t.compactMapArray=l,t.compactMapAsyncArray=p,t.compactMapAsyncObject=Cn,t.compactMapObject=On,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{const c=r.join(e,i);if((await n.stat(c)).isDirectory()){const u=r.join(o,i.replace(e,""));await n.mkdir(u,{recursive:!0}),await t(c,u)}else await async function(t,e,o){const i=r.join(t,o),c=r.join(e,o);await n.copyFile(i,c)}(e,o,i)})),!0},t.countBy=function(t,n){const r={};let e;return f(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return f(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return f(t,(t=>{t[n]||r++})),r},t.currentFile=function(t){return globalThis.__filename?__filename:e.fileURLToPath(t.url)},t.currentPath=function(t){return globalThis.__dirname?__dirname:r.dirname(e.fileURLToPath(t.url))},t.curry=function(t,n=t.length){const r=[],e=(...i)=>{if(r.push(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.curryRight=function(t,n=t.length){const r=[],e=(...i)=>{if(r.unshift(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.debounce=function(t,n){function r(...t){r.id!==Zt&&Jt.remove(r.id),r.id=Ht((()=>{r.callable(...t),r.id=Zt}),n)}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{r.id!==Zt&&(Jt.remove(r.id),r.id=Zt)},r},t.deduct=function(t){return t-1},t.defProp=dn,t.difference=j,t.divide=function(t,n){return t/n},t.drop=F,t.dropRight=(t,n=1,r=t.length)=>F(t,0,r-n),t.each=qt,t.eachArray=f,t.eachAsyncArray=h,t.eachAsyncObject=St,t.eachObject=xt,t.eachRight=I,t.eachRightAsync=E,t.ensureArray=w,t.ensureBuffer=function(t){return G(t)&&t||s(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Rn,t.escapeRegexRegex=Mn,t.every=ln,t.everyArg=function(...t){return Lt(t[0])?async function(...n){return ln(t,(async t=>ln(n,(async n=>t(n)))))}:function(...n){return ln(t,(t=>ln(n,(n=>t(n)))))}},t.everyArray=M,t.everyAsyncArray=R,t.everyAsyncObject=un,t.everyObject=sn,t.falsy=Zt,t.filter=re,t.filterArray=S,t.filterAsyncArray=x,t.filterAsyncObject=Fn,t.filterObject=jn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=ht,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(w(n))),[]);return r},t.flattenDeep=v,t.flow=oe,t.flowAsync=ue,t.flowAsyncRight=se,t.flowRight=ie,t.forEach=A,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else $t(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=Nt,t.forOfAsync=kt,t.forOfCompactMap=Xr,t.forOfCompactMapAsync=Qr,t.forOfEvery=an,t.forOfEveryAsync=fn,t.forOfFilter=te,t.forOfFilterAsync=ne,t.forOfMap=en,t.forOfMapAsync=on,t.generateLoop=_t,t.get=$,t.getEntries=function(t){if(s(t))return vn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return mt(t,n)[0]},t.getLowest=function(t,n){return gt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return M(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=yn,t.getPropNames=gn,t.getType=nn,t.getTypeName=Yn,t.groupBy=function(t,n){const r={};return f(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(tr(n)||tr(r))return!1;if(wt(n))return wt(r)?n.includes(r,e):En(r)?r.test(n):$t(r)?Boolean(r(n)):ln(r,(r=>Boolean(t(n,r))));if(b(n)){if(wt(r))return n.includes(r,e);if(En(r))return ln(n,(t=>t.test(r)));if(b(r))return ln(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}})))},t.hasDot=ae,t.hasKeys=L,t.hasLength=c,t.hasProp=mn,t.hasValue=s,t.htmlEntities=zn,t.ifInvoke=function(t,...n){if($t(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!s(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(s(t)){if($t(n))return r?Xt(n,r,e):n(...e);if(_(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eqt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return f(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return l(t,(t=>{if(M(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return le.set(t,n)},t.intervals=le,t.invert=function(t,n={}){if(t)return xt(t,((t,r)=>{n[t]=r})),n},t.invokeArray=function(t,n,r){if(!t)return;const e=t.length;if(s(r))for(let o=0;ot[n].call(e,r):(t,e)=>t[n](r))},t.invokeCollectionAsync=function(t,n,r,e){return X(t,e?t=>t[n].call(e,r):async t=>t[n](r))},t.isArguments=function(t){return!!s(t)&&"[object Arguments]"===t.toString()},t.isArray=b,t.isArrayBuffer=lr,t.isArrayBufferCall=fr,t.isArrayLike=function(t,n){if(tr(t)||$t(t))return!1;if(b(t)||ir(t))return!0;const r=t.length;if(!tr(r)||!bt(r)||r<0)return!1;if(n){const n=B(t);return!!n&&ln(n,((t,n)=>n>=0&&bt(n)))}return!0},t.isAsync=Lt,t.isAsyncCall=Dt,t.isBigInt=ur,t.isBigIntCall=cr,t.isBoolean=ar,t.isBooleanCall=sr,t.isBuffer=G,t.isBufferCall=W,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(s(t)){const n=t?.constructor?.name;return hr.test(n)}return!1},t.isConstructor=q,t.isConstructorFactory=V,t.isConstructorNameFactory=Z,t.isDate=gr,t.isDateCall=pr,t.isDeno=qr,t.isEmpty=function(t){return wt(t)||b(t)?!c(t):_(t)?!xn(t):!s(t)},t.isEqual=J,t.isF32=mr,t.isF32Call=dr,t.isF64=br,t.isF64Call=Ar,t.isFalse=yr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=jt,t.isFileHTML=Ft,t.isFileJS=It,t.isFileJSON=Et,t.isFloat=vr,t.isFunction=$t,t.isGenerator=Pt,t.isGeneratorCall=Ut,t.isI16=Or,t.isI16Call=Cr,t.isI32=Fr,t.isI32Call=jr,t.isI8=Er,t.isI8Call=Ir,t.isIterable=function(t){return s(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Rr,t.isMap=rr,t.isMapCall=nr,t.isMatchArray=function(t,n){return t.length===n.length&&M(t,((t,r)=>J(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=B(t),e=B(n);return r.length===e.length&&M(r,(r=>t[r]===n[r]))},t.isNegative=y,t.isNodejs=Vr,t.isNotArray=function(t){return!b(t)},t.isNotNumber=function(t){return!bt(t)},t.isNotString=function(t){return!wt(t)},t.isNull=u,t.isNumber=bt,t.isNumberCall=At,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=_,t.isPositive=function(t){return 1===wn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Mr,t.isRegex=En,t.isRegexCall=In,t.isRelated=function(t,n){return!tr(t)&&!tr(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xr,t.isSame=An,t.isSameType=function(t,n){const r=nn(t),e=nn(n);return r===e&&r.name===e.name},t.isSet=Bt,t.isSetCall=Tt,t.isString=wt,t.isTrue=function(t){return!0===t},t.isTruthy=Kr,t.isTypeFactory=z,t.isTypedArray=ir,t.isU16=Br,t.isU16Call=Tr,t.isU32=Ur,t.isU32Call=Nr,t.isU8=kr,t.isU8C=Dr,t.isU8CCall=$r,t.isU8Call=Pr,t.isUndefined=i,t.isWeakMap=_r,t.isWeakMapCall=Lr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return zr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Bn," ").trim().toLowerCase().replace(Nn,"-")},t.keys=B,t.largest=function(t){return H(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=cn,t.mapArray=Q,t.mapAsyncArray=X,t.mapAsyncObject=Yt,t.mapObject=tn,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{qt(r,((r,e)=>{if(n[e]&&(_(r)||b(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return s(n)?O(he,[t,n]):$(t,he.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=tr,t.noop=zt,t.notEqual=Zr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Mt,t.objectEntries=vn,t.objectSize=xn,t.omit=function(t,n){if(t){if(b(n)){const r=Sn(n);return jn(t,((t,n)=>!r.test(n)))}if(En(n))return jn(t,((t,r)=>!n.test(r)));if(wt(n))return jn(t,((t,r)=>r!==n));if(bt(n)){const r=n.toString();return jn(t,((t,n)=>n!==r))}return $t(n)?jn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(s(n)||(n=t(...r)),n)},t.onlyUnique=st,t.over=function(t){return(...n)=>cn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>ln(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[l(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return f(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return Q(t,(t=>vt(t,n)))},t.pluckObject=vt,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=B(t))=>M(r,(r=>J(t[r],n[r]))),t.randomFloat=function(t,n=0){return bn()*(t-n)+n},t.randomInt=et,t.range=function(t,n,r=1,e=[]){return y(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=Ot,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return ct(t);if(1===n)return[t[et(r-1,0)]];const e=[],o={};let i,c=0;for(;cyt(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>Ct(t,e,n,r)))},t.sortCollectionAscending=mt,t.sortCollectionAscendingFilter=dt,t.sortCollectionDescending=gt,t.sortCollectionDescendingFilter=pt,t.sortNumberAscending=function(t){return t.sort(Y)},t.sortNumberDescening=function(t){return t.sort(tt)},t.sortObjectsAlphabetically=yt,t.sortObjectsAlphabeticallyReverse=Ct,t.sortUnique=at,t.stringify=Wr,t.stubArray=()=>[],t.stubFalse=()=>Zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>Kt,t.subtract=Y,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=tt,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=Kt:(r.callable(...t),r.id=Ht((()=>{r.shouldThrottle&&r.callable(...t),r.id=Zt}),n))}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{Jt.remove(r.id),r.id=Zt},r},t.timer=Ht,t.timers=Jt,t.times=Wt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=Kt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return xt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ft(v(t))},t.uniqID=ye,t.unique=ft,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eQn(t)))},t.upperFirstLetter=Hn,t.upperFirstOnly=Xn,t.upperFirstOnlyAll=function(t){return t.replace(Jn,(t=>Xn(t)))},t.virtualStorage=function(t){return new de(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(Gn)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=O(Map),r=[];return 2===t.length?j(t[0],t[1]):(f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return f(t,((t,e)=>{r[t]=n[e]})),r}})); //# sourceMappingURL=index.js.map diff --git a/npm/module/basic.js b/npm/module/basic.js index f1407d70..917ac48a 100644 --- a/npm/module/basic.js +++ b/npm/module/basic.js @@ -1,2 +1,2 @@ -function n(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function t(n){return n.length=0,n}function r(n){return n.slice()}function e(n){return void 0===n}function o(n){return Boolean(n.length)}function u(n){return null===n}function c(n){return!e(n)&&!u(n)}function i(n){return n}function s(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const f=t.call(e,n,u,r,i,s,o);c(f)&&r.push(f)})):s(n,((n,u,i,s)=>{const f=t(n,u,r,i,s,e,o);c(f)&&r.push(f)})),r}async function a(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const u=await t(n,e,r,o);c(u)&&r.push(u)})),r}const{sign:h}=Math;function g(n){return-1===h(n)}function p(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function m(n,t,r=1,e=[]){return g(r)?e:n{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function O(n,t=1,r=n.length){return n.splice(t,r)}const $=(n,t=1,r=n.length)=>O(n,0,r-t);function j(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function B(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function C(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function F(n,t,r=[],e){return await a(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function R(n,t){return t?n.slice(0,t):n[0]}function T(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(v(t))),[]);return r}function P(n){return n.slice(0,n.length-1)}function U(n,...t){return f(n,(n=>{if(C(t,(t=>t.includes(n))))return n}))}const N=Object.keys;function L(n){if(n)return N(n)}const _=/\.|\[/,D=/]/g,Z="";function k(n){return n.replace(D,Z).split(_)}function q(n,t){if(!t)return!1;let r=t;return C(y(n)?n:k(n),(n=>(r=r[n],c(r)))),r}const V=Object.hasOwn;function G(n,...t){if(n)return C(t,(t=>{const r=k(t);if(1===r.length)return V(n,t);{const t=r.pop(),e=q(r,n);return!!e&&V(e,t)}}))}function J(n,...t){if(n)return Boolean(t.find((t=>{const r=k(t);if(1===r.length)return V(n,t);{const t=r.pop(),e=q(r,n);return!!e&&V(e,t)}})))}const W=n=>!!c(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function z(n,t){return n?.constructor===t||!1}function H(n){return t=>z(t,n)}function K(n){return n?.constructor?.name}function Q(n){return t=>K(t)===n||!1}function X(n){return function(t,...r){return r?n(t)&&C(r,n):n(t)}}const Y=Q("Buffer"),nn=X(Y),tn=(n,t)=>{if(n===t)return!0;if(nn(n))return n.equals(t);if(n.toString()===t.toString())if(W(n)){const r=L(n);if(G(t,r))return C(r,(r=>tn(n[r],t[r])))}else if(y(n)&&n.length===t.length)return C(n,((n,r)=>tn(n,t[r])));return!1};function rn(n,t){return n.length===t.length&&C(n,((n,r)=>tn(t[r],n)))}const en=Math.max;function on(n){return en(...n)}function un(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function cn(n,t,r=[],e,o){return c(e)?s(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):s(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function sn(n,t){const r=[];return await a(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function fn(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function an(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function pn(n,t){return t-n}function dn(n){return n.sort(pn)}function mn(n,t){let r=n.length;for(let e=0;er)return $n(n);if(1===t)return[n[En(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Mn(n,t=1){return n.slice(0,t)}function Fn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Rn(n,t,r){return r.indexOf(n)===t}function Tn(n,t,r){return n!==r[t-1]}function Pn(n,t){return t?n.filter(Tn):n.filter(Rn)}function Un(...n){return Pn(A(n))}function Nn(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function qn(...n){const t=I(Map),r=[];return 2===n.length?x(n[0],n[1]):(s(n,((n,r)=>{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Vn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Gn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Jn(n){return nn(n)&&n||c(n)&&Buffer.from(n)||Buffer.alloc(0)}function Wn(n){return n.fill(0),n}function zn(n,t){const r={};let e;return s(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function Hn(n,t){let r=0;return s(n,(n=>{n[t]&&r++})),r}function Kn(n,t){let r=0;return s(n,(n=>{n[t]||r++})),r}function Qn(n,t,r,e,o){if(n[o]===e)return!0}function Xn(n,t,r="id"){const e=n.findIndex(((n,e)=>Qn(n,0,0,t,r)));return-1!==e&&e}function Yn(n,t,r="id"){const e=n.find(((n,e)=>Qn(n,0,0,t,r)));return-1!==e&&e}function nt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function tt(n,t="id",r){return n.sort(((n,e)=>nt(n,e,t,r)))}function rt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function et(n,t="id",r){return n.sort(((n,e)=>rt(n,e,t,r)))}function ot(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function ut(n,t="id",r){return n.sort(((n,e)=>ot(n,e,t,r)))}function ct(n,t="id"){return ut(n,t)[0]}function it(n,t){return tt(n,t,!1)[0]}function st(n,t){const r={};return s(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function ft(n,t="id"){const r={};return s(n,(n=>{r[n[t]]=n})),r}function at(n,t,r){return cn(n,((n,e)=>n[t](r,e)))}function lt(n,t,r){return sn(n,(async(n,e)=>n[t](r,e)))}const ht=Q("Number"),gt=X(ht);function pt(n){return!gt(n)}const dt=H(String);function mt(n){return!dt(n)}function wt(n,t){if(n)return dt(t)?n[t]:cn(t,(t=>n[t]))}function yt(n,t){return cn(n,(n=>wt(n,t)))}function bt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function vt(n,t="id",r){return n.sort(((n,e)=>bt(n,e,t,r)))}function At(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function Et(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function It(n){return t=>!!c(t)&&n.test(t)}const xt=It(/\.css$/),Ot=It(/\.html$/),$t=It(/\.js$/),jt=It(/\.json$/);function Bt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function Ct(n,t){return(...r)=>n(...r.splice(0,t))}function St(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Mt=Object.assign;function Ft(n,...t){if(c(n))return Mt(n,...t)}const Rt=async(n,t,r,e)=>{if(!n)return;const o=L(n);return c(r)?await a(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await a(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Tt(n,t,r,e){if(!n)return;const o=L(n);return c(r)?s(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):s(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function Pt(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!c(n)&&n instanceof Function,qt=Q("AsyncFunction"),Vt=X(qt);function Gt(n,t,r,e,o,u){return(i,s,f,a,l)=>{let h;const g=Vt(s);if(c(i)&&s)return h=y(i)?g?t:n:W(i)||kt(i)?g?e:r:o?g?u:o:Dt(i)?u:g?e:r,h(i,s,f,a,l)}}const Jt=Gt(s,a,Tt,Rt,Lt,Zt);class Wt{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Jt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function zt(n){return I(Wt,[n])}function Ht(n,r=n.length){const e=[],o=(...u)=>{if(e.push(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}function Kt(n,r=n.length){const e=[],o=(...u)=>{if(e.unshift(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}const Qt=!0,Xt=()=>Qt,Yt=!1,nr=()=>Yt,tr=()=>{};function rr(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,Qt),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const ur=I(or);function cr(n,t){return ur.set(n,t)}function ir(){rr(setTimeout(tr,0),(n=>{ur.remove(n)}))}const sr=Reflect.apply;function fr(n,t,r){if(kt(n))return sr(n,t,r)}function ar(n,t){function r(...n){r.id!==Yt&&ur.remove(r.id),r.id=cr((()=>{r.callable(...n),r.id=Yt}),t)}return r.id=Yt,r.callable=n.bind(r),r.clear=()=>{r.id!==Yt&&(ur.remove(r.id),r.id=Yt)},r}function lr(n,...t){if(kt(n))return n(...t)}async function hr(n,t){const r=n.length;for(let e=0;eJt(n,(n=>{n(t)}));function pr(n){return(...t)=>!n(...t)}function dr(n=0){return(...t)=>t[n]}const mr=n=>{let t;return(...r)=>(c(t)||(t=n(...r)),t)};async function wr(n,t,r={}){if(n)return await Rt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function yr(n,t,r={},e,o){if(n)return c(e)?Tt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Tt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function br(n){return n?.constructor}function vr(n,t=[]){const r=br(n);return r===Function&&"function"===r.name?function(){}:I(r,t)}function Ar(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=kt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Er(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=kt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const Ir=Gt(cn,sn,yr,wr,Ar,Er);function xr(n){return(...t)=>Ir(n,(n=>n(...t)))}async function Or(n,t){if(!n)return;return S(L(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function $r(n,t){if(!n)return;return C(L(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function jr(n,t=i){if(y(n)||Nt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Br(n,t=i,r){if(Dt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(y(n)||Nt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Cr=Gt(C,S,$r,Or,jr,Br);function Sr(n){return t=>Cr(n,(n=>n(t)))}function Mr(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Fr(n,t){function r(...n){r.id?r.shouldThrottle=Qt:(r.callable(...n),r.id=cr((()=>{r.shouldThrottle&&r.callable(...n),r.id=Yt}),t))}return r.id=Yt,r.callable=n.bind(r),r.clear=()=>{ur.remove(r.id),r.id=Yt},r}function Rr(n,t){return(...r)=>t(n,...r)}const Tr=Function.prototype;function Pr(n){return Tr.call.bind(n)}const Ur=Object.getOwnPropertyNames,Nr=Object.getOwnPropertyDescriptor,Lr=Object.defineProperty,_r=Pr(Object.hasOwnProperty),Dr=Object.is;function Zr(n,t){return n+t}function kr(n){return n-1}function qr(n,t){return n/t}function Vr(n){return n+1}function Gr(n,t){return n*t}function Jr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:Wr}=Math;function zr(n,t=0){return Wr()*(n-t)+t}function Hr(n,t){return n%t}function Kr(n){return n.reduce(((n,t)=>n-t),0)}function Qr(n){return n.reduce(((n,t)=>n+t),0)}function Xr(n,t,r){return n>t&&nr}const{sign:ne}=Math;function te(n){return 1===ne(n)}function re(n){return 0===n}const ee=Object.entries;function oe(n){if(c(n))return ee(n)}function ue(n){const t=[];return Tt(n,((n,r)=>{c(n)&&t.push(r)})),t}async function ce(n,t=i,r={}){return await Rt(n,(async(n,e,o,u,i)=>{const s=await t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function ie(n,t=i,r={}){return Tt(n,((n,e,o,u,i)=>{const s=t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function se(n,t,r={}){return Tt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function fe(n,t,r={}){return await Rt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function ae(n,t={}){if(n)return Tt(n,((n,r)=>{t[n]=r})),t}const le=(n,t)=>{if(n===t)return!0;const r=L(n),e=L(t);return r.length===e.length&&C(r,(r=>n[r]===t[r]))},he=Q("RegExp"),ge=X(he),pe=/[()[\]{}*+?^$|#.,/\\\s-]/g;function de(n){return n.replace(pe,"\\$&")}function me(n,t){return t?me(cn(n,de)):RegExp(n.join("|"))}function we(n,t){if(n){if(y(t)){const r=me(t);return se(n,((n,t)=>!r.test(t)))}if(ge(t))return se(n,((n,r)=>!t.test(r)));if(dt(t))return se(n,((n,r)=>r!==t));if(gt(t)){const r=t.toString();return se(n,((n,t)=>t!==r))}return kt(t)?se(n,((n,r)=>!t(n,r))):void 0}}const ye=(n,t,r={})=>{if(n)return s(t,(t=>{r[t]=n[t]})),r};function be(n){if(n)return L(n).length}const ve=(n,t)=>{const r={};return s(n,((n,e)=>{r[n]=t[e]})),r},Ae=n=>{const t=[],r=[];return Tt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Ee=/[ _-]+/g;function Ie(n){let t="";return n.replace(Ee," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const xe=/[ _-]+/g,Oe=/[ ]+/g;function $e(n){return n.replace(/([A-Z]+)/g," $1").replace(xe," ").trim().toLowerCase().replace(Oe,"-")}const je=/[ _-]+/g,Be=/[ ]+/g;function Ce(n){return n.replace(/([A-Z]+)/g," $1").replace(je," ").trim().toLowerCase().replace(Be,"_")}const Se=/[ _-]+/g;function Me(n){return n.replace(/([A-Z]+)/g," $1").replace(Se," ").trim().toUpperCase()}const Fe=/[ _-]+/g;function Re(n){return n.replace(/([A-Z]+)/g," $1").replace(Fe," ").trim().toLowerCase()}function Te(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function Pe(n,t=1){return n[n.length-t]}function Ue(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function Ne(n,t=1){return n.slice(0,-1*t)}function Le(n,t=1){return n.substring(t)}function _e(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function De(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function Ze(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const ke=/%(?![\da-f]{2})/gi,qe=/&/g,Ve=//g,Je=/"/g;function We(n){return decodeURIComponent(n.replace(ke,(()=>"%25")))}function ze(n){return n.replace(qe,"&").replace(Ve,"<").replace(Ge,">").replace(Je,""")}function He(n){return ze(We(n))}const Ke=/\S+/g,Qe=/\w+/g;function Xe(n){return n.match(Ke)||[]}function Ye(n){return n.match(Qe)||[]}const no=/\w+/g;function to(n){return n[0].toUpperCase()}function ro(n){return to(n)+Le(n)}function eo(n){return to(n)+Le(n).toLowerCase()}function oo(n){return n.replace(no,(n=>ro(n)))}function uo(n){return n.replace(no,(n=>eo(n)))}function co(n){return br(n)?.name}function io(n){return!!c(n)&&"[object Arguments]"===n.toString()}function so(n){return!c(n)}const fo=Q("Map"),ao=X(fo),lo=/Array/,ho="Array";function go(n){if(n){const t=co(n);if(lo.test(t)&&t!==ho)return!0}return!1}function po(n,t){if(so(n)||kt(n))return!1;if(y(n)||go(n))return!0;const r=n.length;if(!so(r)||!gt(r)||r<0)return!1;if(t){const t=L(n);return!!t&&Cr(t,((n,t)=>t>=0&>(t)))}return!0}const mo=Q("BigInt"),wo=X(mo),yo=Q("Boolean"),bo=X(yo),vo=Q("ArrayBuffer"),Ao=X(vo);function Eo(n,t){return!(!n||!t)&&n instanceof t}const Io=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function xo(n){if(c(n)){const t=n?.constructor?.name;return Io.test(t)}return!1}const Oo=Q("Date"),$o=X(Oo);function jo(n){return dt(n)||y(n)?!o(n):W(n)?!be(n):!c(n)}function Bo(n){return!1===n}const Co=Q("Float32Array"),So=X(Co),Mo=Q("Float64Array"),Fo=X(Mo),{isInteger:Ro}=Number,To=Ro,Po=Q("Int16Array"),Uo=X(Po),No=Q("Int32Array"),Lo=X(No),_o=Q("Int8Array"),Do=X(_o);function Zo(n){return c(n)&&"function"==typeof n[Symbol.iterator]}function ko(n){return!!n&&n instanceof Promise}function qo(n){return!!n&&(ko(n)||Vt(n)||Dt(n))}function Vo(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Go(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Jo(n,t){return!so(n)&&!so(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:Wo}=Number,zo=Wo;function Ho(n,t){const r=br(n),e=br(t);return r===e&&r.name===e.name}function Ko(n){return!0===n}const Qo=Q("Uint16Array"),Xo=X(Qo),Yo=Q("Uint32Array"),nu=X(Yo),tu=Q("Uint8Array"),ru=X(tu),eu=Q("Uint8ClampedArray"),ou=X(eu),uu=Q("WeakMap"),cu=X(uu),iu=void 0!==globalThis.Deno,su=void 0!==globalThis.process&&process.versions&&process.versions.node;function fu(n,t=!0){return Boolean(n)&&t}function au(n,t=!0){return!1===Boolean(n)&&t}function lu(n,t,r,e){if(c(n)){if(kt(t))return r?fr(t,r,e):t(...e);if(W(t))return t[r]=n,t}}function hu(n,t){return Bo(tn(n,t))}const gu=JSON;function pu(n,t){if(n)return gu.parse(n,t)}const du=gu.stringify;function mu(n,t,r){const e=globalThis.options||r;let o;return kt(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${du(n)}\n\t\tExpected: ${du(t)}`,e)}async function wu(n,t,r){const e=await n;return!(kt(t)&&!1===await t(e,r))&&!hu(e,t)||mu(e,t,r)}function yu(n,t,r){if(qo(n)||qo(t))return wu(n,t,r);return!(kt(t)&&!1===t(n,r))&&!hu(n,t)||mu(n,t,r)}function bu(n,t,r){const e=Ir(n,(n=>kt(n)?n.bind(t):n));return r?Ft(r,e):e}function vu(n){if(n){if(nn(n))return Wn(n);if(y(n))return t(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const Au=globalThis.structuredClone;function Eu(n){return Au(n)}function Iu(n){if(W(n)){const t=L(n),r=t.length,e={};for(let o=0;ofu(n)))}async function xu(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);c(e)&&r.push(e)}return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);c(u)&&e(u)}return o}const u=kt(o.set);for await(const[r,e]of n){const i=await t(e,r,o,n);c(i)&&(u?o.set(r,i):o[r]=i)}return o}function Ou(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);c(u)&&o(u)}return e}const o=kt(e.set);for(const[r,u]of n){const i=t(u,r,e,n);c(i)&&(o?e.set(r,i):e[r]=i)}return e}const $u=Gt(f,l,ie,ce,Ou,xu);function ju(...n){return Vt(n[0])?async function(...t){return Cr(n,(async n=>Cr(t,(async t=>n(t)))))}:function(...t){return Cr(n,(n=>Cr(t,(t=>n(t)))))}}function Bu(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=kt(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Cu(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=kt(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Su=Gt(M,F,se,fe,Bu,Cu);function Mu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Fu=Mu(s),Ru=Mu(j);function Tu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const Pu=Tu(a),Uu=Tu(B);function Nu(n,t){const r=vr(n),e=r.push||r.add;if(e&&kt(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else kt(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function Lu(n,t){const r={};return s(n,((n,e)=>{r[t[e]]=n})),r}function _u(n,t,r){if(so(n)||so(t))return!1;if(dt(n))return dt(t)?n.includes(t,r):ge(t)?t.test(n):kt(t)?Boolean(t(n)):Cr(t,(t=>Boolean(_u(n,t))));if(y(n)){if(dt(t))return n.includes(t,r);if(ge(t))return Cr(n,(n=>n.test(t)));if(y(t))return Cr(t,(t=>Boolean(_u(n,t))))}return!1}const Du=It(/\./),Zu=(n,t,r)=>(t&&!c(n[t])&&(n[t]=r),n);class ku{list=I(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,Qt),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const qu=I(ku);function Vu(n,t){return qu.set(n,t)}function Gu(){rr(setTimeout(tr,0),(n=>{qu.remove(n)}))}function Ju(n,...t){return Jt(t,(t=>{Jt(t,((t,r)=>{if(n[r]&&(W(t)||y(t)||t.forEach))return Ju(n[r],t);n[r]=t}))})),n}class Wu{static models={};constructor(n,t){c(t)?(Ft(this,t),this.modelName=n,Wu.models.set(n,t)):Ft(this,n)}}function zu(n,t){return c(t)?I(Wu,[n,t]):q(n,Wu.models)}function Hu(n,t){return[n,t]}function Ku(n,t,r){const e=n.length,o=[];for(let u=0;uC(r,(r=>tn(n[r],t[r])));function nc(n,t,r){return t&&W(n)||gt(t)&&y(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function tc(n,t,r){return gt(r)&&y(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class rc{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Tt(n,(t=>{n[t]=new rc(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new rc(r),!0)})}}const ec=()=>[],oc=()=>({}),uc=()=>"";async function cc(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ac=I(fc);class lc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function hc(n){return new lc(n)}export{Wt as Chain,ku as Intervals,Wu as Model,rc as Store,or as Timers,fc as UniqID,lc as VirtualStorage,Zr as add,Bt as after,fr as apply,me as arrayToRegex,Lu as arraysToObject,Ct as ary,yu as assert,wu as assertAsync,Ft as assign,St as before,bu as bindAll,Pr as cacheNativeMethod,Jr as calcProgress,Ie as camelCase,zt as chain,n as chunk,Ue as chunkString,vu as clear,t as clearArray,Wn as clearBuffer,Gu as clearIntervals,ir as clearTimers,Eu as clone,r as cloneArray,vr as cloneType,Iu as compact,ue as compactKeys,$u as compactMap,f as compactMapArray,l as compactMapAsyncArray,ce as compactMapAsyncObject,ie as compactMapObject,Ku as concurrent,Qu as concurrentStatus,I as construct,K as constructorName,zn as countBy,Hn as countKey,Kn as countWithoutKey,Ht as curry,Kt as curryRight,ar as debounce,kr as deduct,Lr as defProp,x as difference,qr as divide,O as drop,$ as dropRight,Jt as each,s as eachArray,a as eachAsyncArray,Rt as eachAsyncObject,Tt as eachObject,j as eachRight,B as eachRightAsync,v as ensureArray,Jn as ensureBuffer,de as escapeRegex,pe as escapeRegexRegex,Cr as every,ju as everyArg,C as everyArray,S as everyAsyncArray,Or as everyAsyncObject,$r as everyObject,Yt as falsy,Su as filter,M as filterArray,F as filterAsyncArray,fe as filterAsyncObject,se as filterObject,Xn as findIndex,Qn as findIndexCache,Yn as findItem,R as first,T as flatten,A as flattenDeep,Fu as flow,Pu as flowAsync,Uu as flowAsyncRight,Ru as flowRight,w as forEach,Pt as forEachAsync,Nu as forMap,Lt as forOf,Zt as forOfAsync,Ou as forOfCompactMap,xu as forOfCompactMapAsync,jr as forOfEvery,Br as forOfEveryAsync,Bu as forOfFilter,Cu as forOfFilterAsync,Ar as forOfMap,Er as forOfMapAsync,Gt as generateLoop,q as get,oe as getEntries,At as getFileExtension,Et as getFilename,ct as getHighest,it as getLowest,Sn as getNumberInsertIndex,Nr as getPropDesc,Ur as getPropNames,br as getType,co as getTypeName,st as groupBy,_u as has,J as hasAnyKeys,Du as hasDot,G as hasKeys,o as hasLength,_r as hasProp,c as hasValue,ze as htmlEntities,lr as ifInvoke,Zu as ifNotAssign,lu as ifValue,hr as inAsync,gr as inSync,Vr as increment,ft as indexBy,P as initial,Ne as initialString,Te as insertInRange,U as intersection,Vu as interval,qu as intervals,ae as invert,at as invoke,lt as invokeAsync,io as isArguments,y as isArray,Ao as isArrayBuffer,vo as isArrayBufferCall,po as isArrayLike,Vt as isAsync,qt as isAsyncCall,wo as isBigInt,mo as isBigIntCall,bo as isBoolean,yo as isBooleanCall,nn as isBuffer,Y as isBufferCall,Eo as isChild,xo as isCloneable,z as isConstructor,H as isConstructorFactory,Q as isConstructorNameFactory,$o as isDate,Oo as isDateCall,iu as isDeno,jo as isEmpty,tn as isEqual,So as isF32,Co as isF32Call,Fo as isF64,Mo as isF64Call,Bo as isFalse,au as isFalsy,xt as isFileCSS,Ot as isFileHTML,$t as isFileJS,jt as isFileJSON,To as isFloat,kt as isFunction,Dt as isGenerator,_t as isGeneratorCall,Uo as isI16,Po as isI16Call,Lo as isI32,No as isI32Call,Do as isI8,_o as isI8Call,Zo as isIterable,qo as isKindAsync,ao as isMap,fo as isMapCall,rn as isMatchArray,le as isMatchObject,g as isNegative,su as isNodejs,b as isNotArray,pt as isNotNumber,mt as isNotString,u as isNull,gt as isNumber,ht as isNumberCall,On as isNumberEqual,Xr as isNumberInRange,Yr as isNumberNotInRange,Vo as isParent,W as isPlainObject,te as isPositive,Go as isPrimitive,ko as isPromise,ge as isRegex,he as isRegexCall,Jo as isRelated,zo as isSafeInt,Dr as isSame,Ho as isSameType,Nt as isSet,Ut as isSetCall,dt as isString,Ko as isTrue,fu as isTruthy,X as isTypeFactory,go as isTypedArray,Xo as isU16,Qo as isU16Call,nu as isU32,Yo as isU32Call,ru as isU8,ou as isU8C,eu as isU8CCall,tu as isU8Call,e as isUndefined,cu as isWeakMap,uu as isWeakMapCall,re as isZero,pu as jsonParse,$e as kebabCase,L as keys,on as largest,un as last,Re as lowerCase,Ir as map,cn as mapArray,sn as mapAsyncArray,wr as mapAsyncObject,yr as mapObject,fn as mapRightArray,an as mapWhile,Ju as merge,zu as model,Gr as multiply,pr as negate,so as noValue,tr as noop,hu as notEqual,dr as nthArg,Mt as objectAssign,ee as objectEntries,be as objectSize,we as omit,mr as once,Rn as onlyUnique,xr as over,Sr as overEvery,Hu as pair,gn as partition,ye as pick,yt as pluck,wt as pluckObject,Xu as promise,Yu as propertyMatch,zr as randomFloat,En as randomInt,m as range,d as rangeDown,p as rangeUp,We as rawURLDecode,Mr as reArg,It as regexTestFactory,Hr as remainder,mn as remove,wn as removeBy,_e as replaceList,yn as rest,Le as restString,i as returnValue,bn as right,Pe as rightString,jn as sample,He as sanitize,nc as setKey,tc as setValue,$n as shuffle,Cn as smallest,Ce as snakeCase,et as sortCollectionAlphabetically,vt as sortCollectionAlphabeticallyReverse,ut as sortCollectionAscending,ot as sortCollectionAscendingFilter,tt as sortCollectionDescending,nt as sortCollectionDescendingFilter,hn as sortNumberAscending,dn as sortNumberDescening,rt as sortObjectsAlphabetically,bt as sortObjectsAlphabeticallyReverse,Tn as sortUnique,du as stringify,ec as stubArray,nr as stubFalse,oc as stubObject,uc as stubString,Xt as stubTrue,ln as subtract,Kr as subtractAll,pn as subtractReverse,Qr as sumAll,Mn as take,Fn as takeRight,Fr as throttle,cr as timer,ur as timers,rr as times,cc as timesAsync,er as timesMap,ic as timesMapAsync,xn as toArray,k as toPath,sc as toggle,Xe as tokenize,De as truncate,Ze as truncateRight,Qt as truth,Gn as unZip,Ae as unZipObject,Un as union,ac as uniqID,Pn as unique,Nn as untilFalseArray,Ln as untilTrueArray,Me as upperCase,ro as upperFirst,oo as upperFirstAll,to as upperFirstLetter,eo as upperFirstOnly,uo as upperFirstOnlyAll,hc as virtualStorage,_n as whileCompactMap,Dn as whileEachArray,Zn as whileMapArray,kn as without,Ye as words,Rr as wrap,qn as xor,Vn as zip,ve as zipObject}; +function n(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function t(n){return n.length=0,n}function r(n){return n.slice()}function e(n){return void 0===n}function o(n){return Boolean(n.length)}function u(n){return null===n}function c(n){return!e(n)&&!u(n)}function i(n){return n}function s(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const f=t.call(e,n,u,r,i,s,o);c(f)&&r.push(f)})):s(n,((n,u,i,s)=>{const f=t(n,u,r,i,s,e,o);c(f)&&r.push(f)})),r}async function a(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const u=await t(n,e,r,o);c(u)&&r.push(u)})),r}const{sign:h}=Math;function g(n){return-1===h(n)}function p(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function m(n,t,r=1,e=[]){return g(r)?e:n{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function O(n,t=1,r=n.length){return n.splice(t,r)}const $=(n,t=1,r=n.length)=>O(n,0,r-t);function j(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function B(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function C(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function F(n,t,r=[],e){return await a(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function R(n,t){return t?n.slice(0,t):n[0]}function T(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(v(t))),[]);return r}function P(n){return n.slice(0,n.length-1)}function U(n,...t){return f(n,(n=>{if(C(t,(t=>t.includes(n))))return n}))}function N(n,t,r){if(!n)return;const e=n.length;if(c(r))for(let o=0;o(r=r[n],c(r)))),r}const G=Object.hasOwn;function J(n,...t){if(n)return C(t,(t=>{const r=q(t);if(1===r.length)return G(n,t);{const t=r.pop(),e=V(r,n);return!!e&&G(e,t)}}))}function W(n,...t){if(n)return Boolean(t.find((t=>{const r=q(t);if(1===r.length)return G(n,t);{const t=r.pop(),e=V(r,n);return!!e&&G(e,t)}})))}const z=n=>!!c(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function H(n,t){return n?.constructor===t||!1}function K(n){return t=>H(t,n)}function Q(n){return n?.constructor?.name}function X(n){return t=>Q(t)===n||!1}function Y(n){return function(t,...r){return r?n(t)&&C(r,n):n(t)}}const nn=X("Buffer"),tn=Y(nn),rn=(n,t)=>{if(n===t)return!0;if(tn(n))return n.equals(t);if(n.toString()===t.toString())if(z(n)){const r=_(n);if(J(t,r))return C(r,(r=>rn(n[r],t[r])))}else if(y(n)&&n.length===t.length)return C(n,((n,r)=>rn(n,t[r])));return!1};function en(n,t){return n.length===t.length&&C(n,((n,r)=>rn(t[r],n)))}const on=Math.max;function un(n){return on(...n)}function cn(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function sn(n,t,r=[],e,o){return c(e)?s(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):s(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function fn(n,t){const r=[];return await a(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function an(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function ln(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function dn(n,t){return t-n}function mn(n){return n.sort(dn)}function wn(n,t){let r=n.length;for(let e=0;er)return jn(n);if(1===t)return[n[In(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Fn(n,t=1){return n.slice(0,t)}function Rn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Tn(n,t,r){return r.indexOf(n)===t}function Pn(n,t,r){return n!==r[t-1]}function Un(n,t){return t?n.filter(Pn):n.filter(Tn)}function Nn(...n){return Un(A(n))}function Ln(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function Vn(...n){const t=I(Map),r=[];return 2===n.length?x(n[0],n[1]):(s(n,((n,r)=>{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Gn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Jn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Wn(n){return tn(n)&&n||c(n)&&Buffer.from(n)||Buffer.alloc(0)}function zn(n){return n.fill(0),n}function Hn(n,t){const r={};let e;return s(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function Kn(n,t){let r=0;return s(n,(n=>{n[t]&&r++})),r}function Qn(n,t){let r=0;return s(n,(n=>{n[t]||r++})),r}function Xn(n,t,r,e,o){if(n[o]===e)return!0}function Yn(n,t,r="id"){const e=n.findIndex(((n,e)=>Xn(n,0,0,t,r)));return-1!==e&&e}function nt(n,t,r="id"){const e=n.find(((n,e)=>Xn(n,0,0,t,r)));return-1!==e&&e}function tt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function rt(n,t="id",r){return n.sort(((n,e)=>tt(n,e,t,r)))}function et(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function ot(n,t="id",r){return n.sort(((n,e)=>et(n,e,t,r)))}function ut(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function ct(n,t="id",r){return n.sort(((n,e)=>ut(n,e,t,r)))}function it(n,t="id"){return ct(n,t)[0]}function st(n,t){return rt(n,t,!1)[0]}function ft(n,t){const r={};return s(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function at(n,t="id"){const r={};return s(n,(n=>{r[n[t]]=n})),r}function lt(n,t,r,e){return sn(n,e?(n,o)=>n[t].call(e,r):(n,e)=>n[t](r))}function ht(n,t,r,e){return fn(n,e?n=>n[t].call(e,r):async n=>n[t](r))}const gt=X("Number"),pt=Y(gt);function dt(n){return!pt(n)}const mt=K(String);function wt(n){return!mt(n)}function yt(n,t){if(n)return mt(t)?n[t]:sn(t,(t=>n[t]))}function bt(n,t){return sn(n,(n=>yt(n,t)))}function vt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function At(n,t="id",r){return n.sort(((n,e)=>vt(n,e,t,r)))}function Et(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function It(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function xt(n){return t=>!!c(t)&&n.test(t)}const Ot=xt(/\.css$/),$t=xt(/\.html$/),jt=xt(/\.js$/),Bt=xt(/\.json$/);function Ct(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function St(n,t){return(...r)=>n(...r.splice(0,t))}function Mt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Ft=Object.assign;function Rt(n,...t){if(c(n))return Ft(n,...t)}const Tt=async(n,t,r,e)=>{if(!n)return;const o=_(n);return c(r)?await a(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await a(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Pt(n,t,r,e){if(!n)return;const o=_(n);return c(r)?s(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):s(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function Ut(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!c(n)&&n instanceof Function,Vt=X("AsyncFunction"),Gt=Y(Vt);function Jt(n,t,r,e,o,u){return(i,s,f,a,l)=>{let h;const g=Gt(s);if(c(i)&&s)return h=y(i)?g?t:n:z(i)||qt(i)?g?e:r:o?g?u:o:Zt(i)?u:g?e:r,h(i,s,f,a,l)}}const Wt=Jt(s,a,Pt,Tt,_t,kt);class zt{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Wt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function Ht(n){return I(zt,[n])}function Kt(n,r=n.length){const e=[],o=(...u)=>{if(e.push(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}function Qt(n,r=n.length){const e=[],o=(...u)=>{if(e.unshift(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}const Xt=!0,Yt=()=>Xt,nr=!1,tr=()=>nr,rr=()=>{};function er(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,Xt),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const cr=I(ur);function ir(n,t){return cr.set(n,t)}function sr(){er(setTimeout(rr,0),(n=>{cr.remove(n)}))}const fr=Reflect.apply;function ar(n,t,r){if(qt(n))return fr(n,t,r)}function lr(n,t){function r(...n){r.id!==nr&&cr.remove(r.id),r.id=ir((()=>{r.callable(...n),r.id=nr}),t)}return r.id=nr,r.callable=n.bind(r),r.clear=()=>{r.id!==nr&&(cr.remove(r.id),r.id=nr)},r}function hr(n,...t){if(qt(n))return n(...t)}async function gr(n,t){const r=n.length;for(let e=0;eWt(n,(n=>{n(t)}));function dr(n){return(...t)=>!n(...t)}function mr(n=0){return(...t)=>t[n]}const wr=n=>{let t;return(...r)=>(c(t)||(t=n(...r)),t)};async function yr(n,t,r={}){if(n)return await Tt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function br(n,t,r={},e,o){if(n)return c(e)?Pt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Pt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function vr(n){return n?.constructor}function Ar(n,t=[]){const r=vr(n);return r===Function&&"function"===r.name?function(){}:I(r,t)}function Er(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=qt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Ir(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=qt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const xr=Jt(sn,fn,br,yr,Er,Ir);function Or(n){return(...t)=>xr(n,(n=>n(...t)))}async function $r(n,t){if(!n)return;return S(_(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function jr(n,t){if(!n)return;return C(_(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function Br(n,t=i){if(y(n)||Lt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Cr(n,t=i,r){if(Zt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(y(n)||Lt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Sr=Jt(C,S,jr,$r,Br,Cr);function Mr(n){return t=>Sr(n,(n=>n(t)))}function Fr(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Rr(n,t){function r(...n){r.id?r.shouldThrottle=Xt:(r.callable(...n),r.id=ir((()=>{r.shouldThrottle&&r.callable(...n),r.id=nr}),t))}return r.id=nr,r.callable=n.bind(r),r.clear=()=>{cr.remove(r.id),r.id=nr},r}function Tr(n,t){return(...r)=>t(n,...r)}const Pr=Function.prototype;function Ur(n){return Pr.call.bind(n)}const Nr=Object.getOwnPropertyNames,Lr=Object.getOwnPropertyDescriptor,_r=Object.defineProperty,Dr=Ur(Object.hasOwnProperty),Zr=Object.is;function kr(n,t){return n+t}function qr(n){return n-1}function Vr(n,t){return n/t}function Gr(n){return n+1}function Jr(n,t){return n*t}function Wr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:zr}=Math;function Hr(n,t=0){return zr()*(n-t)+t}function Kr(n,t){return n%t}function Qr(n){return n.reduce(((n,t)=>n-t),0)}function Xr(n){return n.reduce(((n,t)=>n+t),0)}function Yr(n,t,r){return n>t&&nr}const{sign:te}=Math;function re(n){return 1===te(n)}function ee(n){return 0===n}const oe=Object.entries;function ue(n){if(c(n))return oe(n)}function ce(n){const t=[];return Pt(n,((n,r)=>{c(n)&&t.push(r)})),t}async function ie(n,t=i,r={}){return await Tt(n,(async(n,e,o,u,i)=>{const s=await t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function se(n,t=i,r={}){return Pt(n,((n,e,o,u,i)=>{const s=t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function fe(n,t,r={}){return Pt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function ae(n,t,r={}){return await Tt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function le(n,t={}){if(n)return Pt(n,((n,r)=>{t[n]=r})),t}const he=(n,t)=>{if(n===t)return!0;const r=_(n),e=_(t);return r.length===e.length&&C(r,(r=>n[r]===t[r]))},ge=X("RegExp"),pe=Y(ge),de=/[()[\]{}*+?^$|#.,/\\\s-]/g;function me(n){return n.replace(de,"\\$&")}function we(n,t){return t?we(sn(n,me)):RegExp(n.join("|"))}function ye(n,t){if(n){if(y(t)){const r=we(t);return fe(n,((n,t)=>!r.test(t)))}if(pe(t))return fe(n,((n,r)=>!t.test(r)));if(mt(t))return fe(n,((n,r)=>r!==t));if(pt(t)){const r=t.toString();return fe(n,((n,t)=>t!==r))}return qt(t)?fe(n,((n,r)=>!t(n,r))):void 0}}const be=(n,t,r={})=>{if(n)return s(t,(t=>{r[t]=n[t]})),r};function ve(n){if(n)return _(n).length}const Ae=(n,t)=>{const r={};return s(n,((n,e)=>{r[n]=t[e]})),r},Ee=n=>{const t=[],r=[];return Pt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Ie=/[ _-]+/g;function xe(n){let t="";return n.replace(Ie," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const Oe=/[ _-]+/g,$e=/[ ]+/g;function je(n){return n.replace(/([A-Z]+)/g," $1").replace(Oe," ").trim().toLowerCase().replace($e,"-")}const Be=/[ _-]+/g,Ce=/[ ]+/g;function Se(n){return n.replace(/([A-Z]+)/g," $1").replace(Be," ").trim().toLowerCase().replace(Ce,"_")}const Me=/[ _-]+/g;function Fe(n){return n.replace(/([A-Z]+)/g," $1").replace(Me," ").trim().toUpperCase()}const Re=/[ _-]+/g;function Te(n){return n.replace(/([A-Z]+)/g," $1").replace(Re," ").trim().toLowerCase()}function Pe(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function Ue(n,t=1){return n[n.length-t]}function Ne(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function Le(n,t=1){return n.slice(0,-1*t)}function _e(n,t=1){return n.substring(t)}function De(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function Ze(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function ke(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const qe=/%(?![\da-f]{2})/gi,Ve=/&/g,Ge=//g,We=/"/g;function ze(n){return decodeURIComponent(n.replace(qe,(()=>"%25")))}function He(n){return n.replace(Ve,"&").replace(Ge,"<").replace(Je,">").replace(We,""")}function Ke(n){return He(ze(n))}const Qe=/\S+/g,Xe=/\w+/g;function Ye(n){return n.match(Qe)||[]}function no(n){return n.match(Xe)||[]}const to=/\w+/g;function ro(n){return n[0].toUpperCase()}function eo(n){return ro(n)+_e(n)}function oo(n){return ro(n)+_e(n).toLowerCase()}function uo(n){return n.replace(to,(n=>eo(n)))}function co(n){return n.replace(to,(n=>oo(n)))}function io(n){return vr(n)?.name}function so(n){return!!c(n)&&"[object Arguments]"===n.toString()}function fo(n){return!c(n)}const ao=X("Map"),lo=Y(ao),ho=/Array/,go="Array";function po(n){if(n){const t=io(n);if(ho.test(t)&&t!==go)return!0}return!1}function mo(n,t){if(fo(n)||qt(n))return!1;if(y(n)||po(n))return!0;const r=n.length;if(!fo(r)||!pt(r)||r<0)return!1;if(t){const t=_(n);return!!t&&Sr(t,((n,t)=>t>=0&&pt(t)))}return!0}const wo=X("BigInt"),yo=Y(wo),bo=X("Boolean"),vo=Y(bo),Ao=X("ArrayBuffer"),Eo=Y(Ao);function Io(n,t){return!(!n||!t)&&n instanceof t}const xo=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function Oo(n){if(c(n)){const t=n?.constructor?.name;return xo.test(t)}return!1}const $o=X("Date"),jo=Y($o);function Bo(n){return mt(n)||y(n)?!o(n):z(n)?!ve(n):!c(n)}function Co(n){return!1===n}const So=X("Float32Array"),Mo=Y(So),Fo=X("Float64Array"),Ro=Y(Fo),{isInteger:To}=Number,Po=To,Uo=X("Int16Array"),No=Y(Uo),Lo=X("Int32Array"),_o=Y(Lo),Do=X("Int8Array"),Zo=Y(Do);function ko(n){return c(n)&&"function"==typeof n[Symbol.iterator]}function qo(n){return!!n&&n instanceof Promise}function Vo(n){return!!n&&(qo(n)||Gt(n)||Zt(n))}function Go(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Jo(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Wo(n,t){return!fo(n)&&!fo(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:zo}=Number,Ho=zo;function Ko(n,t){const r=vr(n),e=vr(t);return r===e&&r.name===e.name}function Qo(n){return!0===n}const Xo=X("Uint16Array"),Yo=Y(Xo),nu=X("Uint32Array"),tu=Y(nu),ru=X("Uint8Array"),eu=Y(ru),ou=X("Uint8ClampedArray"),uu=Y(ou),cu=X("WeakMap"),iu=Y(cu),su=void 0!==globalThis.Deno,fu=void 0!==globalThis.process&&process.versions&&process.versions.node;function au(n,t=!0){return Boolean(n)&&t}function lu(n,t=!0){return!1===Boolean(n)&&t}function hu(n,t,r,e){if(c(n)){if(qt(t))return r?ar(t,r,e):t(...e);if(z(t))return t[r]=n,t}}function gu(n,t){return Co(rn(n,t))}const pu=JSON;function du(n,t){if(n)return pu.parse(n,t)}const mu=pu.stringify;function wu(n,t,r){const e=globalThis.options||r;let o;return qt(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${mu(n)}\n\t\tExpected: ${mu(t)}`,e)}async function yu(n,t,r){const e=await n;return!(qt(t)&&!1===await t(e,r))&&!gu(e,t)||wu(e,t,r)}function bu(n,t,r){if(Vo(n)||Vo(t))return yu(n,t,r);return!(qt(t)&&!1===t(n,r))&&!gu(n,t)||wu(n,t,r)}function vu(n,t,r){const e=xr(n,(n=>qt(n)?n.bind(t):n));return r?Rt(r,e):e}function Au(n){if(n){if(tn(n))return zn(n);if(y(n))return t(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const Eu=globalThis.structuredClone;function Iu(n){return Eu(n)}function xu(n){if(z(n)){const t=_(n),r=t.length,e={};for(let o=0;oau(n)))}async function Ou(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);c(e)&&r.push(e)}return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);c(u)&&e(u)}return o}const u=qt(o.set);for await(const[r,e]of n){const i=await t(e,r,o,n);c(i)&&(u?o.set(r,i):o[r]=i)}return o}function $u(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);c(u)&&o(u)}return e}const o=qt(e.set);for(const[r,u]of n){const i=t(u,r,e,n);c(i)&&(o?e.set(r,i):e[r]=i)}return e}const ju=Jt(f,l,se,ie,$u,Ou);function Bu(...n){return Gt(n[0])?async function(...t){return Sr(n,(async n=>Sr(t,(async t=>n(t)))))}:function(...t){return Sr(n,(n=>Sr(t,(t=>n(t)))))}}function Cu(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=qt(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Su(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=qt(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Mu=Jt(M,F,fe,ae,Cu,Su);function Fu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Ru=Fu(s),Tu=Fu(j);function Pu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const Uu=Pu(a),Nu=Pu(B);function Lu(n,t){const r=Ar(n),e=r.push||r.add;if(e&&qt(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else qt(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function _u(n,t){const r={};return s(n,((n,e)=>{r[t[e]]=n})),r}function Du(n,t,r){if(fo(n)||fo(t))return!1;if(mt(n))return mt(t)?n.includes(t,r):pe(t)?t.test(n):qt(t)?Boolean(t(n)):Sr(t,(t=>Boolean(Du(n,t))));if(y(n)){if(mt(t))return n.includes(t,r);if(pe(t))return Sr(n,(n=>n.test(t)));if(y(t))return Sr(t,(t=>Boolean(Du(n,t))))}return!1}const Zu=xt(/\./),ku=(n,t,r)=>(t&&!c(n[t])&&(n[t]=r),n);class qu{list=I(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,Xt),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const Vu=I(qu);function Gu(n,t){return Vu.set(n,t)}function Ju(){er(setTimeout(rr,0),(n=>{Vu.remove(n)}))}function Wu(n,...t){return Wt(t,(t=>{Wt(t,((t,r)=>{if(n[r]&&(z(t)||y(t)||t.forEach))return Wu(n[r],t);n[r]=t}))})),n}class zu{static models={};constructor(n,t){c(t)?(Rt(this,t),this.modelName=n,zu.models.set(n,t)):Rt(this,n)}}function Hu(n,t){return c(t)?I(zu,[n,t]):V(n,zu.models)}function Ku(n,t){return[n,t]}function Qu(n,t,r){const e=n.length,o=[];for(let u=0;uC(r,(r=>rn(n[r],t[r])));function tc(n,t,r){return t&&z(n)||pt(t)&&y(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function rc(n,t,r){return pt(r)&&y(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class ec{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Pt(n,(t=>{n[t]=new ec(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new ec(r),!0)})}}const oc=()=>[],uc=()=>({}),cc=()=>"";async function ic(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const lc=I(ac);class hc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function gc(n){return new hc(n)}export{zt as Chain,qu as Intervals,zu as Model,ec as Store,ur as Timers,ac as UniqID,hc as VirtualStorage,kr as add,Ct as after,ar as apply,we as arrayToRegex,_u as arraysToObject,St as ary,bu as assert,yu as assertAsync,Rt as assign,Mt as before,vu as bindAll,Ur as cacheNativeMethod,Wr as calcProgress,xe as camelCase,Ht as chain,n as chunk,Ne as chunkString,Au as clear,t as clearArray,zn as clearBuffer,Ju as clearIntervals,sr as clearTimers,Iu as clone,r as cloneArray,Ar as cloneType,xu as compact,ce as compactKeys,ju as compactMap,f as compactMapArray,l as compactMapAsyncArray,ie as compactMapAsyncObject,se as compactMapObject,Qu as concurrent,Xu as concurrentStatus,I as construct,Q as constructorName,Hn as countBy,Kn as countKey,Qn as countWithoutKey,Kt as curry,Qt as curryRight,lr as debounce,qr as deduct,_r as defProp,x as difference,Vr as divide,O as drop,$ as dropRight,Wt as each,s as eachArray,a as eachAsyncArray,Tt as eachAsyncObject,Pt as eachObject,j as eachRight,B as eachRightAsync,v as ensureArray,Wn as ensureBuffer,me as escapeRegex,de as escapeRegexRegex,Sr as every,Bu as everyArg,C as everyArray,S as everyAsyncArray,$r as everyAsyncObject,jr as everyObject,nr as falsy,Mu as filter,M as filterArray,F as filterAsyncArray,ae as filterAsyncObject,fe as filterObject,Yn as findIndex,Xn as findIndexCache,nt as findItem,R as first,T as flatten,A as flattenDeep,Ru as flow,Uu as flowAsync,Nu as flowAsyncRight,Tu as flowRight,w as forEach,Ut as forEachAsync,Lu as forMap,_t as forOf,kt as forOfAsync,$u as forOfCompactMap,Ou as forOfCompactMapAsync,Br as forOfEvery,Cr as forOfEveryAsync,Cu as forOfFilter,Su as forOfFilterAsync,Er as forOfMap,Ir as forOfMapAsync,Jt as generateLoop,V as get,ue as getEntries,Et as getFileExtension,It as getFilename,it as getHighest,st as getLowest,Mn as getNumberInsertIndex,Lr as getPropDesc,Nr as getPropNames,vr as getType,io as getTypeName,ft as groupBy,Du as has,W as hasAnyKeys,Zu as hasDot,J as hasKeys,o as hasLength,Dr as hasProp,c as hasValue,He as htmlEntities,hr as ifInvoke,ku as ifNotAssign,hu as ifValue,gr as inAsync,pr as inSync,Gr as increment,at as indexBy,P as initial,Le as initialString,Pe as insertInRange,U as intersection,Gu as interval,Vu as intervals,le as invert,N as invokeArray,lt as invokeCollection,ht as invokeCollectionAsync,so as isArguments,y as isArray,Eo as isArrayBuffer,Ao as isArrayBufferCall,mo as isArrayLike,Gt as isAsync,Vt as isAsyncCall,yo as isBigInt,wo as isBigIntCall,vo as isBoolean,bo as isBooleanCall,tn as isBuffer,nn as isBufferCall,Io as isChild,Oo as isCloneable,H as isConstructor,K as isConstructorFactory,X as isConstructorNameFactory,jo as isDate,$o as isDateCall,su as isDeno,Bo as isEmpty,rn as isEqual,Mo as isF32,So as isF32Call,Ro as isF64,Fo as isF64Call,Co as isFalse,lu as isFalsy,Ot as isFileCSS,$t as isFileHTML,jt as isFileJS,Bt as isFileJSON,Po as isFloat,qt as isFunction,Zt as isGenerator,Dt as isGeneratorCall,No as isI16,Uo as isI16Call,_o as isI32,Lo as isI32Call,Zo as isI8,Do as isI8Call,ko as isIterable,Vo as isKindAsync,lo as isMap,ao as isMapCall,en as isMatchArray,he as isMatchObject,g as isNegative,fu as isNodejs,b as isNotArray,dt as isNotNumber,wt as isNotString,u as isNull,pt as isNumber,gt as isNumberCall,$n as isNumberEqual,Yr as isNumberInRange,ne as isNumberNotInRange,Go as isParent,z as isPlainObject,re as isPositive,Jo as isPrimitive,qo as isPromise,pe as isRegex,ge as isRegexCall,Wo as isRelated,Ho as isSafeInt,Zr as isSame,Ko as isSameType,Lt as isSet,Nt as isSetCall,mt as isString,Qo as isTrue,au as isTruthy,Y as isTypeFactory,po as isTypedArray,Yo as isU16,Xo as isU16Call,tu as isU32,nu as isU32Call,eu as isU8,uu as isU8C,ou as isU8CCall,ru as isU8Call,e as isUndefined,iu as isWeakMap,cu as isWeakMapCall,ee as isZero,du as jsonParse,je as kebabCase,_ as keys,un as largest,cn as last,Te as lowerCase,xr as map,sn as mapArray,fn as mapAsyncArray,yr as mapAsyncObject,br as mapObject,an as mapRightArray,ln as mapWhile,Wu as merge,Hu as model,Jr as multiply,dr as negate,fo as noValue,rr as noop,gu as notEqual,mr as nthArg,Ft as objectAssign,oe as objectEntries,ve as objectSize,ye as omit,wr as once,Tn as onlyUnique,Or as over,Mr as overEvery,Ku as pair,pn as partition,be as pick,bt as pluck,yt as pluckObject,Yu as promise,nc as propertyMatch,Hr as randomFloat,In as randomInt,m as range,d as rangeDown,p as rangeUp,ze as rawURLDecode,Fr as reArg,xt as regexTestFactory,Kr as remainder,wn as remove,yn as removeBy,De as replaceList,bn as rest,_e as restString,i as returnValue,vn as right,Ue as rightString,Bn as sample,Ke as sanitize,tc as setKey,rc as setValue,jn as shuffle,Sn as smallest,Se as snakeCase,ot as sortCollectionAlphabetically,At as sortCollectionAlphabeticallyReverse,ct as sortCollectionAscending,ut as sortCollectionAscendingFilter,rt as sortCollectionDescending,tt as sortCollectionDescendingFilter,gn as sortNumberAscending,mn as sortNumberDescening,et as sortObjectsAlphabetically,vt as sortObjectsAlphabeticallyReverse,Pn as sortUnique,mu as stringify,oc as stubArray,tr as stubFalse,uc as stubObject,cc as stubString,Yt as stubTrue,hn as subtract,Qr as subtractAll,dn as subtractReverse,Xr as sumAll,Fn as take,Rn as takeRight,Rr as throttle,ir as timer,cr as timers,er as times,ic as timesAsync,or as timesMap,sc as timesMapAsync,On as toArray,q as toPath,fc as toggle,Ye as tokenize,Ze as truncate,ke as truncateRight,Xt as truth,Jn as unZip,Ee as unZipObject,Nn as union,lc as uniqID,Un as unique,Ln as untilFalseArray,_n as untilTrueArray,Fe as upperCase,eo as upperFirst,uo as upperFirstAll,ro as upperFirstLetter,oo as upperFirstOnly,co as upperFirstOnlyAll,gc as virtualStorage,Dn as whileCompactMap,Zn as whileEachArray,kn as whileMapArray,qn as without,no as words,Tr as wrap,Vn as xor,Gn as zip,Ae as zipObject}; //# sourceMappingURL=basic.js.map diff --git a/npm/module/browser/index.js b/npm/module/browser/index.js index eca9e620..f043b423 100644 --- a/npm/module/browser/index.js +++ b/npm/module/browser/index.js @@ -1,2 +1,2 @@ -function t(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r}function n(t){return t.length=0,t}function r(t){return t.slice()}function e(t){return void 0===t}function o(t){return Boolean(t.length)}function c(t){return null===t}function u(t){return!e(t)&&!c(t)}function i(t){return t}function s(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const f=n.call(e,t,c,r,i,s,o);u(f)&&r.push(f)})):s(t,((t,c,i,s)=>{const f=n(t,c,r,i,s,e,o);u(f)&&r.push(f)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const c=await n(t,e,r,o);u(c)&&r.push(c)})),r}const{sign:h}=Math;function d(t){return-1===h(t)}function g(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function m(t,n,r=1,e=[]){return d(r)?e:t{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function $(t,n=1,r=t.length){return t.splice(n,r)}const S=(t,n=1,r=t.length)=>$(t,0,r-n);function C(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function j(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function B(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,c,u,e)&&r.push(t)})),r}async function L(t,n,r=[],e){return await a(t,(async(t,o,c,u)=>{!0===await n(t,o,r,c,u,e)&&r.push(t)})),r}function T(t,n){return n?t.slice(0,n):t[0]}function M(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(v(n))),[]);return r}function R(t){return t.slice(0,t.length-1)}function N(t,...n){return f(t,(t=>{if(B(n,(n=>n.includes(t))))return t}))}const P=Object.keys;function U(t){if(t)return P(t)}const _=/\.|\[/,k=/]/g,D="";function H(t){return t.replace(k,D).split(_)}function W(t,n){if(!n)return!1;let r=n;return B(y(t)?t:H(t),(t=>(r=r[t],u(r)))),r}const Z=Object.hasOwn;function q(t,...n){if(t)return B(n,(n=>{const r=H(n);if(1===r.length)return Z(t,n);{const n=r.pop(),e=W(r,t);return!!e&&Z(e,n)}}))}function z(t,...n){if(t)return Boolean(n.find((n=>{const r=H(n);if(1===r.length)return Z(t,n);{const n=r.pop(),e=W(r,t);return!!e&&Z(e,n)}})))}const G=t=>!!u(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function V(t,n){return t?.constructor===n||!1}function J(t){return n=>V(n,t)}function K(t){return t?.constructor?.name}function Q(t){return n=>K(n)===t||!1}function X(t){return function(n,...r){return r?t(n)&&B(r,t):t(n)}}const Y=Q("Buffer"),tt=X(Y),nt=(t,n)=>{if(t===n)return!0;if(tt(t))return t.equals(n);if(t.toString()===n.toString())if(G(t)){const r=U(t);if(q(n,r))return B(r,(r=>nt(t[r],n[r])))}else if(y(t)&&t.length===n.length)return B(t,((t,r)=>nt(t,n[r])));return!1};function rt(t,n){return t.length===n.length&&B(t,((t,r)=>nt(n[r],t)))}const et=Math.max;function ot(t){return et(...t)}function ct(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]}function ut(t,n,r=[],e,o){return u(e)?s(t,((t,c,u,i)=>{r[c]=n.call(e,t,c,r,u,i,o)})):s(t,((t,e,c,u)=>{r[e]=n(t,e,r,c,u,o)})),r}async function it(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function st(t,n,r=[],e){let o=0;const c=t.length;for(let u=c-1;u>=0;u--)r[o]=n(t[u],u,t,c,e),o++;return r}function ft(t,n,r=[],e){const o=t.length;for(let c=0;c{if(n(t,e))return t;r.push(t)})),r]}function dt(t,n){return n-t}function gt(t){return t.sort(dt)}function pt(t,n){let r=t.length;for(let e=0;er)return $t(t);if(1===n)return[t[At(r-1,0)]];const e=[],o={};let c,u=0;for(;u(r=e,n>=t&&(r=e+1,!0)))),r}function Ot(t,n=1){return t.slice(0,n)}function Ft(t,n=1){const r=t.length;return t.slice(r-n,r)}function Lt(t,n,r){return r.indexOf(t)===n}function Tt(t,n,r){return t!==r[n-1]}function Mt(t,n){return n?t.filter(Tt):t.filter(Lt)}function Rt(...t){return Mt(A(t))}function Nt(t,n){const r=t.length;for(let e=0;e!r.has(t)))}function Ht(...t){const n=I(Map),r=[];return 2===t.length?x(t[0],t[1]):(s(t,((t,r)=>{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&r.push(t.child)})),r)}function Wt(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function Zt(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function qt(t){return tt(t)&&t||u(t)&&Buffer.from(t)||Buffer.alloc(0)}function zt(t){return t.fill(0),t}function Gt(t,n){const r={};let e;return s(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r}function Vt(t,n){let r=0;return s(t,(t=>{t[n]&&r++})),r}function Jt(t,n){let r=0;return s(t,(t=>{t[n]||r++})),r}function Kt(t,n,r,e,o){if(t[o]===e)return!0}function Qt(t,n,r="id"){const e=t.findIndex(((t,e)=>Kt(t,0,0,n,r)));return-1!==e&&e}function Xt(t,n,r="id"){const e=t.find(((t,e)=>Kt(t,0,0,n,r)));return-1!==e&&e}function Yt(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?-1:0:1:-1}function tn(t,n="id",r){return t.sort(((t,e)=>Yt(t,e,n,r)))}function nn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):o.localeCompare(c)}function rn(t,n="id",r){return t.sort(((t,e)=>nn(t,e,n,r)))}function en(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?1:0:-1:1}function on(t,n="id",r){return t.sort(((t,e)=>en(t,e,n,r)))}function cn(t,n="id"){return on(t,n)[0]}function un(t,n){return tn(t,n,!1)[0]}function sn(t,n){const r={};return s(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r}function fn(t,n="id"){const r={};return s(t,(t=>{r[t[n]]=t})),r}function an(t,n,r){return ut(t,((t,e)=>t[n](r,e)))}function ln(t,n,r){return it(t,(async(t,e)=>t[n](r,e)))}const hn=Q("Number"),dn=X(hn);function gn(t){return!dn(t)}const pn=J(String);function mn(t){return!pn(t)}function wn(t,n){if(t)return pn(n)?t[n]:ut(n,(n=>t[n]))}function yn(t,n){return ut(t,(t=>wn(t,n)))}function bn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c.localeCompare(o)}function vn(t,n="id",r){return t.sort(((t,e)=>bn(t,e,n,r)))}function An(t){if(t)return t.substring(t.lastIndexOf(".")+1)}function En(t){if(t)return t.substring(t.lastIndexOf("/")+1)}function In(t){return n=>!!u(n)&&t.test(n)}const xn=In(/\.css$/),$n=In(/\.html$/),Sn=In(/\.js$/),Cn=In(/\.json$/);function jn(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)}function Bn(t,n){return(...r)=>t(...r.splice(0,n))}function On(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)}const Fn=Object.assign;function Ln(t,...n){if(u(t))return Fn(t,...n)}const Tn=async(t,n,r,e)=>{if(!t)return;const o=U(t);return u(r)?await a(o,((c,u,i,s)=>n.call(r,t[c],c,t,s,o,e))):await a(o,((r,c,u,i)=>n(t[r],r,t,i,o,e))),t};function Mn(t,n,r,e){if(!t)return;const o=U(t);return u(r)?s(o,((o,c,u,i)=>{n.call(r,t[o],o,t,i,u,e)})):s(o,((r,o,c,u)=>{n(t[r],r,t,u,c,e)})),t}async function Rn(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t!!u(t)&&t instanceof Function,Wn=Q("AsyncFunction"),Zn=X(Wn);function qn(t,n,r,e,o,c){return(i,s,f,a,l)=>{let h;const d=Zn(s);if(u(i)&&s)return h=y(i)?d?n:t:G(i)||Hn(i)?d?e:r:o?d?c:o:kn(i)?c:d?e:r,h(i,s,f,a,l)}}const zn=qn(s,a,Mn,Tn,Un,Dn);class Gn{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;zn(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}function Vn(t){return I(Gn,[t])}function Jn(t,r=t.length){const e=[],o=(...c)=>{if(e.push(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}function Kn(t,r=t.length){const e=[],o=(...c)=>{if(e.unshift(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}const Qn=!0,Xn=()=>Qn,Yn=!1,tr=()=>Yn,nr=()=>{};function rr(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Qn),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const cr=I(or);function ur(t,n){return cr.set(t,n)}function ir(){rr(setTimeout(nr,0),(t=>{cr.remove(t)}))}const sr=Reflect.apply;function fr(t,n,r){if(Hn(t))return sr(t,n,r)}function ar(t,n){function r(...t){r.id!==Yn&&cr.remove(r.id),r.id=ur((()=>{r.callable(...t),r.id=Yn}),n)}return r.id=Yn,r.callable=t.bind(r),r.clear=()=>{r.id!==Yn&&(cr.remove(r.id),r.id=Yn)},r}function lr(t,...n){if(Hn(t))return t(...n)}async function hr(t,n){const r=t.length;for(let e=0;ezn(t,(t=>{t(n)}));function gr(t){return(...n)=>!t(...n)}function pr(t=0){return(...n)=>n[t]}const mr=t=>{let n;return(...r)=>(u(n)||(n=t(...r)),n)};async function wr(t,n,r={}){if(t)return await Tn(t,(async(t,e,o,c,u)=>{r[e]=await n(t,e,r,o,c,u)})),r}function yr(t,n,r={},e,o){if(t)return u(e)?Mn(t,((t,c,u,i,s)=>{r[c]=n.call(e,t,c,r,u,i,s,o)})):Mn(t,((t,e,c,u,i)=>{r[e]=n(t,e,r,c,u,i,o)})),r}function br(t){return t?.constructor}function vr(t,n=[]){const r=br(t);return r===Function&&"function"===r.name?function(){}:I(r,n)}function Ar(t,n=i,r){const e=r||vr(t);if(y(t)||Pn(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Hn(e.set);for(const[r,c]of t){const u=n(c,r,e,t);o?e.set(r,u):e[r]=u}return e}async function Er(t,n=i,r,e){if(kn(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||vr(t);if(y(t)||Pn(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const c=Hn(o.set);for await(const[r,e]of t){const u=await n(e,r,o,t);c?o.set(r,u):o[r]=u}return o}const Ir=qn(ut,it,yr,wr,Ar,Er);function xr(t){return(...n)=>Ir(t,(t=>t(...n)))}async function $r(t,n){if(!t)return;return O(U(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function Sr(t,n){if(!t)return;return B(U(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function Cr(t,n=i){if(y(t)||Pn(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function jr(t,n=i,r){if(kn(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(y(t)||Pn(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const Br=qn(B,O,Sr,$r,Cr,jr);function Or(t){return n=>Br(t,(t=>t(n)))}function Fr(t,n){return(...r)=>t(...n.map((t=>r[t])))}function Lr(t,n){function r(...t){r.id?r.shouldThrottle=Qn:(r.callable(...t),r.id=ur((()=>{r.shouldThrottle&&r.callable(...t),r.id=Yn}),n))}return r.id=Yn,r.callable=t.bind(r),r.clear=()=>{cr.remove(r.id),r.id=Yn},r}function Tr(t,n){return(...r)=>n(t,...r)}const Mr=Function.prototype;function Rr(t){return Mr.call.bind(t)}const Nr=Object.getOwnPropertyNames,Pr=Object.getOwnPropertyDescriptor,Ur=Object.defineProperty,_r=Rr(Object.hasOwnProperty),kr=Object.is;function Dr(t,n){return t+n}function Hr(t){return t-1}function Wr(t,n){return t/n}function Zr(t){return t+1}function qr(t,n){return t*n}function zr(t,n){return 0!==t&&(0===n?0:n/t*100)}const{random:Gr}=Math;function Vr(t,n=0){return Gr()*(t-n)+n}function Jr(t,n){return t%n}function Kr(t){return t.reduce(((t,n)=>t-n),0)}function Qr(t){return t.reduce(((t,n)=>t+n),0)}function Xr(t,n,r){return t>n&&tr}const{sign:te}=Math;function ne(t){return 1===te(t)}function re(t){return 0===t}const ee=Object.entries;function oe(t){if(u(t))return ee(t)}function ce(t){const n=[];return Mn(t,((t,r)=>{u(t)&&n.push(r)})),n}async function ue(t,n=i,r={}){return await Tn(t,(async(t,e,o,c,i)=>{const s=await n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function ie(t,n=i,r={}){return Mn(t,((t,e,o,c,i)=>{const s=n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function se(t,n,r={}){return Mn(t,((t,e,o,c,u)=>{!0===n(t,e,r,o,c,u)&&(r[e]=t)})),r}async function fe(t,n,r={}){return await Tn(t,(async(t,e,o,c,u)=>{!0===await n(t,e,r,o,c,u)&&(r[e]=t)})),r}function ae(t,n={}){if(t)return Mn(t,((t,r)=>{n[t]=r})),n}const le=(t,n)=>{if(t===n)return!0;const r=U(t),e=U(n);return r.length===e.length&&B(r,(r=>t[r]===n[r]))},he=Q("RegExp"),de=X(he),ge=/[()[\]{}*+?^$|#.,/\\\s-]/g;function pe(t){return t.replace(ge,"\\$&")}function me(t,n){return n?me(ut(t,pe)):RegExp(t.join("|"))}function we(t,n){if(t){if(y(n)){const r=me(n);return se(t,((t,n)=>!r.test(n)))}if(de(n))return se(t,((t,r)=>!n.test(r)));if(pn(n))return se(t,((t,r)=>r!==n));if(dn(n)){const r=n.toString();return se(t,((t,n)=>n!==r))}return Hn(n)?se(t,((t,r)=>!n(t,r))):void 0}}const ye=(t,n,r={})=>{if(t)return s(n,(n=>{r[n]=t[n]})),r};function be(t){if(t)return U(t).length}const ve=(t,n)=>{const r={};return s(t,((t,e)=>{r[t]=n[e]})),r},Ae=t=>{const n=[],r=[];return Mn(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},Ee=/[ _-]+/g;function Ie(t){let n="";return t.replace(Ee," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n}const xe=/[ _-]+/g,$e=/[ ]+/g;function Se(t){return t.replace(/([A-Z]+)/g," $1").replace(xe," ").trim().toLowerCase().replace($e,"-")}const Ce=/[ _-]+/g,je=/[ ]+/g;function Be(t){return t.replace(/([A-Z]+)/g," $1").replace(Ce," ").trim().toLowerCase().replace(je,"_")}const Oe=/[ _-]+/g;function Fe(t){return t.replace(/([A-Z]+)/g," $1").replace(Oe," ").trim().toUpperCase()}const Le=/[ _-]+/g;function Te(t){return t.replace(/([A-Z]+)/g," $1").replace(Le," ").trim().toLowerCase()}function Me(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)}function Re(t,n=1){return t[t.length-n]}function Ne(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))}function Pe(t,n=1){return t.slice(0,-1*n)}function Ue(t,n=1){return t.substring(n)}function _e(t,n,r){return t.replace(new RegExp(`\\b${n.join("|")}\\b`,"gi"),r)}function ke(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=r-n;for(;u=0&&(c=e[u]," "!==c);u--);return t.slice(0,u).trim()})(t,n,r):t}function De(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=n;for(;u0&&(c=e[u]," "!==c);u++);return t.substring(u,r).trim()})(t,n,r):t}const He=/%(?![\da-f]{2})/gi,We=/&/g,Ze=//g,ze=/"/g;function Ge(t){return decodeURIComponent(t.replace(He,(()=>"%25")))}function Ve(t){return t.replace(We,"&").replace(Ze,"<").replace(qe,">").replace(ze,""")}function Je(t){return Ve(Ge(t))}const Ke=/\S+/g,Qe=/\w+/g;function Xe(t){return t.match(Ke)||[]}function Ye(t){return t.match(Qe)||[]}const to=/\w+/g;function no(t){return t[0].toUpperCase()}function ro(t){return no(t)+Ue(t)}function eo(t){return no(t)+Ue(t).toLowerCase()}function oo(t){return t.replace(to,(t=>ro(t)))}function co(t){return t.replace(to,(t=>eo(t)))}function uo(t){return br(t)?.name}function io(t){return!!u(t)&&"[object Arguments]"===t.toString()}function so(t){return!u(t)}const fo=Q("Map"),ao=X(fo),lo=/Array/,ho="Array";function go(t){if(t){const n=uo(t);if(lo.test(n)&&n!==ho)return!0}return!1}function po(t,n){if(so(t)||Hn(t))return!1;if(y(t)||go(t))return!0;const r=t.length;if(!so(r)||!dn(r)||r<0)return!1;if(n){const n=U(t);return!!n&&Br(n,((t,n)=>n>=0&&dn(n)))}return!0}const mo=Q("BigInt"),wo=X(mo),yo=Q("Boolean"),bo=X(yo),vo=Q("ArrayBuffer"),Ao=X(vo);function Eo(t,n){return!(!t||!n)&&t instanceof n}const Io=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function xo(t){if(u(t)){const n=t?.constructor?.name;return Io.test(n)}return!1}const $o=Q("Date"),So=X($o);function Co(t){return pn(t)||y(t)?!o(t):G(t)?!be(t):!u(t)}function jo(t){return!1===t}const Bo=Q("Float32Array"),Oo=X(Bo),Fo=Q("Float64Array"),Lo=X(Fo),{isInteger:To}=Number,Mo=To,Ro=Q("Int16Array"),No=X(Ro),Po=Q("Int32Array"),Uo=X(Po),_o=Q("Int8Array"),ko=X(_o);function Do(t){return u(t)&&"function"==typeof t[Symbol.iterator]}function Ho(t){return!!t&&t instanceof Promise}function Wo(t){return!!t&&(Ho(t)||Zn(t)||kn(t))}function Zo(t,n){return!!(t&&n&&n.call)&&t instanceof n}function qo(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n}function zo(t,n){return!so(t)&&!so(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)}const{isSafeInteger:Go}=Number,Vo=Go;function Jo(t,n){const r=br(t),e=br(n);return r===e&&r.name===e.name}function Ko(t){return!0===t}const Qo=Q("Uint16Array"),Xo=X(Qo),Yo=Q("Uint32Array"),tc=X(Yo),nc=Q("Uint8Array"),rc=X(nc),ec=Q("Uint8ClampedArray"),oc=X(ec),cc=Q("WeakMap"),uc=X(cc),ic=void 0!==globalThis.Deno,sc=void 0!==globalThis.process&&process.versions&&process.versions.node;function fc(t,n=!0){return Boolean(t)&&n}function ac(t,n=!0){return!1===Boolean(t)&&n}function lc(t,n,r,e){if(u(t)){if(Hn(n))return r?fr(n,r,e):n(...e);if(G(n))return n[r]=t,n}}function hc(t,n){return jo(nt(t,n))}const dc=JSON;function gc(t,n){if(t)return dc.parse(t,n)}const pc=dc.stringify;function mc(t,n,r){const e=globalThis.options||r;let o;return Hn(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${pc(t)}\n\t\tExpected: ${pc(n)}`,e)}async function wc(t,n,r){const e=await t;return!(Hn(n)&&!1===await n(e,r))&&!hc(e,n)||mc(e,n,r)}function yc(t,n,r){if(Wo(t)||Wo(n))return wc(t,n,r);return!(Hn(n)&&!1===n(t,r))&&!hc(t,n)||mc(t,n,r)}function bc(t,n,r){const e=Ir(t,(t=>Hn(t)?t.bind(n):t));return r?Ln(r,e):e}function vc(t){if(t){if(tt(t))return zt(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t}const Ac=globalThis.structuredClone;function Ec(t){return Ac(t)}function Ic(t){if(G(t)){const n=U(t),r=n.length,e={};for(let o=0;ofc(t)))}async function xc(t,n=i,r,e){if(kn(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);u(e)&&r.push(e)}return r}const o=r||vr(t);if(y(t)||Pn(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);u(c)&&e(c)}return o}const c=Hn(o.set);for await(const[r,e]of t){const i=await n(e,r,o,t);u(i)&&(c?o.set(r,i):o[r]=i)}return o}function $c(t,n=i,r){const e=r||vr(t);if(y(t)||Pn(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);u(c)&&o(c)}return e}const o=Hn(e.set);for(const[r,c]of t){const i=n(c,r,e,t);u(i)&&(o?e.set(r,i):e[r]=i)}return e}const Sc=qn(f,l,ie,ue,$c,xc);function Cc(...t){return Zn(t[0])?async function(...n){return Br(t,(async t=>Br(n,(async n=>t(n)))))}:function(...n){return Br(t,(t=>Br(n,(n=>t(n)))))}}function jc(t,n=i,r){const e=r||vr(t);if(y(t)||Pn(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Hn(e.set);for(const[o,c]of t){!0===n(c,o,e,t)&&(r?e.set(o,c):e[o]=c)}}return e}async function Bc(t,n=i,r,e){if(kn(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||vr(t);if(y(t)||Pn(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Hn(o.set);for await(const[e,c]of t){!0===await n(c,e,o,t)&&(r?o.set(e,c):o[e]=c)}}return o}const Oc=qn(F,L,se,fe,jc,Bc);function Fc(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const Lc=Fc(s),Tc=Fc(C);function Mc(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const Rc=Mc(a),Nc=Mc(j);function Pc(t,n){const r=vr(t),e=r.push||r.add;if(e&&Hn(e)){const o=e.bind(r);t.forEach((t=>{const e=n(t,r);o(e)}))}else Hn(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r}function Uc(t,n){const r={};return s(t,((t,e)=>{r[n[e]]=t})),r}function _c(t,n,r){if(so(t)||so(n))return!1;if(pn(t))return pn(n)?t.includes(n,r):de(n)?n.test(t):Hn(n)?Boolean(n(t)):Br(n,(n=>Boolean(_c(t,n))));if(y(t)){if(pn(n))return t.includes(n,r);if(de(n))return Br(t,(t=>t.test(n)));if(y(n))return Br(n,(n=>Boolean(_c(t,n))))}return!1}const kc=In(/\./),Dc=(t,n,r)=>(n&&!u(t[n])&&(t[n]=r),t);class Hc{list=I(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Qn),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Wc=I(Hc);function Zc(t,n){return Wc.set(t,n)}function qc(){rr(setTimeout(nr,0),(t=>{Wc.remove(t)}))}function zc(t,...n){return zn(n,(n=>{zn(n,((n,r)=>{if(t[r]&&(G(n)||y(n)||n.forEach))return zc(t[r],n);t[r]=n}))})),t}class Gc{static models={};constructor(t,n){u(n)?(Ln(this,n),this.modelName=t,Gc.models.set(t,n)):Ln(this,t)}}function Vc(t,n){return u(n)?I(Gc,[t,n]):W(t,Gc.models)}function Jc(t,n){return[t,n]}function Kc(t,n,r){const e=t.length,o=[];for(let c=0;cB(r,(r=>nt(t[r],n[r])));function tu(t,n,r){return n&&G(t)||dn(n)&&y(t)?t[n]=r:t.set?t.set(n,r):t.push?t.push(r):t.add?t.add(r):t[n]=r,t}function nu(t,n,r){return dn(r)&&y(t)?t[r]=n:t.push?t.push(n):t.add?t.add(n):t[r]=n,t}class ru{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Mn(t,(n=>{t[n]=new ru(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new ru(r),!0)})}}const eu=()=>[],ou=()=>({}),cu=()=>"";async function uu(t,n){for(let r=0;r0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const au=I(fu);class lu{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function hu(t){return new lu(t)}function du(t){return t?du[t]:U(du)}const gu=globalThis.navigator?.userAgentData;if(gu)Mn(gu,((t,n)=>{bo(t)&&t&&(du[n]=t)})),s(gu.brands,(t=>{du[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{du[t]=!0}))}function pu(t,n,r,e){return t.addEventListener(n,r,e),t}function mu(t,n,r,e){return t.removeEventListener(n,r,e),t}function wu(t){return 13===t.keyCode}const yu=document.createDocumentFragment.bind(document);function bu(t,n){return t.appendChild(n),n}function vu(t,n){return y(n)?ve(n,ut(n,(n=>t.getAttribute(n)))):(Mn(n,((n,r)=>{t.setAttribute(r,n)})),t)}const Au=/^.[\w_-]+$/,Eu=/^[A-Za-z]+$/,Iu=/\s/,xu=document.getElementsByClassName.bind(document),$u=document.getElementsByTagName.bind(document),Su=document.getElementById.bind(document),Cu=document.querySelector.bind(document),ju=document.querySelectorAll.bind(document);function Bu(t){switch(t[0]){case"#":if(!Iu.test(t))return Su(Ue(t));break;case".":if(Au.test(t))return xu(Ue(t));break;default:if(Eu.test(t))return $u(t)}return ju(t)}const Ou=document.createElement.bind(document);function Fu(t){const n=kc(t)&&t||`${t}.js`;return(t=>Xc((n=>{pu(t,"load",n,!0),pu(t,"error",n,!0),bu(Cu("head"),t)})))(vu(Ou("script"),{async:"",src:n}))}function Lu(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&pu(document,"DOMContentLoaded",t),!1)}Lu((()=>{const t=Su("AcidLib");Fu(t&&t.getAttribute("data-index")||"/index")}));const Tu=location.protocol,Mu="http:"===Tu?"ws":"wss",Ru=location.hostname,Nu={hardware:{cores:navigator.hardwareConcurrency},host:{name:Ru,protocol:Tu,protocolSocket:Mu}};function Pu(){Ln(Nu,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function Uu(){Pu()}let _u;Lu(Uu),pu(window,"load",Uu,!0),pu(window,"resize",Uu,!0),function(t){try{t().removeItem("TESTING"),_u=!0}catch(t){_u=!1}}((()=>localStorage));class ku{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=hu(t)}hasLocal=_u;setItem(t,n){return this.hasLocal&&this.local.setItem(t,pn(n)?n:pc(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return u(n)?n:!u(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}function Du(t){return new ku(t)}const Hu=(t,n)=>`color:${t};background:${n};`,Wu={alert:Hu("#fff","#f44336"),important:Hu("#fff","#E91E63"),notify:Hu("#fff","#651FFF"),warning:Hu("#000","#FFEA00")},Zu=(t,n)=>{const r=pn(t)?t:pc(t);if("alert"===n||"warning"===n)return console.trace(`%c${r}`,`${Wu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${r}`,`${Wu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},qu=(t,n,r)=>{Wu[t]=Hu(n,r)};function zu(t){return t&&9!==t.nodeType}function Gu(t){return!!u(t)&&"[object HTMLCollection]"===t.toString()}function Vu(t){return!!u(t)&&"[object NodeList]"===t.toString()}export{Gn as Chain,ku as Crate,Hc as Intervals,Gc as Model,ru as Store,or as Timers,fu as UniqID,lu as VirtualStorage,Dr as add,jn as after,bu as append,fr as apply,me as arrayToRegex,Uc as arraysToObject,Bn as ary,yc as assert,wc as assertAsync,Ln as assign,On as before,bc as bindAll,Rr as cacheNativeMethod,zr as calcProgress,Ie as camelCase,Vn as chain,t as chunk,Ne as chunkString,vc as clear,n as clearArray,zt as clearBuffer,qc as clearIntervals,ir as clearTimers,Ec as clone,r as cloneArray,vr as cloneType,Zu as cnsl,qu as cnslTheme,Ic as compact,ce as compactKeys,Sc as compactMap,f as compactMapArray,l as compactMapAsyncArray,ue as compactMapAsyncObject,ie as compactMapObject,Kc as concurrent,Qc as concurrentStatus,I as construct,K as constructorName,Gt as countBy,Vt as countKey,Jt as countWithoutKey,Du as crate,yu as createFragment,Jn as curry,Kn as curryRight,ar as debounce,Hr as deduct,Ur as defProp,x as difference,Wr as divide,$ as drop,S as dropRight,zn as each,s as eachArray,a as eachAsyncArray,Tn as eachAsyncObject,Mn as eachObject,C as eachRight,j as eachRightAsync,v as ensureArray,qt as ensureBuffer,pe as escapeRegex,ge as escapeRegexRegex,pu as eventAdd,mu as eventRemove,Br as every,Cc as everyArg,B as everyArray,O as everyAsyncArray,$r as everyAsyncObject,Sr as everyObject,Yn as falsy,Oc as filter,F as filterArray,L as filterAsyncArray,fe as filterAsyncObject,se as filterObject,Qt as findIndex,Kt as findIndexCache,Xt as findItem,T as first,M as flatten,A as flattenDeep,Lc as flow,Rc as flowAsync,Nc as flowAsyncRight,Tc as flowRight,w as forEach,Rn as forEachAsync,Pc as forMap,Un as forOf,Dn as forOfAsync,$c as forOfCompactMap,xc as forOfCompactMapAsync,Cr as forOfEvery,jr as forOfEveryAsync,jc as forOfFilter,Bc as forOfFilterAsync,Ar as forOfMap,Er as forOfMapAsync,qn as generateLoop,W as get,xu as getByClass,Su as getById,$u as getByTag,oe as getEntries,An as getFileExtension,En as getFilename,cn as getHighest,un as getLowest,Bt as getNumberInsertIndex,Pr as getPropDesc,Nr as getPropNames,br as getType,uo as getTypeName,sn as groupBy,_c as has,z as hasAnyKeys,kc as hasDot,q as hasKeys,o as hasLength,_u as hasLocal,_r as hasProp,u as hasValue,Ve as htmlEntities,lr as ifInvoke,Dc as ifNotAssign,lc as ifValue,Fu as importjs,hr as inAsync,dr as inSync,Zr as increment,fn as indexBy,Nu as info,R as initial,Pe as initialString,Me as insertInRange,N as intersection,Zc as interval,Wc as intervals,ae as invert,an as invoke,ln as invokeAsync,du as isAgent,io as isArguments,y as isArray,Ao as isArrayBuffer,vo as isArrayBufferCall,po as isArrayLike,Zn as isAsync,Wn as isAsyncCall,wo as isBigInt,mo as isBigIntCall,bo as isBoolean,yo as isBooleanCall,tt as isBuffer,Y as isBufferCall,Eo as isChild,xo as isCloneable,V as isConstructor,J as isConstructorFactory,Q as isConstructorNameFactory,So as isDate,$o as isDateCall,ic as isDeno,Lu as isDocumentReady,zu as isDom,Co as isEmpty,wu as isEnter,nt as isEqual,Oo as isF32,Bo as isF32Call,Lo as isF64,Fo as isF64Call,jo as isFalse,ac as isFalsy,xn as isFileCSS,$n as isFileHTML,Sn as isFileJS,Cn as isFileJSON,Mo as isFloat,Hn as isFunction,kn as isGenerator,_n as isGeneratorCall,Gu as isHTMLCollection,No as isI16,Ro as isI16Call,Uo as isI32,Po as isI32Call,ko as isI8,_o as isI8Call,Do as isIterable,Wo as isKindAsync,ao as isMap,fo as isMapCall,rt as isMatchArray,le as isMatchObject,d as isNegative,Vu as isNodeList,sc as isNodejs,b as isNotArray,gn as isNotNumber,mn as isNotString,c as isNull,dn as isNumber,hn as isNumberCall,xt as isNumberEqual,Xr as isNumberInRange,Yr as isNumberNotInRange,Zo as isParent,G as isPlainObject,ne as isPositive,qo as isPrimitive,Ho as isPromise,de as isRegex,he as isRegexCall,zo as isRelated,Vo as isSafeInt,kr as isSame,Jo as isSameType,Pn as isSet,Nn as isSetCall,pn as isString,Ko as isTrue,fc as isTruthy,X as isTypeFactory,go as isTypedArray,Xo as isU16,Qo as isU16Call,tc as isU32,Yo as isU32Call,rc as isU8,oc as isU8C,ec as isU8CCall,nc as isU8Call,e as isUndefined,uc as isWeakMap,cc as isWeakMapCall,re as isZero,gc as jsonParse,Se as kebabCase,U as keys,ot as largest,ct as last,Te as lowerCase,Ir as map,ut as mapArray,it as mapAsyncArray,wr as mapAsyncObject,yr as mapObject,st as mapRightArray,ft as mapWhile,zc as merge,Vc as model,qr as multiply,gr as negate,so as noValue,vu as nodeAttribute,nr as noop,hc as notEqual,pr as nthArg,Fn as objectAssign,ee as objectEntries,be as objectSize,we as omit,mr as once,Lt as onlyUnique,xr as over,Or as overEvery,Jc as pair,ht as partition,ye as pick,yn as pluck,wn as pluckObject,Xc as promise,Yc as propertyMatch,Cu as querySelector,ju as querySelectorAll,Vr as randomFloat,At as randomInt,m as range,p as rangeDown,g as rangeUp,Ge as rawURLDecode,Fr as reArg,In as regexTestFactory,Jr as remainder,pt as remove,mt as removeBy,_e as replaceList,wt as rest,Ue as restString,i as returnValue,yt as right,Re as rightString,St as sample,Je as sanitize,Pu as saveDimensions,Bu as selector,tu as setKey,nu as setValue,$t as shuffle,jt as smallest,Be as snakeCase,rn as sortCollectionAlphabetically,vn as sortCollectionAlphabeticallyReverse,on as sortCollectionAscending,en as sortCollectionAscendingFilter,tn as sortCollectionDescending,Yt as sortCollectionDescendingFilter,lt as sortNumberAscending,gt as sortNumberDescening,nn as sortObjectsAlphabetically,bn as sortObjectsAlphabeticallyReverse,Tt as sortUnique,pc as stringify,eu as stubArray,tr as stubFalse,ou as stubObject,cu as stubString,Xn as stubTrue,at as subtract,Kr as subtractAll,dt as subtractReverse,Qr as sumAll,Ot as take,Ft as takeRight,Wu as themes,Lr as throttle,ur as timer,cr as timers,rr as times,uu as timesAsync,er as timesMap,iu as timesMapAsync,It as toArray,H as toPath,su as toggle,Xe as tokenize,ke as truncate,De as truncateRight,Qn as truth,Zt as unZip,Ae as unZipObject,Rt as union,au as uniqID,Mt as unique,Nt as untilFalseArray,Pt as untilTrueArray,Uu as updateDimensions,Fe as upperCase,ro as upperFirst,oo as upperFirstAll,no as upperFirstLetter,eo as upperFirstOnly,co as upperFirstOnlyAll,hu as virtualStorage,Ut as whileCompactMap,_t as whileEachArray,kt as whileMapArray,Dt as without,Ye as words,Tr as wrap,Ht as xor,Wt as zip,ve as zipObject}; +function t(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r}function n(t){return t.length=0,t}function r(t){return t.slice()}function e(t){return void 0===t}function o(t){return Boolean(t.length)}function c(t){return null===t}function u(t){return!e(t)&&!c(t)}function i(t){return t}function s(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const f=n.call(e,t,c,r,i,s,o);u(f)&&r.push(f)})):s(t,((t,c,i,s)=>{const f=n(t,c,r,i,s,e,o);u(f)&&r.push(f)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const c=await n(t,e,r,o);u(c)&&r.push(c)})),r}const{sign:h}=Math;function d(t){return-1===h(t)}function g(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function m(t,n,r=1,e=[]){return d(r)?e:t{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function $(t,n=1,r=t.length){return t.splice(n,r)}const S=(t,n=1,r=t.length)=>$(t,0,r-n);function C(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function j(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function B(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,c,u,e)&&r.push(t)})),r}async function L(t,n,r=[],e){return await a(t,(async(t,o,c,u)=>{!0===await n(t,o,r,c,u,e)&&r.push(t)})),r}function T(t,n){return n?t.slice(0,n):t[0]}function M(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(v(n))),[]);return r}function R(t){return t.slice(0,t.length-1)}function N(t,...n){return f(t,(t=>{if(B(n,(n=>n.includes(t))))return t}))}function P(t,n,r){if(!t)return;const e=t.length;if(u(r))for(let o=0;o(r=r[t],u(r)))),r}const q=Object.hasOwn;function z(t,...n){if(t)return B(n,(n=>{const r=W(n);if(1===r.length)return q(t,n);{const n=r.pop(),e=Z(r,t);return!!e&&q(e,n)}}))}function G(t,...n){if(t)return Boolean(n.find((n=>{const r=W(n);if(1===r.length)return q(t,n);{const n=r.pop(),e=Z(r,t);return!!e&&q(e,n)}})))}const V=t=>!!u(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function J(t,n){return t?.constructor===n||!1}function K(t){return n=>J(n,t)}function Q(t){return t?.constructor?.name}function X(t){return n=>Q(n)===t||!1}function Y(t){return function(n,...r){return r?t(n)&&B(r,t):t(n)}}const tt=X("Buffer"),nt=Y(tt),rt=(t,n)=>{if(t===n)return!0;if(nt(t))return t.equals(n);if(t.toString()===n.toString())if(V(t)){const r=_(t);if(z(n,r))return B(r,(r=>rt(t[r],n[r])))}else if(y(t)&&t.length===n.length)return B(t,((t,r)=>rt(t,n[r])));return!1};function et(t,n){return t.length===n.length&&B(t,((t,r)=>rt(n[r],t)))}const ot=Math.max;function ct(t){return ot(...t)}function ut(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]}function it(t,n,r=[],e,o){return u(e)?s(t,((t,c,u,i)=>{r[c]=n.call(e,t,c,r,u,i,o)})):s(t,((t,e,c,u)=>{r[e]=n(t,e,r,c,u,o)})),r}async function st(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function ft(t,n,r=[],e){let o=0;const c=t.length;for(let u=c-1;u>=0;u--)r[o]=n(t[u],u,t,c,e),o++;return r}function at(t,n,r=[],e){const o=t.length;for(let c=0;c{if(n(t,e))return t;r.push(t)})),r]}function gt(t,n){return n-t}function pt(t){return t.sort(gt)}function mt(t,n){let r=t.length;for(let e=0;er)return St(t);if(1===n)return[t[Et(r-1,0)]];const e=[],o={};let c,u=0;for(;u(r=e,n>=t&&(r=e+1,!0)))),r}function Ft(t,n=1){return t.slice(0,n)}function Lt(t,n=1){const r=t.length;return t.slice(r-n,r)}function Tt(t,n,r){return r.indexOf(t)===n}function Mt(t,n,r){return t!==r[n-1]}function Rt(t,n){return n?t.filter(Mt):t.filter(Tt)}function Nt(...t){return Rt(A(t))}function Pt(t,n){const r=t.length;for(let e=0;e!r.has(t)))}function Wt(...t){const n=I(Map),r=[];return 2===t.length?x(t[0],t[1]):(s(t,((t,r)=>{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&r.push(t.child)})),r)}function Zt(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function qt(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function zt(t){return nt(t)&&t||u(t)&&Buffer.from(t)||Buffer.alloc(0)}function Gt(t){return t.fill(0),t}function Vt(t,n){const r={};let e;return s(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r}function Jt(t,n){let r=0;return s(t,(t=>{t[n]&&r++})),r}function Kt(t,n){let r=0;return s(t,(t=>{t[n]||r++})),r}function Qt(t,n,r,e,o){if(t[o]===e)return!0}function Xt(t,n,r="id"){const e=t.findIndex(((t,e)=>Qt(t,0,0,n,r)));return-1!==e&&e}function Yt(t,n,r="id"){const e=t.find(((t,e)=>Qt(t,0,0,n,r)));return-1!==e&&e}function tn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?-1:0:1:-1}function nn(t,n="id",r){return t.sort(((t,e)=>tn(t,e,n,r)))}function rn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):o.localeCompare(c)}function en(t,n="id",r){return t.sort(((t,e)=>rn(t,e,n,r)))}function on(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?1:0:-1:1}function cn(t,n="id",r){return t.sort(((t,e)=>on(t,e,n,r)))}function un(t,n="id"){return cn(t,n)[0]}function sn(t,n){return nn(t,n,!1)[0]}function fn(t,n){const r={};return s(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r}function an(t,n="id"){const r={};return s(t,(t=>{r[t[n]]=t})),r}function ln(t,n,r,e){return it(t,e?(t,o)=>t[n].call(e,r):(t,e)=>t[n](r))}function hn(t,n,r,e){return st(t,e?t=>t[n].call(e,r):async t=>t[n](r))}const dn=X("Number"),gn=Y(dn);function pn(t){return!gn(t)}const mn=K(String);function wn(t){return!mn(t)}function yn(t,n){if(t)return mn(n)?t[n]:it(n,(n=>t[n]))}function bn(t,n){return it(t,(t=>yn(t,n)))}function vn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c.localeCompare(o)}function An(t,n="id",r){return t.sort(((t,e)=>vn(t,e,n,r)))}function En(t){if(t)return t.substring(t.lastIndexOf(".")+1)}function In(t){if(t)return t.substring(t.lastIndexOf("/")+1)}function xn(t){return n=>!!u(n)&&t.test(n)}const $n=xn(/\.css$/),Sn=xn(/\.html$/),Cn=xn(/\.js$/),jn=xn(/\.json$/);function Bn(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)}function On(t,n){return(...r)=>t(...r.splice(0,n))}function Fn(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)}const Ln=Object.assign;function Tn(t,...n){if(u(t))return Ln(t,...n)}const Mn=async(t,n,r,e)=>{if(!t)return;const o=_(t);return u(r)?await a(o,((c,u,i,s)=>n.call(r,t[c],c,t,s,o,e))):await a(o,((r,c,u,i)=>n(t[r],r,t,i,o,e))),t};function Rn(t,n,r,e){if(!t)return;const o=_(t);return u(r)?s(o,((o,c,u,i)=>{n.call(r,t[o],o,t,i,u,e)})):s(o,((r,o,c,u)=>{n(t[r],r,t,u,c,e)})),t}async function Nn(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t!!u(t)&&t instanceof Function,Zn=X("AsyncFunction"),qn=Y(Zn);function zn(t,n,r,e,o,c){return(i,s,f,a,l)=>{let h;const d=qn(s);if(u(i)&&s)return h=y(i)?d?n:t:V(i)||Wn(i)?d?e:r:o?d?c:o:Dn(i)?c:d?e:r,h(i,s,f,a,l)}}const Gn=zn(s,a,Rn,Mn,_n,Hn);class Vn{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Gn(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}function Jn(t){return I(Vn,[t])}function Kn(t,r=t.length){const e=[],o=(...c)=>{if(e.push(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}function Qn(t,r=t.length){const e=[],o=(...c)=>{if(e.unshift(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}const Xn=!0,Yn=()=>Xn,tr=!1,nr=()=>tr,rr=()=>{};function er(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Xn),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const ur=I(cr);function ir(t,n){return ur.set(t,n)}function sr(){er(setTimeout(rr,0),(t=>{ur.remove(t)}))}const fr=Reflect.apply;function ar(t,n,r){if(Wn(t))return fr(t,n,r)}function lr(t,n){function r(...t){r.id!==tr&&ur.remove(r.id),r.id=ir((()=>{r.callable(...t),r.id=tr}),n)}return r.id=tr,r.callable=t.bind(r),r.clear=()=>{r.id!==tr&&(ur.remove(r.id),r.id=tr)},r}function hr(t,...n){if(Wn(t))return t(...n)}async function dr(t,n){const r=t.length;for(let e=0;eGn(t,(t=>{t(n)}));function pr(t){return(...n)=>!t(...n)}function mr(t=0){return(...n)=>n[t]}const wr=t=>{let n;return(...r)=>(u(n)||(n=t(...r)),n)};async function yr(t,n,r={}){if(t)return await Mn(t,(async(t,e,o,c,u)=>{r[e]=await n(t,e,r,o,c,u)})),r}function br(t,n,r={},e,o){if(t)return u(e)?Rn(t,((t,c,u,i,s)=>{r[c]=n.call(e,t,c,r,u,i,s,o)})):Rn(t,((t,e,c,u,i)=>{r[e]=n(t,e,r,c,u,i,o)})),r}function vr(t){return t?.constructor}function Ar(t,n=[]){const r=vr(t);return r===Function&&"function"===r.name?function(){}:I(r,n)}function Er(t,n=i,r){const e=r||Ar(t);if(y(t)||Un(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Wn(e.set);for(const[r,c]of t){const u=n(c,r,e,t);o?e.set(r,u):e[r]=u}return e}async function Ir(t,n=i,r,e){if(Dn(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||Ar(t);if(y(t)||Un(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const c=Wn(o.set);for await(const[r,e]of t){const u=await n(e,r,o,t);c?o.set(r,u):o[r]=u}return o}const xr=zn(it,st,br,yr,Er,Ir);function $r(t){return(...n)=>xr(t,(t=>t(...n)))}async function Sr(t,n){if(!t)return;return O(_(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function Cr(t,n){if(!t)return;return B(_(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function jr(t,n=i){if(y(t)||Un(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function Br(t,n=i,r){if(Dn(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(y(t)||Un(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const Or=zn(B,O,Cr,Sr,jr,Br);function Fr(t){return n=>Or(t,(t=>t(n)))}function Lr(t,n){return(...r)=>t(...n.map((t=>r[t])))}function Tr(t,n){function r(...t){r.id?r.shouldThrottle=Xn:(r.callable(...t),r.id=ir((()=>{r.shouldThrottle&&r.callable(...t),r.id=tr}),n))}return r.id=tr,r.callable=t.bind(r),r.clear=()=>{ur.remove(r.id),r.id=tr},r}function Mr(t,n){return(...r)=>n(t,...r)}const Rr=Function.prototype;function Nr(t){return Rr.call.bind(t)}const Pr=Object.getOwnPropertyNames,Ur=Object.getOwnPropertyDescriptor,_r=Object.defineProperty,kr=Nr(Object.hasOwnProperty),Dr=Object.is;function Hr(t,n){return t+n}function Wr(t){return t-1}function Zr(t,n){return t/n}function qr(t){return t+1}function zr(t,n){return t*n}function Gr(t,n){return 0!==t&&(0===n?0:n/t*100)}const{random:Vr}=Math;function Jr(t,n=0){return Vr()*(t-n)+n}function Kr(t,n){return t%n}function Qr(t){return t.reduce(((t,n)=>t-n),0)}function Xr(t){return t.reduce(((t,n)=>t+n),0)}function Yr(t,n,r){return t>n&&tr}const{sign:ne}=Math;function re(t){return 1===ne(t)}function ee(t){return 0===t}const oe=Object.entries;function ce(t){if(u(t))return oe(t)}function ue(t){const n=[];return Rn(t,((t,r)=>{u(t)&&n.push(r)})),n}async function ie(t,n=i,r={}){return await Mn(t,(async(t,e,o,c,i)=>{const s=await n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function se(t,n=i,r={}){return Rn(t,((t,e,o,c,i)=>{const s=n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function fe(t,n,r={}){return Rn(t,((t,e,o,c,u)=>{!0===n(t,e,r,o,c,u)&&(r[e]=t)})),r}async function ae(t,n,r={}){return await Mn(t,(async(t,e,o,c,u)=>{!0===await n(t,e,r,o,c,u)&&(r[e]=t)})),r}function le(t,n={}){if(t)return Rn(t,((t,r)=>{n[t]=r})),n}const he=(t,n)=>{if(t===n)return!0;const r=_(t),e=_(n);return r.length===e.length&&B(r,(r=>t[r]===n[r]))},de=X("RegExp"),ge=Y(de),pe=/[()[\]{}*+?^$|#.,/\\\s-]/g;function me(t){return t.replace(pe,"\\$&")}function we(t,n){return n?we(it(t,me)):RegExp(t.join("|"))}function ye(t,n){if(t){if(y(n)){const r=we(n);return fe(t,((t,n)=>!r.test(n)))}if(ge(n))return fe(t,((t,r)=>!n.test(r)));if(mn(n))return fe(t,((t,r)=>r!==n));if(gn(n)){const r=n.toString();return fe(t,((t,n)=>n!==r))}return Wn(n)?fe(t,((t,r)=>!n(t,r))):void 0}}const be=(t,n,r={})=>{if(t)return s(n,(n=>{r[n]=t[n]})),r};function ve(t){if(t)return _(t).length}const Ae=(t,n)=>{const r={};return s(t,((t,e)=>{r[t]=n[e]})),r},Ee=t=>{const n=[],r=[];return Rn(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},Ie=/[ _-]+/g;function xe(t){let n="";return t.replace(Ie," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n}const $e=/[ _-]+/g,Se=/[ ]+/g;function Ce(t){return t.replace(/([A-Z]+)/g," $1").replace($e," ").trim().toLowerCase().replace(Se,"-")}const je=/[ _-]+/g,Be=/[ ]+/g;function Oe(t){return t.replace(/([A-Z]+)/g," $1").replace(je," ").trim().toLowerCase().replace(Be,"_")}const Fe=/[ _-]+/g;function Le(t){return t.replace(/([A-Z]+)/g," $1").replace(Fe," ").trim().toUpperCase()}const Te=/[ _-]+/g;function Me(t){return t.replace(/([A-Z]+)/g," $1").replace(Te," ").trim().toLowerCase()}function Re(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)}function Ne(t,n=1){return t[t.length-n]}function Pe(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))}function Ue(t,n=1){return t.slice(0,-1*n)}function _e(t,n=1){return t.substring(n)}function ke(t,n,r){return t.replace(new RegExp(`\\b${n.join("|")}\\b`,"gi"),r)}function De(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=r-n;for(;u=0&&(c=e[u]," "!==c);u--);return t.slice(0,u).trim()})(t,n,r):t}function He(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=n;for(;u0&&(c=e[u]," "!==c);u++);return t.substring(u,r).trim()})(t,n,r):t}const We=/%(?![\da-f]{2})/gi,Ze=/&/g,qe=//g,Ge=/"/g;function Ve(t){return decodeURIComponent(t.replace(We,(()=>"%25")))}function Je(t){return t.replace(Ze,"&").replace(qe,"<").replace(ze,">").replace(Ge,""")}function Ke(t){return Je(Ve(t))}const Qe=/\S+/g,Xe=/\w+/g;function Ye(t){return t.match(Qe)||[]}function to(t){return t.match(Xe)||[]}const no=/\w+/g;function ro(t){return t[0].toUpperCase()}function eo(t){return ro(t)+_e(t)}function oo(t){return ro(t)+_e(t).toLowerCase()}function co(t){return t.replace(no,(t=>eo(t)))}function uo(t){return t.replace(no,(t=>oo(t)))}function io(t){return vr(t)?.name}function so(t){return!!u(t)&&"[object Arguments]"===t.toString()}function fo(t){return!u(t)}const ao=X("Map"),lo=Y(ao),ho=/Array/,go="Array";function po(t){if(t){const n=io(t);if(ho.test(n)&&n!==go)return!0}return!1}function mo(t,n){if(fo(t)||Wn(t))return!1;if(y(t)||po(t))return!0;const r=t.length;if(!fo(r)||!gn(r)||r<0)return!1;if(n){const n=_(t);return!!n&&Or(n,((t,n)=>n>=0&&gn(n)))}return!0}const wo=X("BigInt"),yo=Y(wo),bo=X("Boolean"),vo=Y(bo),Ao=X("ArrayBuffer"),Eo=Y(Ao);function Io(t,n){return!(!t||!n)&&t instanceof n}const xo=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function $o(t){if(u(t)){const n=t?.constructor?.name;return xo.test(n)}return!1}const So=X("Date"),Co=Y(So);function jo(t){return mn(t)||y(t)?!o(t):V(t)?!ve(t):!u(t)}function Bo(t){return!1===t}const Oo=X("Float32Array"),Fo=Y(Oo),Lo=X("Float64Array"),To=Y(Lo),{isInteger:Mo}=Number,Ro=Mo,No=X("Int16Array"),Po=Y(No),Uo=X("Int32Array"),_o=Y(Uo),ko=X("Int8Array"),Do=Y(ko);function Ho(t){return u(t)&&"function"==typeof t[Symbol.iterator]}function Wo(t){return!!t&&t instanceof Promise}function Zo(t){return!!t&&(Wo(t)||qn(t)||Dn(t))}function qo(t,n){return!!(t&&n&&n.call)&&t instanceof n}function zo(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n}function Go(t,n){return!fo(t)&&!fo(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)}const{isSafeInteger:Vo}=Number,Jo=Vo;function Ko(t,n){const r=vr(t),e=vr(n);return r===e&&r.name===e.name}function Qo(t){return!0===t}const Xo=X("Uint16Array"),Yo=Y(Xo),tc=X("Uint32Array"),nc=Y(tc),rc=X("Uint8Array"),ec=Y(rc),oc=X("Uint8ClampedArray"),cc=Y(oc),uc=X("WeakMap"),ic=Y(uc),sc=void 0!==globalThis.Deno,fc=void 0!==globalThis.process&&process.versions&&process.versions.node;function ac(t,n=!0){return Boolean(t)&&n}function lc(t,n=!0){return!1===Boolean(t)&&n}function hc(t,n,r,e){if(u(t)){if(Wn(n))return r?ar(n,r,e):n(...e);if(V(n))return n[r]=t,n}}function dc(t,n){return Bo(rt(t,n))}const gc=JSON;function pc(t,n){if(t)return gc.parse(t,n)}const mc=gc.stringify;function wc(t,n,r){const e=globalThis.options||r;let o;return Wn(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${mc(t)}\n\t\tExpected: ${mc(n)}`,e)}async function yc(t,n,r){const e=await t;return!(Wn(n)&&!1===await n(e,r))&&!dc(e,n)||wc(e,n,r)}function bc(t,n,r){if(Zo(t)||Zo(n))return yc(t,n,r);return!(Wn(n)&&!1===n(t,r))&&!dc(t,n)||wc(t,n,r)}function vc(t,n,r){const e=xr(t,(t=>Wn(t)?t.bind(n):t));return r?Tn(r,e):e}function Ac(t){if(t){if(nt(t))return Gt(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t}const Ec=globalThis.structuredClone;function Ic(t){return Ec(t)}function xc(t){if(V(t)){const n=_(t),r=n.length,e={};for(let o=0;oac(t)))}async function $c(t,n=i,r,e){if(Dn(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);u(e)&&r.push(e)}return r}const o=r||Ar(t);if(y(t)||Un(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);u(c)&&e(c)}return o}const c=Wn(o.set);for await(const[r,e]of t){const i=await n(e,r,o,t);u(i)&&(c?o.set(r,i):o[r]=i)}return o}function Sc(t,n=i,r){const e=r||Ar(t);if(y(t)||Un(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);u(c)&&o(c)}return e}const o=Wn(e.set);for(const[r,c]of t){const i=n(c,r,e,t);u(i)&&(o?e.set(r,i):e[r]=i)}return e}const Cc=zn(f,l,se,ie,Sc,$c);function jc(...t){return qn(t[0])?async function(...n){return Or(t,(async t=>Or(n,(async n=>t(n)))))}:function(...n){return Or(t,(t=>Or(n,(n=>t(n)))))}}function Bc(t,n=i,r){const e=r||Ar(t);if(y(t)||Un(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Wn(e.set);for(const[o,c]of t){!0===n(c,o,e,t)&&(r?e.set(o,c):e[o]=c)}}return e}async function Oc(t,n=i,r,e){if(Dn(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||Ar(t);if(y(t)||Un(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Wn(o.set);for await(const[e,c]of t){!0===await n(c,e,o,t)&&(r?o.set(e,c):o[e]=c)}}return o}const Fc=zn(F,L,fe,ae,Bc,Oc);function Lc(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const Tc=Lc(s),Mc=Lc(C);function Rc(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const Nc=Rc(a),Pc=Rc(j);function Uc(t,n){const r=Ar(t),e=r.push||r.add;if(e&&Wn(e)){const o=e.bind(r);t.forEach((t=>{const e=n(t,r);o(e)}))}else Wn(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r}function _c(t,n){const r={};return s(t,((t,e)=>{r[n[e]]=t})),r}function kc(t,n,r){if(fo(t)||fo(n))return!1;if(mn(t))return mn(n)?t.includes(n,r):ge(n)?n.test(t):Wn(n)?Boolean(n(t)):Or(n,(n=>Boolean(kc(t,n))));if(y(t)){if(mn(n))return t.includes(n,r);if(ge(n))return Or(t,(t=>t.test(n)));if(y(n))return Or(n,(n=>Boolean(kc(t,n))))}return!1}const Dc=xn(/\./),Hc=(t,n,r)=>(n&&!u(t[n])&&(t[n]=r),t);class Wc{list=I(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Xn),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Zc=I(Wc);function qc(t,n){return Zc.set(t,n)}function zc(){er(setTimeout(rr,0),(t=>{Zc.remove(t)}))}function Gc(t,...n){return Gn(n,(n=>{Gn(n,((n,r)=>{if(t[r]&&(V(n)||y(n)||n.forEach))return Gc(t[r],n);t[r]=n}))})),t}class Vc{static models={};constructor(t,n){u(n)?(Tn(this,n),this.modelName=t,Vc.models.set(t,n)):Tn(this,t)}}function Jc(t,n){return u(n)?I(Vc,[t,n]):Z(t,Vc.models)}function Kc(t,n){return[t,n]}function Qc(t,n,r){const e=t.length,o=[];for(let c=0;cB(r,(r=>rt(t[r],n[r])));function nu(t,n,r){return n&&V(t)||gn(n)&&y(t)?t[n]=r:t.set?t.set(n,r):t.push?t.push(r):t.add?t.add(r):t[n]=r,t}function ru(t,n,r){return gn(r)&&y(t)?t[r]=n:t.push?t.push(n):t.add?t.add(n):t[r]=n,t}class eu{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Rn(t,(n=>{t[n]=new eu(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new eu(r),!0)})}}const ou=()=>[],cu=()=>({}),uu=()=>"";async function iu(t,n){for(let r=0;r0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const lu=I(au);class hu{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function du(t){return new hu(t)}function gu(t){return t?gu[t]:_(gu)}const pu=globalThis.navigator?.userAgentData;if(pu)Rn(pu,((t,n)=>{vo(t)&&t&&(gu[n]=t)})),s(pu.brands,(t=>{gu[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{gu[t]=!0}))}function mu(t,n,r,e){return t.addEventListener(n,r,e),t}function wu(t,n,r,e){return t.removeEventListener(n,r,e),t}function yu(t){return 13===t.keyCode}const bu=document.createDocumentFragment.bind(document);function vu(t,n){return t.appendChild(n),n}function Au(t,n){return y(n)?Ae(n,it(n,(n=>t.getAttribute(n)))):(Rn(n,((n,r)=>{t.setAttribute(r,n)})),t)}const Eu=/^.[\w_-]+$/,Iu=/^[A-Za-z]+$/,xu=/\s/,$u=document.getElementsByClassName.bind(document),Su=document.getElementsByTagName.bind(document),Cu=document.getElementById.bind(document),ju=document.querySelector.bind(document),Bu=document.querySelectorAll.bind(document);function Ou(t){switch(t[0]){case"#":if(!xu.test(t))return Cu(_e(t));break;case".":if(Eu.test(t))return $u(_e(t));break;default:if(Iu.test(t))return Su(t)}return Bu(t)}const Fu=document.createElement.bind(document);function Lu(t){const n=Dc(t)&&t||`${t}.js`;return(t=>Yc((n=>{mu(t,"load",n,!0),mu(t,"error",n,!0),vu(ju("head"),t)})))(Au(Fu("script"),{async:"",src:n}))}function Tu(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&mu(document,"DOMContentLoaded",t),!1)}Tu((()=>{const t=Cu("AcidLib");Lu(t&&t.getAttribute("data-index")||"/index")}));const Mu=location.protocol,Ru="http:"===Mu?"ws":"wss",Nu=location.hostname,Pu={hardware:{cores:navigator.hardwareConcurrency},host:{name:Nu,protocol:Mu,protocolSocket:Ru}};function Uu(){Tn(Pu,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function _u(){Uu()}let ku;Tu(_u),mu(window,"load",_u,!0),mu(window,"resize",_u,!0),function(t){try{t().removeItem("TESTING"),ku=!0}catch(t){ku=!1}}((()=>localStorage));class Du{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=du(t)}hasLocal=ku;setItem(t,n){return this.hasLocal&&this.local.setItem(t,mn(n)?n:mc(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return u(n)?n:!u(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}function Hu(t){return new Du(t)}const Wu=(t,n)=>`color:${t};background:${n};`,Zu={alert:Wu("#fff","#f44336"),important:Wu("#fff","#E91E63"),notify:Wu("#fff","#651FFF"),warning:Wu("#000","#FFEA00")},qu=(t,n)=>{const r=mn(t)?t:mc(t);if("alert"===n||"warning"===n)return console.trace(`%c${r}`,`${Zu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${r}`,`${Zu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},zu=(t,n,r)=>{Zu[t]=Wu(n,r)};function Gu(t){return t&&9!==t.nodeType}function Vu(t){return!!u(t)&&"[object HTMLCollection]"===t.toString()}function Ju(t){return!!u(t)&&"[object NodeList]"===t.toString()}export{Vn as Chain,Du as Crate,Wc as Intervals,Vc as Model,eu as Store,cr as Timers,au as UniqID,hu as VirtualStorage,Hr as add,Bn as after,vu as append,ar as apply,we as arrayToRegex,_c as arraysToObject,On as ary,bc as assert,yc as assertAsync,Tn as assign,Fn as before,vc as bindAll,Nr as cacheNativeMethod,Gr as calcProgress,xe as camelCase,Jn as chain,t as chunk,Pe as chunkString,Ac as clear,n as clearArray,Gt as clearBuffer,zc as clearIntervals,sr as clearTimers,Ic as clone,r as cloneArray,Ar as cloneType,qu as cnsl,zu as cnslTheme,xc as compact,ue as compactKeys,Cc as compactMap,f as compactMapArray,l as compactMapAsyncArray,ie as compactMapAsyncObject,se as compactMapObject,Qc as concurrent,Xc as concurrentStatus,I as construct,Q as constructorName,Vt as countBy,Jt as countKey,Kt as countWithoutKey,Hu as crate,bu as createFragment,Kn as curry,Qn as curryRight,lr as debounce,Wr as deduct,_r as defProp,x as difference,Zr as divide,$ as drop,S as dropRight,Gn as each,s as eachArray,a as eachAsyncArray,Mn as eachAsyncObject,Rn as eachObject,C as eachRight,j as eachRightAsync,v as ensureArray,zt as ensureBuffer,me as escapeRegex,pe as escapeRegexRegex,mu as eventAdd,wu as eventRemove,Or as every,jc as everyArg,B as everyArray,O as everyAsyncArray,Sr as everyAsyncObject,Cr as everyObject,tr as falsy,Fc as filter,F as filterArray,L as filterAsyncArray,ae as filterAsyncObject,fe as filterObject,Xt as findIndex,Qt as findIndexCache,Yt as findItem,T as first,M as flatten,A as flattenDeep,Tc as flow,Nc as flowAsync,Pc as flowAsyncRight,Mc as flowRight,w as forEach,Nn as forEachAsync,Uc as forMap,_n as forOf,Hn as forOfAsync,Sc as forOfCompactMap,$c as forOfCompactMapAsync,jr as forOfEvery,Br as forOfEveryAsync,Bc as forOfFilter,Oc as forOfFilterAsync,Er as forOfMap,Ir as forOfMapAsync,zn as generateLoop,Z as get,$u as getByClass,Cu as getById,Su as getByTag,ce as getEntries,En as getFileExtension,In as getFilename,un as getHighest,sn as getLowest,Ot as getNumberInsertIndex,Ur as getPropDesc,Pr as getPropNames,vr as getType,io as getTypeName,fn as groupBy,kc as has,G as hasAnyKeys,Dc as hasDot,z as hasKeys,o as hasLength,ku as hasLocal,kr as hasProp,u as hasValue,Je as htmlEntities,hr as ifInvoke,Hc as ifNotAssign,hc as ifValue,Lu as importjs,dr as inAsync,gr as inSync,qr as increment,an as indexBy,Pu as info,R as initial,Ue as initialString,Re as insertInRange,N as intersection,qc as interval,Zc as intervals,le as invert,P as invokeArray,ln as invokeCollection,hn as invokeCollectionAsync,gu as isAgent,so as isArguments,y as isArray,Eo as isArrayBuffer,Ao as isArrayBufferCall,mo as isArrayLike,qn as isAsync,Zn as isAsyncCall,yo as isBigInt,wo as isBigIntCall,vo as isBoolean,bo as isBooleanCall,nt as isBuffer,tt as isBufferCall,Io as isChild,$o as isCloneable,J as isConstructor,K as isConstructorFactory,X as isConstructorNameFactory,Co as isDate,So as isDateCall,sc as isDeno,Tu as isDocumentReady,Gu as isDom,jo as isEmpty,yu as isEnter,rt as isEqual,Fo as isF32,Oo as isF32Call,To as isF64,Lo as isF64Call,Bo as isFalse,lc as isFalsy,$n as isFileCSS,Sn as isFileHTML,Cn as isFileJS,jn as isFileJSON,Ro as isFloat,Wn as isFunction,Dn as isGenerator,kn as isGeneratorCall,Vu as isHTMLCollection,Po as isI16,No as isI16Call,_o as isI32,Uo as isI32Call,Do as isI8,ko as isI8Call,Ho as isIterable,Zo as isKindAsync,lo as isMap,ao as isMapCall,et as isMatchArray,he as isMatchObject,d as isNegative,Ju as isNodeList,fc as isNodejs,b as isNotArray,pn as isNotNumber,wn as isNotString,c as isNull,gn as isNumber,dn as isNumberCall,$t as isNumberEqual,Yr as isNumberInRange,te as isNumberNotInRange,qo as isParent,V as isPlainObject,re as isPositive,zo as isPrimitive,Wo as isPromise,ge as isRegex,de as isRegexCall,Go as isRelated,Jo as isSafeInt,Dr as isSame,Ko as isSameType,Un as isSet,Pn as isSetCall,mn as isString,Qo as isTrue,ac as isTruthy,Y as isTypeFactory,po as isTypedArray,Yo as isU16,Xo as isU16Call,nc as isU32,tc as isU32Call,ec as isU8,cc as isU8C,oc as isU8CCall,rc as isU8Call,e as isUndefined,ic as isWeakMap,uc as isWeakMapCall,ee as isZero,pc as jsonParse,Ce as kebabCase,_ as keys,ct as largest,ut as last,Me as lowerCase,xr as map,it as mapArray,st as mapAsyncArray,yr as mapAsyncObject,br as mapObject,ft as mapRightArray,at as mapWhile,Gc as merge,Jc as model,zr as multiply,pr as negate,fo as noValue,Au as nodeAttribute,rr as noop,dc as notEqual,mr as nthArg,Ln as objectAssign,oe as objectEntries,ve as objectSize,ye as omit,wr as once,Tt as onlyUnique,$r as over,Fr as overEvery,Kc as pair,dt as partition,be as pick,bn as pluck,yn as pluckObject,Yc as promise,tu as propertyMatch,ju as querySelector,Bu as querySelectorAll,Jr as randomFloat,Et as randomInt,m as range,p as rangeDown,g as rangeUp,Ve as rawURLDecode,Lr as reArg,xn as regexTestFactory,Kr as remainder,mt as remove,wt as removeBy,ke as replaceList,yt as rest,_e as restString,i as returnValue,bt as right,Ne as rightString,Ct as sample,Ke as sanitize,Uu as saveDimensions,Ou as selector,nu as setKey,ru as setValue,St as shuffle,Bt as smallest,Oe as snakeCase,en as sortCollectionAlphabetically,An as sortCollectionAlphabeticallyReverse,cn as sortCollectionAscending,on as sortCollectionAscendingFilter,nn as sortCollectionDescending,tn as sortCollectionDescendingFilter,ht as sortNumberAscending,pt as sortNumberDescening,rn as sortObjectsAlphabetically,vn as sortObjectsAlphabeticallyReverse,Mt as sortUnique,mc as stringify,ou as stubArray,nr as stubFalse,cu as stubObject,uu as stubString,Yn as stubTrue,lt as subtract,Qr as subtractAll,gt as subtractReverse,Xr as sumAll,Ft as take,Lt as takeRight,Zu as themes,Tr as throttle,ir as timer,ur as timers,er as times,iu as timesAsync,or as timesMap,su as timesMapAsync,xt as toArray,W as toPath,fu as toggle,Ye as tokenize,De as truncate,He as truncateRight,Xn as truth,qt as unZip,Ee as unZipObject,Nt as union,lu as uniqID,Rt as unique,Pt as untilFalseArray,Ut as untilTrueArray,_u as updateDimensions,Le as upperCase,eo as upperFirst,co as upperFirstAll,ro as upperFirstLetter,oo as upperFirstOnly,uo as upperFirstOnlyAll,du as virtualStorage,_t as whileCompactMap,kt as whileEachArray,Dt as whileMapArray,Ht as without,to as words,Mr as wrap,Wt as xor,Zt as zip,Ae as zipObject}; //# sourceMappingURL=index.js.map diff --git a/npm/module/index.js b/npm/module/index.js index 9ae01263..671a3a50 100644 --- a/npm/module/index.js +++ b/npm/module/index.js @@ -1,2 +1,2 @@ -import{readdir as n,stat as t,mkdir as r,copyFile as e}from"fs/promises";import o from"path";import{fileURLToPath as u}from"url";function c(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function i(n){return n.length=0,n}function s(n){return n.slice()}function f(n){return void 0===n}function a(n){return Boolean(n.length)}function l(n){return null===n}function h(n){return!f(n)&&!l(n)}function g(n){return n}function p(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const s=t.call(e,n,u,r,c,i,o);h(s)&&r.push(s)})):p(n,((n,u,c,i)=>{const s=t(n,u,r,c,i,e,o);h(s)&&r.push(s)})),r}async function m(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const u=await t(n,e,r,o);h(u)&&r.push(u)})),r}const{sign:y}=Math;function b(n){return-1===y(n)}function v(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function E(n,t,r=1,e=[]){return b(r)?e:n{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function M(n,t=1,r=n.length){return n.splice(t,r)}const T=(n,t=1,r=n.length)=>M(n,0,r-t);function _(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function F(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function R(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function N(n,t,r=[],e){return await m(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function D(n,t){return t?n.slice(0,t):n[0]}function L(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(O(t))),[]);return r}function Z(n){return n.slice(0,n.length-1)}function k(n,...t){return d(n,(n=>{if(R(t,(t=>t.includes(n))))return n}))}const q=Object.keys;function V(n){if(n)return q(n)}const G=/\.|\[/,J=/]/g,W="";function z(n){return n.replace(J,W).split(G)}function H(n,t){if(!t)return!1;let r=t;return R(I(n)?n:z(n),(n=>(r=r[n],h(r)))),r}const K=Object.hasOwn;function Q(n,...t){if(n)return R(t,(t=>{const r=z(t);if(1===r.length)return K(n,t);{const t=r.pop(),e=H(r,n);return!!e&&K(e,t)}}))}function X(n,...t){if(n)return Boolean(t.find((t=>{const r=z(t);if(1===r.length)return K(n,t);{const t=r.pop(),e=H(r,n);return!!e&&K(e,t)}})))}const Y=n=>!!h(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function nn(n,t){return n?.constructor===t||!1}function tn(n){return t=>nn(t,n)}function rn(n){return n?.constructor?.name}function en(n){return t=>rn(t)===n||!1}function on(n){return function(t,...r){return r?n(t)&&R(r,n):n(t)}}const un=en("Buffer"),cn=on(un),sn=(n,t)=>{if(n===t)return!0;if(cn(n))return n.equals(t);if(n.toString()===t.toString())if(Y(n)){const r=V(n);if(Q(t,r))return R(r,(r=>sn(n[r],t[r])))}else if(I(n)&&n.length===t.length)return R(n,((n,r)=>sn(n,t[r])));return!1};function fn(n,t){return n.length===t.length&&R(n,((n,r)=>sn(t[r],n)))}const an=Math.max;function ln(n){return an(...n)}function hn(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function gn(n,t,r=[],e,o){return h(e)?p(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):p(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function pn(n,t){const r=[];return await m(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function dn(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function mn(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function vn(n,t){return t-n}function An(n){return n.sort(vn)}function En(n,t){let r=n.length;for(let e=0;er)return Tn(n);if(1===t)return[n[Bn(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Un(n,t=1){return n.slice(0,t)}function Nn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Dn(n,t,r){return r.indexOf(n)===t}function Ln(n,t,r){return n!==r[t-1]}function Zn(n,t){return t?n.filter(Ln):n.filter(Dn)}function kn(...n){return Zn($(n))}function qn(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function Hn(...n){const t=C(Map),r=[];return 2===n.length?S(n[0],n[1]):(p(n,((n,r)=>{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Kn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Qn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Xn(n){return cn(n)&&n||h(n)&&Buffer.from(n)||Buffer.alloc(0)}function Yn(n){return n.fill(0),n}function nt(n,t){const r={};let e;return p(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function tt(n,t){let r=0;return p(n,(n=>{n[t]&&r++})),r}function rt(n,t){let r=0;return p(n,(n=>{n[t]||r++})),r}function et(n,t,r,e,o){if(n[o]===e)return!0}function ot(n,t,r="id"){const e=n.findIndex(((n,e)=>et(n,0,0,t,r)));return-1!==e&&e}function ut(n,t,r="id"){const e=n.find(((n,e)=>et(n,0,0,t,r)));return-1!==e&&e}function ct(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function it(n,t="id",r){return n.sort(((n,e)=>ct(n,e,t,r)))}function st(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function ft(n,t="id",r){return n.sort(((n,e)=>st(n,e,t,r)))}function at(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function lt(n,t="id",r){return n.sort(((n,e)=>at(n,e,t,r)))}function ht(n,t="id"){return lt(n,t)[0]}function gt(n,t){return it(n,t,!1)[0]}function pt(n,t){const r={};return p(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function dt(n,t="id"){const r={};return p(n,(n=>{r[n[t]]=n})),r}function mt(n,t,r){return gn(n,((n,e)=>n[t](r,e)))}function wt(n,t,r){return pn(n,(async(n,e)=>n[t](r,e)))}const yt=en("Number"),bt=on(yt);function vt(n){return!bt(n)}const At=tn(String);function Et(n){return!At(n)}function jt(n,t){if(n)return At(t)?n[t]:gn(t,(t=>n[t]))}function It(n,t){return gn(n,(n=>jt(n,t)))}function xt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function Ot(n,t="id",r){return n.sort(((n,e)=>xt(n,e,t,r)))}function $t(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function Bt(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function Ct(n){return t=>!!h(t)&&n.test(t)}const St=Ct(/\.css$/),Mt=Ct(/\.html$/),Tt=Ct(/\.js$/),_t=Ct(/\.json$/);function Ft(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function Rt(n,t){return(...r)=>n(...r.splice(0,t))}function Pt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Ut=Object.assign;function Nt(n,...t){if(h(n))return Ut(n,...t)}const Dt=async(n,t,r,e)=>{if(!n)return;const o=V(n);return h(r)?await m(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await m(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Lt(n,t,r,e){if(!n)return;const o=V(n);return h(r)?p(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):p(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function Zt(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!h(n)&&n instanceof Function,Ht=en("AsyncFunction"),Kt=on(Ht);function Qt(n,t,r,e,o,u){return(c,i,s,f,a)=>{let l;const g=Kt(i);if(h(c)&&i)return l=I(c)?g?t:n:Y(c)||zt(c)?g?e:r:o?g?u:o:Jt(c)?u:g?e:r,l(c,i,s,f,a)}}const Xt=Qt(p,m,Lt,Dt,Vt,Wt);class Yt{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Xt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function nr(n){return C(Yt,[n])}function tr(n,t=n.length){const r=[],e=(...o)=>{if(r.push(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}function rr(n,t=n.length){const r=[],e=(...o)=>{if(r.unshift(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}const er=!0,or=()=>er,ur=!1,cr=()=>ur,ir=()=>{};function sr(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,er),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const lr=C(ar);function hr(n,t){return lr.set(n,t)}function gr(){sr(setTimeout(ir,0),(n=>{lr.remove(n)}))}const pr=Reflect.apply;function dr(n,t,r){if(zt(n))return pr(n,t,r)}function mr(n,t){function r(...n){r.id!==ur&&lr.remove(r.id),r.id=hr((()=>{r.callable(...n),r.id=ur}),t)}return r.id=ur,r.callable=n.bind(r),r.clear=()=>{r.id!==ur&&(lr.remove(r.id),r.id=ur)},r}function wr(n,...t){if(zt(n))return n(...t)}async function yr(n,t){const r=n.length;for(let e=0;eXt(n,(n=>{n(t)}));function vr(n){return(...t)=>!n(...t)}function Ar(n=0){return(...t)=>t[n]}const Er=n=>{let t;return(...r)=>(h(t)||(t=n(...r)),t)};async function jr(n,t,r={}){if(n)return await Dt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function Ir(n,t,r={},e,o){if(n)return h(e)?Lt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Lt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function xr(n){return n?.constructor}function Or(n,t=[]){const r=xr(n);return r===Function&&"function"===r.name?function(){}:C(r,t)}function $r(n,t=g,r){const e=r||Or(n);if(I(n)||qt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=zt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Br(n,t=g,r,e){if(Jt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||Or(n);if(I(n)||qt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=zt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const Cr=Qt(gn,pn,Ir,jr,$r,Br);function Sr(n){return(...t)=>Cr(n,(n=>n(...t)))}async function Mr(n,t){if(!n)return;return P(V(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function Tr(n,t){if(!n)return;return R(V(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function _r(n,t=g){if(I(n)||qt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Fr(n,t=g,r){if(Jt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(I(n)||qt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Rr=Qt(R,P,Tr,Mr,_r,Fr);function Pr(n){return t=>Rr(n,(n=>n(t)))}function Ur(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Nr(n,t){function r(...n){r.id?r.shouldThrottle=er:(r.callable(...n),r.id=hr((()=>{r.shouldThrottle&&r.callable(...n),r.id=ur}),t))}return r.id=ur,r.callable=n.bind(r),r.clear=()=>{lr.remove(r.id),r.id=ur},r}function Dr(n,t){return(...r)=>t(n,...r)}const Lr=Function.prototype;function Zr(n){return Lr.call.bind(n)}const kr=Object.getOwnPropertyNames,qr=Object.getOwnPropertyDescriptor,Vr=Object.defineProperty,Gr=Zr(Object.hasOwnProperty),Jr=Object.is;function Wr(n,t){return n+t}function zr(n){return n-1}function Hr(n,t){return n/t}function Kr(n){return n+1}function Qr(n,t){return n*t}function Xr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:Yr}=Math;function ne(n,t=0){return Yr()*(n-t)+t}function te(n,t){return n%t}function re(n){return n.reduce(((n,t)=>n-t),0)}function ee(n){return n.reduce(((n,t)=>n+t),0)}function oe(n,t,r){return n>t&&nr}const{sign:ce}=Math;function ie(n){return 1===ce(n)}function se(n){return 0===n}const fe=Object.entries;function ae(n){if(h(n))return fe(n)}function le(n){const t=[];return Lt(n,((n,r)=>{h(n)&&t.push(r)})),t}async function he(n,t=g,r={}){return await Dt(n,(async(n,e,o,u,c)=>{const i=await t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function ge(n,t=g,r={}){return Lt(n,((n,e,o,u,c)=>{const i=t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function pe(n,t,r={}){return Lt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function de(n,t,r={}){return await Dt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function me(n,t={}){if(n)return Lt(n,((n,r)=>{t[n]=r})),t}const we=(n,t)=>{if(n===t)return!0;const r=V(n),e=V(t);return r.length===e.length&&R(r,(r=>n[r]===t[r]))},ye=en("RegExp"),be=on(ye),ve=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Ae(n){return n.replace(ve,"\\$&")}function Ee(n,t){return t?Ee(gn(n,Ae)):RegExp(n.join("|"))}function je(n,t){if(n){if(I(t)){const r=Ee(t);return pe(n,((n,t)=>!r.test(t)))}if(be(t))return pe(n,((n,r)=>!t.test(r)));if(At(t))return pe(n,((n,r)=>r!==t));if(bt(t)){const r=t.toString();return pe(n,((n,t)=>t!==r))}return zt(t)?pe(n,((n,r)=>!t(n,r))):void 0}}const Ie=(n,t,r={})=>{if(n)return p(t,(t=>{r[t]=n[t]})),r};function xe(n){if(n)return V(n).length}const Oe=(n,t)=>{const r={};return p(n,((n,e)=>{r[n]=t[e]})),r},$e=n=>{const t=[],r=[];return Lt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Be=/[ _-]+/g;function Ce(n){let t="";return n.replace(Be," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const Se=/[ _-]+/g,Me=/[ ]+/g;function Te(n){return n.replace(/([A-Z]+)/g," $1").replace(Se," ").trim().toLowerCase().replace(Me,"-")}const _e=/[ _-]+/g,Fe=/[ ]+/g;function Re(n){return n.replace(/([A-Z]+)/g," $1").replace(_e," ").trim().toLowerCase().replace(Fe,"_")}const Pe=/[ _-]+/g;function Ue(n){return n.replace(/([A-Z]+)/g," $1").replace(Pe," ").trim().toUpperCase()}const Ne=/[ _-]+/g;function De(n){return n.replace(/([A-Z]+)/g," $1").replace(Ne," ").trim().toLowerCase()}function Le(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function Ze(n,t=1){return n[n.length-t]}function ke(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function qe(n,t=1){return n.slice(0,-1*t)}function Ve(n,t=1){return n.substring(t)}function Ge(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function Je(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function We(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const ze=/%(?![\da-f]{2})/gi,He=/&/g,Ke=//g,Xe=/"/g;function Ye(n){return decodeURIComponent(n.replace(ze,(()=>"%25")))}function no(n){return n.replace(He,"&").replace(Ke,"<").replace(Qe,">").replace(Xe,""")}function to(n){return no(Ye(n))}const ro=/\S+/g,eo=/\w+/g;function oo(n){return n.match(ro)||[]}function uo(n){return n.match(eo)||[]}const co=/\w+/g;function io(n){return n[0].toUpperCase()}function so(n){return io(n)+Ve(n)}function fo(n){return io(n)+Ve(n).toLowerCase()}function ao(n){return n.replace(co,(n=>so(n)))}function lo(n){return n.replace(co,(n=>fo(n)))}function ho(n){return xr(n)?.name}function go(n){return!!h(n)&&"[object Arguments]"===n.toString()}function po(n){return!h(n)}const mo=en("Map"),wo=on(mo),yo=/Array/,bo="Array";function vo(n){if(n){const t=ho(n);if(yo.test(t)&&t!==bo)return!0}return!1}function Ao(n,t){if(po(n)||zt(n))return!1;if(I(n)||vo(n))return!0;const r=n.length;if(!po(r)||!bt(r)||r<0)return!1;if(t){const t=V(n);return!!t&&Rr(t,((n,t)=>t>=0&&bt(t)))}return!0}const Eo=en("BigInt"),jo=on(Eo),Io=en("Boolean"),xo=on(Io),Oo=en("ArrayBuffer"),$o=on(Oo);function Bo(n,t){return!(!n||!t)&&n instanceof t}const Co=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function So(n){if(h(n)){const t=n?.constructor?.name;return Co.test(t)}return!1}const Mo=en("Date"),To=on(Mo);function _o(n){return At(n)||I(n)?!a(n):Y(n)?!xe(n):!h(n)}function Fo(n){return!1===n}const Ro=en("Float32Array"),Po=on(Ro),Uo=en("Float64Array"),No=on(Uo),{isInteger:Do}=Number,Lo=Do,Zo=en("Int16Array"),ko=on(Zo),qo=en("Int32Array"),Vo=on(qo),Go=en("Int8Array"),Jo=on(Go);function Wo(n){return h(n)&&"function"==typeof n[Symbol.iterator]}function zo(n){return!!n&&n instanceof Promise}function Ho(n){return!!n&&(zo(n)||Kt(n)||Jt(n))}function Ko(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Qo(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Xo(n,t){return!po(n)&&!po(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:Yo}=Number,nu=Yo;function tu(n,t){const r=xr(n),e=xr(t);return r===e&&r.name===e.name}function ru(n){return!0===n}const eu=en("Uint16Array"),ou=on(eu),uu=en("Uint32Array"),cu=on(uu),iu=en("Uint8Array"),su=on(iu),fu=en("Uint8ClampedArray"),au=on(fu),lu=en("WeakMap"),hu=on(lu),gu=void 0!==globalThis.Deno,pu=void 0!==globalThis.process&&process.versions&&process.versions.node;function du(n,t=!0){return Boolean(n)&&t}function mu(n,t=!0){return!1===Boolean(n)&&t}function wu(n,t,r,e){if(h(n)){if(zt(t))return r?dr(t,r,e):t(...e);if(Y(t))return t[r]=n,t}}function yu(n,t){return Fo(sn(n,t))}const bu=JSON;function vu(n,t){if(n)return bu.parse(n,t)}const Au=bu.stringify;function Eu(n,t,r){const e=globalThis.options||r;let o;return zt(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Au(n)}\n\t\tExpected: ${Au(t)}`,e)}async function ju(n,t,r){const e=await n;return!(zt(t)&&!1===await t(e,r))&&!yu(e,t)||Eu(e,t,r)}function Iu(n,t,r){if(Ho(n)||Ho(t))return ju(n,t,r);return!(zt(t)&&!1===t(n,r))&&!yu(n,t)||Eu(n,t,r)}function xu(n,t,r){const e=Cr(n,(n=>zt(n)?n.bind(t):n));return r?Nt(r,e):e}function Ou(n){if(n){if(cn(n))return Yn(n);if(I(n))return i(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const $u=globalThis.structuredClone;function Bu(n){return $u(n)}function Cu(n){if(Y(n)){const t=V(n),r=t.length,e={};for(let o=0;odu(n)))}async function Su(n,t=g,r,e){if(Jt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);h(e)&&r.push(e)}return r}const o=r||Or(n);if(I(n)||qt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);h(u)&&e(u)}return o}const u=zt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);h(c)&&(u?o.set(r,c):o[r]=c)}return o}function Mu(n,t=g,r){const e=r||Or(n);if(I(n)||qt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);h(u)&&o(u)}return e}const o=zt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);h(c)&&(o?e.set(r,c):e[r]=c)}return e}const Tu=Qt(d,w,ge,he,Mu,Su);function _u(...n){return Kt(n[0])?async function(...t){return Rr(n,(async n=>Rr(t,(async t=>n(t)))))}:function(...t){return Rr(n,(n=>Rr(t,(t=>n(t)))))}}function Fu(n,t=g,r){const e=r||Or(n);if(I(n)||qt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=zt(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Ru(n,t=g,r,e){if(Jt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||Or(n);if(I(n)||qt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=zt(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Pu=Qt(U,N,pe,de,Fu,Ru);function Uu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Nu=Uu(p),Du=Uu(_);function Lu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const Zu=Lu(m),ku=Lu(F);function qu(n,t){const r=Or(n),e=r.push||r.add;if(e&&zt(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else zt(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function Vu(n,t){const r={};return p(n,((n,e)=>{r[t[e]]=n})),r}function Gu(n,t,r){if(po(n)||po(t))return!1;if(At(n))return At(t)?n.includes(t,r):be(t)?t.test(n):zt(t)?Boolean(t(n)):Rr(t,(t=>Boolean(Gu(n,t))));if(I(n)){if(At(t))return n.includes(t,r);if(be(t))return Rr(n,(n=>n.test(t)));if(I(t))return Rr(t,(t=>Boolean(Gu(n,t))))}return!1}const Ju=Ct(/\./),Wu=(n,t,r)=>(t&&!h(n[t])&&(n[t]=r),n);class zu{list=C(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,er),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const Hu=C(zu);function Ku(n,t){return Hu.set(n,t)}function Qu(){sr(setTimeout(ir,0),(n=>{Hu.remove(n)}))}function Xu(n,...t){return Xt(t,(t=>{Xt(t,((t,r)=>{if(n[r]&&(Y(t)||I(t)||t.forEach))return Xu(n[r],t);n[r]=t}))})),n}class Yu{static models={};constructor(n,t){h(t)?(Nt(this,t),this.modelName=n,Yu.models.set(n,t)):Nt(this,n)}}function nc(n,t){return h(t)?C(Yu,[n,t]):H(n,Yu.models)}function tc(n,t){return[n,t]}function rc(n,t,r){const e=n.length,o=[];for(let u=0;uR(r,(r=>sn(n[r],t[r])));function cc(n,t,r){return t&&Y(n)||bt(t)&&I(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function ic(n,t,r){return bt(r)&&I(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class sc{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Lt(n,(t=>{n[t]=new sc(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new sc(r),!0)})}}const fc=()=>[],ac=()=>({}),lc=()=>"";async function hc(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const mc=C(dc);class wc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function yc(n){return new wc(n)}async function bc(u,c){const i=await n(u);return await m(i,(async n=>{const i=o.join(u,n);if((await t(i)).isDirectory()){const t=o.join(c,n.replace(u,""));await r(t,{recursive:!0}),await bc(i,t)}else await async function(n,t,r){const u=o.join(n,r),c=o.join(t,r);await e(u,c)}(u,c,n)})),!0}function vc(n){return globalThis.__filename?__filename:u(n.url)}function Ac(n){return globalThis.__dirname?__dirname:o.dirname(u(n.url))}export{Yt as Chain,zu as Intervals,Yu as Model,sc as Store,ar as Timers,dc as UniqID,wc as VirtualStorage,Wr as add,Ft as after,dr as apply,Ee as arrayToRegex,Vu as arraysToObject,Rt as ary,Iu as assert,ju as assertAsync,Nt as assign,Pt as before,xu as bindAll,Zr as cacheNativeMethod,Xr as calcProgress,Ce as camelCase,nr as chain,c as chunk,ke as chunkString,Ou as clear,i as clearArray,Yn as clearBuffer,Qu as clearIntervals,gr as clearTimers,Bu as clone,s as cloneArray,Or as cloneType,Cu as compact,le as compactKeys,Tu as compactMap,d as compactMapArray,w as compactMapAsyncArray,he as compactMapAsyncObject,ge as compactMapObject,rc as concurrent,ec as concurrentStatus,C as construct,rn as constructorName,bc as copyFolder,nt as countBy,tt as countKey,rt as countWithoutKey,vc as currentFile,Ac as currentPath,tr as curry,rr as curryRight,mr as debounce,zr as deduct,Vr as defProp,S as difference,Hr as divide,M as drop,T as dropRight,Xt as each,p as eachArray,m as eachAsyncArray,Dt as eachAsyncObject,Lt as eachObject,_ as eachRight,F as eachRightAsync,O as ensureArray,Xn as ensureBuffer,Ae as escapeRegex,ve as escapeRegexRegex,Rr as every,_u as everyArg,R as everyArray,P as everyAsyncArray,Mr as everyAsyncObject,Tr as everyObject,ur as falsy,Pu as filter,U as filterArray,N as filterAsyncArray,de as filterAsyncObject,pe as filterObject,ot as findIndex,et as findIndexCache,ut as findItem,D as first,L as flatten,$ as flattenDeep,Nu as flow,Zu as flowAsync,ku as flowAsyncRight,Du as flowRight,j as forEach,Zt as forEachAsync,qu as forMap,Vt as forOf,Wt as forOfAsync,Mu as forOfCompactMap,Su as forOfCompactMapAsync,_r as forOfEvery,Fr as forOfEveryAsync,Fu as forOfFilter,Ru as forOfFilterAsync,$r as forOfMap,Br as forOfMapAsync,Qt as generateLoop,H as get,ae as getEntries,$t as getFileExtension,Bt as getFilename,ht as getHighest,gt as getLowest,Pn as getNumberInsertIndex,qr as getPropDesc,kr as getPropNames,xr as getType,ho as getTypeName,pt as groupBy,Gu as has,X as hasAnyKeys,Ju as hasDot,Q as hasKeys,a as hasLength,Gr as hasProp,h as hasValue,no as htmlEntities,wr as ifInvoke,Wu as ifNotAssign,wu as ifValue,yr as inAsync,br as inSync,Kr as increment,dt as indexBy,Z as initial,qe as initialString,Le as insertInRange,k as intersection,Ku as interval,Hu as intervals,me as invert,mt as invoke,wt as invokeAsync,go as isArguments,I as isArray,$o as isArrayBuffer,Oo as isArrayBufferCall,Ao as isArrayLike,Kt as isAsync,Ht as isAsyncCall,jo as isBigInt,Eo as isBigIntCall,xo as isBoolean,Io as isBooleanCall,cn as isBuffer,un as isBufferCall,Bo as isChild,So as isCloneable,nn as isConstructor,tn as isConstructorFactory,en as isConstructorNameFactory,To as isDate,Mo as isDateCall,gu as isDeno,_o as isEmpty,sn as isEqual,Po as isF32,Ro as isF32Call,No as isF64,Uo as isF64Call,Fo as isFalse,mu as isFalsy,St as isFileCSS,Mt as isFileHTML,Tt as isFileJS,_t as isFileJSON,Lo as isFloat,zt as isFunction,Jt as isGenerator,Gt as isGeneratorCall,ko as isI16,Zo as isI16Call,Vo as isI32,qo as isI32Call,Jo as isI8,Go as isI8Call,Wo as isIterable,Ho as isKindAsync,wo as isMap,mo as isMapCall,fn as isMatchArray,we as isMatchObject,b as isNegative,pu as isNodejs,x as isNotArray,vt as isNotNumber,Et as isNotString,l as isNull,bt as isNumber,yt as isNumberCall,Mn as isNumberEqual,oe as isNumberInRange,ue as isNumberNotInRange,Ko as isParent,Y as isPlainObject,ie as isPositive,Qo as isPrimitive,zo as isPromise,be as isRegex,ye as isRegexCall,Xo as isRelated,nu as isSafeInt,Jr as isSame,tu as isSameType,qt as isSet,kt as isSetCall,At as isString,ru as isTrue,du as isTruthy,on as isTypeFactory,vo as isTypedArray,ou as isU16,eu as isU16Call,cu as isU32,uu as isU32Call,su as isU8,au as isU8C,fu as isU8CCall,iu as isU8Call,f as isUndefined,hu as isWeakMap,lu as isWeakMapCall,se as isZero,vu as jsonParse,Te as kebabCase,V as keys,ln as largest,hn as last,De as lowerCase,Cr as map,gn as mapArray,pn as mapAsyncArray,jr as mapAsyncObject,Ir as mapObject,dn as mapRightArray,mn as mapWhile,Xu as merge,nc as model,Qr as multiply,vr as negate,po as noValue,ir as noop,yu as notEqual,Ar as nthArg,Ut as objectAssign,fe as objectEntries,xe as objectSize,je as omit,Er as once,Dn as onlyUnique,Sr as over,Pr as overEvery,tc as pair,bn as partition,Ie as pick,It as pluck,jt as pluckObject,oc as promise,uc as propertyMatch,ne as randomFloat,Bn as randomInt,E as range,A as rangeDown,v as rangeUp,Ye as rawURLDecode,Ur as reArg,Ct as regexTestFactory,te as remainder,En as remove,jn as removeBy,Ge as replaceList,In as rest,Ve as restString,g as returnValue,xn as right,Ze as rightString,_n as sample,to as sanitize,cc as setKey,ic as setValue,Tn as shuffle,Rn as smallest,Re as snakeCase,ft as sortCollectionAlphabetically,Ot as sortCollectionAlphabeticallyReverse,lt as sortCollectionAscending,at as sortCollectionAscendingFilter,it as sortCollectionDescending,ct as sortCollectionDescendingFilter,yn as sortNumberAscending,An as sortNumberDescening,st as sortObjectsAlphabetically,xt as sortObjectsAlphabeticallyReverse,Ln as sortUnique,Au as stringify,fc as stubArray,cr as stubFalse,ac as stubObject,lc as stubString,or as stubTrue,wn as subtract,re as subtractAll,vn as subtractReverse,ee as sumAll,Un as take,Nn as takeRight,Nr as throttle,hr as timer,lr as timers,sr as times,hc as timesAsync,fr as timesMap,gc as timesMapAsync,Sn as toArray,z as toPath,pc as toggle,oo as tokenize,Je as truncate,We as truncateRight,er as truth,Qn as unZip,$e as unZipObject,kn as union,mc as uniqID,Zn as unique,qn as untilFalseArray,Vn as untilTrueArray,Ue as upperCase,so as upperFirst,ao as upperFirstAll,io as upperFirstLetter,fo as upperFirstOnly,lo as upperFirstOnlyAll,yc as virtualStorage,Gn as whileCompactMap,Jn as whileEachArray,Wn as whileMapArray,zn as without,uo as words,Dr as wrap,Hn as xor,Kn as zip,Oe as zipObject}; +import{readdir as n,stat as t,mkdir as r,copyFile as e}from"fs/promises";import o from"path";import{fileURLToPath as u}from"url";function c(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function i(n){return n.length=0,n}function s(n){return n.slice()}function f(n){return void 0===n}function a(n){return Boolean(n.length)}function l(n){return null===n}function h(n){return!f(n)&&!l(n)}function g(n){return n}function p(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const s=t.call(e,n,u,r,c,i,o);h(s)&&r.push(s)})):p(n,((n,u,c,i)=>{const s=t(n,u,r,c,i,e,o);h(s)&&r.push(s)})),r}async function m(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const u=await t(n,e,r,o);h(u)&&r.push(u)})),r}const{sign:y}=Math;function b(n){return-1===y(n)}function v(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function E(n,t,r=1,e=[]){return b(r)?e:n{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function M(n,t=1,r=n.length){return n.splice(t,r)}const T=(n,t=1,r=n.length)=>M(n,0,r-t);function _(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function F(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function R(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function N(n,t,r=[],e){return await m(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function D(n,t){return t?n.slice(0,t):n[0]}function L(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(O(t))),[]);return r}function Z(n){return n.slice(0,n.length-1)}function k(n,...t){return d(n,(n=>{if(R(t,(t=>t.includes(n))))return n}))}function q(n,t,r){if(!n)return;const e=n.length;if(h(r))for(let o=0;o(r=r[n],h(r)))),r}const Q=Object.hasOwn;function X(n,...t){if(n)return R(t,(t=>{const r=H(t);if(1===r.length)return Q(n,t);{const t=r.pop(),e=K(r,n);return!!e&&Q(e,t)}}))}function Y(n,...t){if(n)return Boolean(t.find((t=>{const r=H(t);if(1===r.length)return Q(n,t);{const t=r.pop(),e=K(r,n);return!!e&&Q(e,t)}})))}const nn=n=>!!h(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function tn(n,t){return n?.constructor===t||!1}function rn(n){return t=>tn(t,n)}function en(n){return n?.constructor?.name}function on(n){return t=>en(t)===n||!1}function un(n){return function(t,...r){return r?n(t)&&R(r,n):n(t)}}const cn=on("Buffer"),sn=un(cn),fn=(n,t)=>{if(n===t)return!0;if(sn(n))return n.equals(t);if(n.toString()===t.toString())if(nn(n)){const r=G(n);if(X(t,r))return R(r,(r=>fn(n[r],t[r])))}else if(I(n)&&n.length===t.length)return R(n,((n,r)=>fn(n,t[r])));return!1};function an(n,t){return n.length===t.length&&R(n,((n,r)=>fn(t[r],n)))}const ln=Math.max;function hn(n){return ln(...n)}function gn(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function pn(n,t,r=[],e,o){return h(e)?p(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):p(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function dn(n,t){const r=[];return await m(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function mn(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function wn(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function An(n,t){return t-n}function En(n){return n.sort(An)}function jn(n,t){let r=n.length;for(let e=0;er)return _n(n);if(1===t)return[n[Cn(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Nn(n,t=1){return n.slice(0,t)}function Dn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Ln(n,t,r){return r.indexOf(n)===t}function Zn(n,t,r){return n!==r[t-1]}function kn(n,t){return t?n.filter(Zn):n.filter(Ln)}function qn(...n){return kn($(n))}function Vn(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function Kn(...n){const t=C(Map),r=[];return 2===n.length?S(n[0],n[1]):(p(n,((n,r)=>{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Qn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Xn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Yn(n){return sn(n)&&n||h(n)&&Buffer.from(n)||Buffer.alloc(0)}function nt(n){return n.fill(0),n}function tt(n,t){const r={};let e;return p(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function rt(n,t){let r=0;return p(n,(n=>{n[t]&&r++})),r}function et(n,t){let r=0;return p(n,(n=>{n[t]||r++})),r}function ot(n,t,r,e,o){if(n[o]===e)return!0}function ut(n,t,r="id"){const e=n.findIndex(((n,e)=>ot(n,0,0,t,r)));return-1!==e&&e}function ct(n,t,r="id"){const e=n.find(((n,e)=>ot(n,0,0,t,r)));return-1!==e&&e}function it(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function st(n,t="id",r){return n.sort(((n,e)=>it(n,e,t,r)))}function ft(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function at(n,t="id",r){return n.sort(((n,e)=>ft(n,e,t,r)))}function lt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function ht(n,t="id",r){return n.sort(((n,e)=>lt(n,e,t,r)))}function gt(n,t="id"){return ht(n,t)[0]}function pt(n,t){return st(n,t,!1)[0]}function dt(n,t){const r={};return p(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function mt(n,t="id"){const r={};return p(n,(n=>{r[n[t]]=n})),r}function wt(n,t,r,e){return pn(n,e?(n,o)=>n[t].call(e,r):(n,e)=>n[t](r))}function yt(n,t,r,e){return dn(n,e?n=>n[t].call(e,r):async n=>n[t](r))}const bt=on("Number"),vt=un(bt);function At(n){return!vt(n)}const Et=rn(String);function jt(n){return!Et(n)}function It(n,t){if(n)return Et(t)?n[t]:pn(t,(t=>n[t]))}function xt(n,t){return pn(n,(n=>It(n,t)))}function Ot(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function $t(n,t="id",r){return n.sort(((n,e)=>Ot(n,e,t,r)))}function Bt(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function Ct(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function St(n){return t=>!!h(t)&&n.test(t)}const Mt=St(/\.css$/),Tt=St(/\.html$/),_t=St(/\.js$/),Ft=St(/\.json$/);function Rt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function Pt(n,t){return(...r)=>n(...r.splice(0,t))}function Ut(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Nt=Object.assign;function Dt(n,...t){if(h(n))return Nt(n,...t)}const Lt=async(n,t,r,e)=>{if(!n)return;const o=G(n);return h(r)?await m(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await m(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Zt(n,t,r,e){if(!n)return;const o=G(n);return h(r)?p(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):p(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function kt(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!h(n)&&n instanceof Function,Kt=on("AsyncFunction"),Qt=un(Kt);function Xt(n,t,r,e,o,u){return(c,i,s,f,a)=>{let l;const g=Qt(i);if(h(c)&&i)return l=I(c)?g?t:n:nn(c)||Ht(c)?g?e:r:o?g?u:o:Wt(c)?u:g?e:r,l(c,i,s,f,a)}}const Yt=Xt(p,m,Zt,Lt,Gt,zt);class nr{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Yt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function tr(n){return C(nr,[n])}function rr(n,t=n.length){const r=[],e=(...o)=>{if(r.push(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}function er(n,t=n.length){const r=[],e=(...o)=>{if(r.unshift(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}const or=!0,ur=()=>or,cr=!1,ir=()=>cr,sr=()=>{};function fr(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,or),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const hr=C(lr);function gr(n,t){return hr.set(n,t)}function pr(){fr(setTimeout(sr,0),(n=>{hr.remove(n)}))}const dr=Reflect.apply;function mr(n,t,r){if(Ht(n))return dr(n,t,r)}function wr(n,t){function r(...n){r.id!==cr&&hr.remove(r.id),r.id=gr((()=>{r.callable(...n),r.id=cr}),t)}return r.id=cr,r.callable=n.bind(r),r.clear=()=>{r.id!==cr&&(hr.remove(r.id),r.id=cr)},r}function yr(n,...t){if(Ht(n))return n(...t)}async function br(n,t){const r=n.length;for(let e=0;eYt(n,(n=>{n(t)}));function Ar(n){return(...t)=>!n(...t)}function Er(n=0){return(...t)=>t[n]}const jr=n=>{let t;return(...r)=>(h(t)||(t=n(...r)),t)};async function Ir(n,t,r={}){if(n)return await Lt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function xr(n,t,r={},e,o){if(n)return h(e)?Zt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Zt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function Or(n){return n?.constructor}function $r(n,t=[]){const r=Or(n);return r===Function&&"function"===r.name?function(){}:C(r,t)}function Br(n,t=g,r){const e=r||$r(n);if(I(n)||Vt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=Ht(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Cr(n,t=g,r,e){if(Wt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||$r(n);if(I(n)||Vt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=Ht(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const Sr=Xt(pn,dn,xr,Ir,Br,Cr);function Mr(n){return(...t)=>Sr(n,(n=>n(...t)))}async function Tr(n,t){if(!n)return;return P(G(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function _r(n,t){if(!n)return;return R(G(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function Fr(n,t=g){if(I(n)||Vt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Rr(n,t=g,r){if(Wt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(I(n)||Vt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Pr=Xt(R,P,_r,Tr,Fr,Rr);function Ur(n){return t=>Pr(n,(n=>n(t)))}function Nr(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Dr(n,t){function r(...n){r.id?r.shouldThrottle=or:(r.callable(...n),r.id=gr((()=>{r.shouldThrottle&&r.callable(...n),r.id=cr}),t))}return r.id=cr,r.callable=n.bind(r),r.clear=()=>{hr.remove(r.id),r.id=cr},r}function Lr(n,t){return(...r)=>t(n,...r)}const Zr=Function.prototype;function kr(n){return Zr.call.bind(n)}const qr=Object.getOwnPropertyNames,Vr=Object.getOwnPropertyDescriptor,Gr=Object.defineProperty,Jr=kr(Object.hasOwnProperty),Wr=Object.is;function zr(n,t){return n+t}function Hr(n){return n-1}function Kr(n,t){return n/t}function Qr(n){return n+1}function Xr(n,t){return n*t}function Yr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:ne}=Math;function te(n,t=0){return ne()*(n-t)+t}function re(n,t){return n%t}function ee(n){return n.reduce(((n,t)=>n-t),0)}function oe(n){return n.reduce(((n,t)=>n+t),0)}function ue(n,t,r){return n>t&&nr}const{sign:ie}=Math;function se(n){return 1===ie(n)}function fe(n){return 0===n}const ae=Object.entries;function le(n){if(h(n))return ae(n)}function he(n){const t=[];return Zt(n,((n,r)=>{h(n)&&t.push(r)})),t}async function ge(n,t=g,r={}){return await Lt(n,(async(n,e,o,u,c)=>{const i=await t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function pe(n,t=g,r={}){return Zt(n,((n,e,o,u,c)=>{const i=t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function de(n,t,r={}){return Zt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function me(n,t,r={}){return await Lt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function we(n,t={}){if(n)return Zt(n,((n,r)=>{t[n]=r})),t}const ye=(n,t)=>{if(n===t)return!0;const r=G(n),e=G(t);return r.length===e.length&&R(r,(r=>n[r]===t[r]))},be=on("RegExp"),ve=un(be),Ae=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Ee(n){return n.replace(Ae,"\\$&")}function je(n,t){return t?je(pn(n,Ee)):RegExp(n.join("|"))}function Ie(n,t){if(n){if(I(t)){const r=je(t);return de(n,((n,t)=>!r.test(t)))}if(ve(t))return de(n,((n,r)=>!t.test(r)));if(Et(t))return de(n,((n,r)=>r!==t));if(vt(t)){const r=t.toString();return de(n,((n,t)=>t!==r))}return Ht(t)?de(n,((n,r)=>!t(n,r))):void 0}}const xe=(n,t,r={})=>{if(n)return p(t,(t=>{r[t]=n[t]})),r};function Oe(n){if(n)return G(n).length}const $e=(n,t)=>{const r={};return p(n,((n,e)=>{r[n]=t[e]})),r},Be=n=>{const t=[],r=[];return Zt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Ce=/[ _-]+/g;function Se(n){let t="";return n.replace(Ce," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const Me=/[ _-]+/g,Te=/[ ]+/g;function _e(n){return n.replace(/([A-Z]+)/g," $1").replace(Me," ").trim().toLowerCase().replace(Te,"-")}const Fe=/[ _-]+/g,Re=/[ ]+/g;function Pe(n){return n.replace(/([A-Z]+)/g," $1").replace(Fe," ").trim().toLowerCase().replace(Re,"_")}const Ue=/[ _-]+/g;function Ne(n){return n.replace(/([A-Z]+)/g," $1").replace(Ue," ").trim().toUpperCase()}const De=/[ _-]+/g;function Le(n){return n.replace(/([A-Z]+)/g," $1").replace(De," ").trim().toLowerCase()}function Ze(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function ke(n,t=1){return n[n.length-t]}function qe(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function Ve(n,t=1){return n.slice(0,-1*t)}function Ge(n,t=1){return n.substring(t)}function Je(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function We(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function ze(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const He=/%(?![\da-f]{2})/gi,Ke=/&/g,Qe=//g,Ye=/"/g;function no(n){return decodeURIComponent(n.replace(He,(()=>"%25")))}function to(n){return n.replace(Ke,"&").replace(Qe,"<").replace(Xe,">").replace(Ye,""")}function ro(n){return to(no(n))}const eo=/\S+/g,oo=/\w+/g;function uo(n){return n.match(eo)||[]}function co(n){return n.match(oo)||[]}const io=/\w+/g;function so(n){return n[0].toUpperCase()}function fo(n){return so(n)+Ge(n)}function ao(n){return so(n)+Ge(n).toLowerCase()}function lo(n){return n.replace(io,(n=>fo(n)))}function ho(n){return n.replace(io,(n=>ao(n)))}function go(n){return Or(n)?.name}function po(n){return!!h(n)&&"[object Arguments]"===n.toString()}function mo(n){return!h(n)}const wo=on("Map"),yo=un(wo),bo=/Array/,vo="Array";function Ao(n){if(n){const t=go(n);if(bo.test(t)&&t!==vo)return!0}return!1}function Eo(n,t){if(mo(n)||Ht(n))return!1;if(I(n)||Ao(n))return!0;const r=n.length;if(!mo(r)||!vt(r)||r<0)return!1;if(t){const t=G(n);return!!t&&Pr(t,((n,t)=>t>=0&&vt(t)))}return!0}const jo=on("BigInt"),Io=un(jo),xo=on("Boolean"),Oo=un(xo),$o=on("ArrayBuffer"),Bo=un($o);function Co(n,t){return!(!n||!t)&&n instanceof t}const So=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function Mo(n){if(h(n)){const t=n?.constructor?.name;return So.test(t)}return!1}const To=on("Date"),_o=un(To);function Fo(n){return Et(n)||I(n)?!a(n):nn(n)?!Oe(n):!h(n)}function Ro(n){return!1===n}const Po=on("Float32Array"),Uo=un(Po),No=on("Float64Array"),Do=un(No),{isInteger:Lo}=Number,Zo=Lo,ko=on("Int16Array"),qo=un(ko),Vo=on("Int32Array"),Go=un(Vo),Jo=on("Int8Array"),Wo=un(Jo);function zo(n){return h(n)&&"function"==typeof n[Symbol.iterator]}function Ho(n){return!!n&&n instanceof Promise}function Ko(n){return!!n&&(Ho(n)||Qt(n)||Wt(n))}function Qo(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Xo(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Yo(n,t){return!mo(n)&&!mo(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:nu}=Number,tu=nu;function ru(n,t){const r=Or(n),e=Or(t);return r===e&&r.name===e.name}function eu(n){return!0===n}const ou=on("Uint16Array"),uu=un(ou),cu=on("Uint32Array"),iu=un(cu),su=on("Uint8Array"),fu=un(su),au=on("Uint8ClampedArray"),lu=un(au),hu=on("WeakMap"),gu=un(hu),pu=void 0!==globalThis.Deno,du=void 0!==globalThis.process&&process.versions&&process.versions.node;function mu(n,t=!0){return Boolean(n)&&t}function wu(n,t=!0){return!1===Boolean(n)&&t}function yu(n,t,r,e){if(h(n)){if(Ht(t))return r?mr(t,r,e):t(...e);if(nn(t))return t[r]=n,t}}function bu(n,t){return Ro(fn(n,t))}const vu=JSON;function Au(n,t){if(n)return vu.parse(n,t)}const Eu=vu.stringify;function ju(n,t,r){const e=globalThis.options||r;let o;return Ht(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Eu(n)}\n\t\tExpected: ${Eu(t)}`,e)}async function Iu(n,t,r){const e=await n;return!(Ht(t)&&!1===await t(e,r))&&!bu(e,t)||ju(e,t,r)}function xu(n,t,r){if(Ko(n)||Ko(t))return Iu(n,t,r);return!(Ht(t)&&!1===t(n,r))&&!bu(n,t)||ju(n,t,r)}function Ou(n,t,r){const e=Sr(n,(n=>Ht(n)?n.bind(t):n));return r?Dt(r,e):e}function $u(n){if(n){if(sn(n))return nt(n);if(I(n))return i(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const Bu=globalThis.structuredClone;function Cu(n){return Bu(n)}function Su(n){if(nn(n)){const t=G(n),r=t.length,e={};for(let o=0;omu(n)))}async function Mu(n,t=g,r,e){if(Wt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);h(e)&&r.push(e)}return r}const o=r||$r(n);if(I(n)||Vt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);h(u)&&e(u)}return o}const u=Ht(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);h(c)&&(u?o.set(r,c):o[r]=c)}return o}function Tu(n,t=g,r){const e=r||$r(n);if(I(n)||Vt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);h(u)&&o(u)}return e}const o=Ht(e.set);for(const[r,u]of n){const c=t(u,r,e,n);h(c)&&(o?e.set(r,c):e[r]=c)}return e}const _u=Xt(d,w,pe,ge,Tu,Mu);function Fu(...n){return Qt(n[0])?async function(...t){return Pr(n,(async n=>Pr(t,(async t=>n(t)))))}:function(...t){return Pr(n,(n=>Pr(t,(t=>n(t)))))}}function Ru(n,t=g,r){const e=r||$r(n);if(I(n)||Vt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=Ht(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Pu(n,t=g,r,e){if(Wt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||$r(n);if(I(n)||Vt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=Ht(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Uu=Xt(U,N,de,me,Ru,Pu);function Nu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Du=Nu(p),Lu=Nu(_);function Zu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const ku=Zu(m),qu=Zu(F);function Vu(n,t){const r=$r(n),e=r.push||r.add;if(e&&Ht(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else Ht(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function Gu(n,t){const r={};return p(n,((n,e)=>{r[t[e]]=n})),r}function Ju(n,t,r){if(mo(n)||mo(t))return!1;if(Et(n))return Et(t)?n.includes(t,r):ve(t)?t.test(n):Ht(t)?Boolean(t(n)):Pr(t,(t=>Boolean(Ju(n,t))));if(I(n)){if(Et(t))return n.includes(t,r);if(ve(t))return Pr(n,(n=>n.test(t)));if(I(t))return Pr(t,(t=>Boolean(Ju(n,t))))}return!1}const Wu=St(/\./),zu=(n,t,r)=>(t&&!h(n[t])&&(n[t]=r),n);class Hu{list=C(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,or),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const Ku=C(Hu);function Qu(n,t){return Ku.set(n,t)}function Xu(){fr(setTimeout(sr,0),(n=>{Ku.remove(n)}))}function Yu(n,...t){return Yt(t,(t=>{Yt(t,((t,r)=>{if(n[r]&&(nn(t)||I(t)||t.forEach))return Yu(n[r],t);n[r]=t}))})),n}class nc{static models={};constructor(n,t){h(t)?(Dt(this,t),this.modelName=n,nc.models.set(n,t)):Dt(this,n)}}function tc(n,t){return h(t)?C(nc,[n,t]):K(n,nc.models)}function rc(n,t){return[n,t]}function ec(n,t,r){const e=n.length,o=[];for(let u=0;uR(r,(r=>fn(n[r],t[r])));function ic(n,t,r){return t&&nn(n)||vt(t)&&I(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function sc(n,t,r){return vt(r)&&I(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class fc{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Zt(n,(t=>{n[t]=new fc(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new fc(r),!0)})}}const ac=()=>[],lc=()=>({}),hc=()=>"";async function gc(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const wc=C(mc);class yc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function bc(n){return new yc(n)}async function vc(u,c){const i=await n(u);return await m(i,(async n=>{const i=o.join(u,n);if((await t(i)).isDirectory()){const t=o.join(c,n.replace(u,""));await r(t,{recursive:!0}),await vc(i,t)}else await async function(n,t,r){const u=o.join(n,r),c=o.join(t,r);await e(u,c)}(u,c,n)})),!0}function Ac(n){return globalThis.__filename?__filename:u(n.url)}function Ec(n){return globalThis.__dirname?__dirname:o.dirname(u(n.url))}export{nr as Chain,Hu as Intervals,nc as Model,fc as Store,lr as Timers,mc as UniqID,yc as VirtualStorage,zr as add,Rt as after,mr as apply,je as arrayToRegex,Gu as arraysToObject,Pt as ary,xu as assert,Iu as assertAsync,Dt as assign,Ut as before,Ou as bindAll,kr as cacheNativeMethod,Yr as calcProgress,Se as camelCase,tr as chain,c as chunk,qe as chunkString,$u as clear,i as clearArray,nt as clearBuffer,Xu as clearIntervals,pr as clearTimers,Cu as clone,s as cloneArray,$r as cloneType,Su as compact,he as compactKeys,_u as compactMap,d as compactMapArray,w as compactMapAsyncArray,ge as compactMapAsyncObject,pe as compactMapObject,ec as concurrent,oc as concurrentStatus,C as construct,en as constructorName,vc as copyFolder,tt as countBy,rt as countKey,et as countWithoutKey,Ac as currentFile,Ec as currentPath,rr as curry,er as curryRight,wr as debounce,Hr as deduct,Gr as defProp,S as difference,Kr as divide,M as drop,T as dropRight,Yt as each,p as eachArray,m as eachAsyncArray,Lt as eachAsyncObject,Zt as eachObject,_ as eachRight,F as eachRightAsync,O as ensureArray,Yn as ensureBuffer,Ee as escapeRegex,Ae as escapeRegexRegex,Pr as every,Fu as everyArg,R as everyArray,P as everyAsyncArray,Tr as everyAsyncObject,_r as everyObject,cr as falsy,Uu as filter,U as filterArray,N as filterAsyncArray,me as filterAsyncObject,de as filterObject,ut as findIndex,ot as findIndexCache,ct as findItem,D as first,L as flatten,$ as flattenDeep,Du as flow,ku as flowAsync,qu as flowAsyncRight,Lu as flowRight,j as forEach,kt as forEachAsync,Vu as forMap,Gt as forOf,zt as forOfAsync,Tu as forOfCompactMap,Mu as forOfCompactMapAsync,Fr as forOfEvery,Rr as forOfEveryAsync,Ru as forOfFilter,Pu as forOfFilterAsync,Br as forOfMap,Cr as forOfMapAsync,Xt as generateLoop,K as get,le as getEntries,Bt as getFileExtension,Ct as getFilename,gt as getHighest,pt as getLowest,Un as getNumberInsertIndex,Vr as getPropDesc,qr as getPropNames,Or as getType,go as getTypeName,dt as groupBy,Ju as has,Y as hasAnyKeys,Wu as hasDot,X as hasKeys,a as hasLength,Jr as hasProp,h as hasValue,to as htmlEntities,yr as ifInvoke,zu as ifNotAssign,yu as ifValue,br as inAsync,vr as inSync,Qr as increment,mt as indexBy,Z as initial,Ve as initialString,Ze as insertInRange,k as intersection,Qu as interval,Ku as intervals,we as invert,q as invokeArray,wt as invokeCollection,yt as invokeCollectionAsync,po as isArguments,I as isArray,Bo as isArrayBuffer,$o as isArrayBufferCall,Eo as isArrayLike,Qt as isAsync,Kt as isAsyncCall,Io as isBigInt,jo as isBigIntCall,Oo as isBoolean,xo as isBooleanCall,sn as isBuffer,cn as isBufferCall,Co as isChild,Mo as isCloneable,tn as isConstructor,rn as isConstructorFactory,on as isConstructorNameFactory,_o as isDate,To as isDateCall,pu as isDeno,Fo as isEmpty,fn as isEqual,Uo as isF32,Po as isF32Call,Do as isF64,No as isF64Call,Ro as isFalse,wu as isFalsy,Mt as isFileCSS,Tt as isFileHTML,_t as isFileJS,Ft as isFileJSON,Zo as isFloat,Ht as isFunction,Wt as isGenerator,Jt as isGeneratorCall,qo as isI16,ko as isI16Call,Go as isI32,Vo as isI32Call,Wo as isI8,Jo as isI8Call,zo as isIterable,Ko as isKindAsync,yo as isMap,wo as isMapCall,an as isMatchArray,ye as isMatchObject,b as isNegative,du as isNodejs,x as isNotArray,At as isNotNumber,jt as isNotString,l as isNull,vt as isNumber,bt as isNumberCall,Tn as isNumberEqual,ue as isNumberInRange,ce as isNumberNotInRange,Qo as isParent,nn as isPlainObject,se as isPositive,Xo as isPrimitive,Ho as isPromise,ve as isRegex,be as isRegexCall,Yo as isRelated,tu as isSafeInt,Wr as isSame,ru as isSameType,Vt as isSet,qt as isSetCall,Et as isString,eu as isTrue,mu as isTruthy,un as isTypeFactory,Ao as isTypedArray,uu as isU16,ou as isU16Call,iu as isU32,cu as isU32Call,fu as isU8,lu as isU8C,au as isU8CCall,su as isU8Call,f as isUndefined,gu as isWeakMap,hu as isWeakMapCall,fe as isZero,Au as jsonParse,_e as kebabCase,G as keys,hn as largest,gn as last,Le as lowerCase,Sr as map,pn as mapArray,dn as mapAsyncArray,Ir as mapAsyncObject,xr as mapObject,mn as mapRightArray,wn as mapWhile,Yu as merge,tc as model,Xr as multiply,Ar as negate,mo as noValue,sr as noop,bu as notEqual,Er as nthArg,Nt as objectAssign,ae as objectEntries,Oe as objectSize,Ie as omit,jr as once,Ln as onlyUnique,Mr as over,Ur as overEvery,rc as pair,vn as partition,xe as pick,xt as pluck,It as pluckObject,uc as promise,cc as propertyMatch,te as randomFloat,Cn as randomInt,E as range,A as rangeDown,v as rangeUp,no as rawURLDecode,Nr as reArg,St as regexTestFactory,re as remainder,jn as remove,In as removeBy,Je as replaceList,xn as rest,Ge as restString,g as returnValue,On as right,ke as rightString,Fn as sample,ro as sanitize,ic as setKey,sc as setValue,_n as shuffle,Pn as smallest,Pe as snakeCase,at as sortCollectionAlphabetically,$t as sortCollectionAlphabeticallyReverse,ht as sortCollectionAscending,lt as sortCollectionAscendingFilter,st as sortCollectionDescending,it as sortCollectionDescendingFilter,bn as sortNumberAscending,En as sortNumberDescening,ft as sortObjectsAlphabetically,Ot as sortObjectsAlphabeticallyReverse,Zn as sortUnique,Eu as stringify,ac as stubArray,ir as stubFalse,lc as stubObject,hc as stubString,ur as stubTrue,yn as subtract,ee as subtractAll,An as subtractReverse,oe as sumAll,Nn as take,Dn as takeRight,Dr as throttle,gr as timer,hr as timers,fr as times,gc as timesAsync,ar as timesMap,pc as timesMapAsync,Mn as toArray,H as toPath,dc as toggle,uo as tokenize,We as truncate,ze as truncateRight,or as truth,Xn as unZip,Be as unZipObject,qn as union,wc as uniqID,kn as unique,Vn as untilFalseArray,Gn as untilTrueArray,Ne as upperCase,fo as upperFirst,lo as upperFirstAll,so as upperFirstLetter,ao as upperFirstOnly,ho as upperFirstOnlyAll,bc as virtualStorage,Jn as whileCompactMap,Wn as whileEachArray,zn as whileMapArray,Hn as without,co as words,Lr as wrap,Kn as xor,Qn as zip,$e as zipObject}; //# sourceMappingURL=index.js.map diff --git a/npm/package-lock.json b/npm/package-lock.json index 65a37af8..d6ce4680 100644 --- a/npm/package-lock.json +++ b/npm/package-lock.json @@ -1,12 +1,12 @@ { "name": "Acid", - "version": "3.0.63", + "version": "3.0.65", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "Acid", - "version": "3.0.63", + "version": "3.0.65", "license": "ISC", "bin": { "Acid": "index.js" diff --git a/npm/package.json b/npm/package.json index ac6d5c29..9e7501d3 100644 --- a/npm/package.json +++ b/npm/package.json @@ -1,6 +1,6 @@ { "name": "@universalweb/acid", - "version": "3.0.63", + "version": "3.0.65", "description": "Acidjs is a robust, modern, modular, & async focused Javascript utility library.", "keywords": [ "Acid", @@ -39,7 +39,7 @@ "module": "./module/index.js", "browser": "./browser.js", "bin": { - "Acid": "./index.js" + "@universalweb/acid": "./index.js" }, "publishConfig": { "access": "public" @@ -49,4 +49,4 @@ }, "company": "Universal Web", "readme": "README.md" -} +} \ No newline at end of file diff --git a/package/basic.js b/package/basic.js index 5c60b6b5..94a02001 100644 --- a/package/basic.js +++ b/package/basic.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function r(t){return void 0===t}function e(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!r(t)&&!o(t)}function c(t){return t}function u(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const a=n.call(e,t,c,r,u,s,o);i(a)&&r.push(a)})):u(t,((t,c,u,s)=>{const a=n(t,c,r,u,s,e,o);i(a)&&r.push(a)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const c=await n(t,e,r,o);i(c)&&r.push(c)})),r}const{sign:l}=Math;function h(t){return-1===l(t)}function p(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function y(t,n){return t.forEach(n),t}const d=Array.isArray;function m(t){return d(t)&&t||i(t)&&[t]||[]}function A(t){return t.flat(1/0)}const b=Reflect.construct;function w(t,n=[],r){const e=d(n)?n:[n];return r?b(t,e,r):b(t,e)}function v(...t){const n=w(Map),r=[];return u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function C(t,n=1,r=t.length){return t.splice(n,r)}function O(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function I(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function j(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function M(t,n,r=[],e){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const S=Object.keys;function R(t){if(t)return S(t)}const x=/\.|\[/,B=/]/g,N="";function T(t){return t.replace(B,N).split(x)}function U(t,n){if(!n)return!1;let r=n;return j(d(t)?t:T(t),(t=>(r=r[t],i(r)))),r}const P=Object.hasOwn;function k(t,...n){if(t)return j(n,(n=>{const r=T(n);if(1===r.length)return P(t,n);{const n=r.pop(),e=U(r,t);return!!e&&P(e,n)}}))}const $=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function D(t,n){return t?.constructor===n||!1}function L(t){return n=>D(n,t)}function q(t){return t?.constructor?.name}function V(t){return n=>q(n)===t||!1}function K(t){return function(n,...r){return r?t(n)&&j(r,t):t(n)}}const Z=V("Buffer"),_=K(Z),z=(t,n)=>{if(t===n)return!0;if(_(t))return t.equals(n);if(t.toString()===n.toString())if($(t)){const r=R(t);if(k(n,r))return j(r,(r=>z(t[r],n[r])))}else if(d(t)&&t.length===n.length)return j(t,((t,r)=>z(t,n[r])));return!1};const W=Math.max;function G(t,n,r=[],e,o){return i(e)?u(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):u(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function J(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function H(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function rt(t,n,r){if(i(t))return nt(t,n,r)}function et(t,n=t.length){if(t.length<=1)return rt(t);const r=rt(t);let e,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",r){return t.sort(((t,e)=>ft(t,e,n,r)))}function ht(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function pt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}const yt=V("Number"),dt=K(yt);const mt=L(String);function At(t,n){if(t)return mt(n)?t[n]:G(n,(n=>t[n]))}function bt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),Ot=wt(/\.js$/),It=wt(/\.json$/);const jt=Object.assign;function Ft(t,...n){if(i(t))return jt(t,...n)}const Et=async(t,n,r,e)=>{if(!t)return;const o=R(t);return i(r)?await a(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await a(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function Mt(t,n,r,e){if(!t)return;const o=R(t);return i(r)?u(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):u(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const St=V("Set"),Rt=K(St);function xt(t,n){if(Rt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Bt=V("GeneratorFunction"),Nt=K(Bt);async function Tt(t,n,r){if(Rt(t)){for(const r of t)await n(r,t);return t}if(Nt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const Ut=t=>!!i(t)&&t instanceof Function,Pt=V("AsyncFunction"),kt=K(Pt);function $t(t,n,r,e,o,c){return(u,s,a,f,l)=>{let h;const p=kt(s);if(i(u)&&s)return h=d(u)?p?n:t:$(u)||Ut(u)?p?e:r:o?p?c:o:Nt(u)?c:p?e:r,h(u,s,a,f,l)}}const Dt=$t(u,a,Mt,Et,xt,Tt);class Lt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Dt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,Vt=!1,Kt=()=>{};function Zt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const zt=w(_t);function Wt(t,n){return zt.set(t,n)}const Gt=Reflect.apply;function Jt(t,n,r){if(Ut(t))return Gt(t,n,r)}async function Ht(t,n,r={}){if(t)return await Et(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function Qt(t,n,r={},e,o){if(t)return i(e)?Mt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):Mt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function Xt(t){return t?.constructor}function Yt(t,n=[]){const r=Xt(t);return r===Function&&"function"===r.name?function(){}:w(r,n)}function tn(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Ut(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function nn(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const rn=$t(G,J,Qt,Ht,tn,nn);async function en(t,n){if(!t)return;return F(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function on(t,n){if(!t)return;return j(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function cn(t,n=c){if(d(t)||Rt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function un(t,n=c,r){if(Nt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(d(t)||Rt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const sn=$t(j,F,on,en,cn,un);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,pn=Object.defineProperty,gn=fn(Object.hasOwnProperty),yn=Object.is;const{random:dn}=Math;const{sign:mn}=Math;const An=Object.entries;async function bn(t,n=c,r={}){return await Et(t,(async(t,e,o,c,u)=>{const s=await n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function wn(t,n=c,r={}){return Mt(t,((t,e,o,c,u)=>{const s=n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function vn(t,n,r={}){return Mt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Cn(t,n,r={}){return await Et(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const On=V("RegExp"),In=K(On),jn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(jn,"\\$&")}function En(t,n){return n?En(G(t,Fn)):RegExp(t.join("|"))}function Mn(t){if(t)return R(t).length}const Sn=/[ _-]+/g;const Rn=/[ _-]+/g,xn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Tn=/[ _-]+/g;const Un=/[ _-]+/g;function Pn(t,n=1){return t.substring(n)}const kn=/%(?![\da-f]{2})/gi,$n=/&/g,Dn=//g,qn=/"/g;function Vn(t){return decodeURIComponent(t.replace(kn,(()=>"%25")))}function Kn(t){return t.replace($n,"&").replace(Dn,"<").replace(Ln,">").replace(qn,""")}const Zn=/\S+/g,_n=/\w+/g;const zn=/\w+/g;function Wn(t){return t[0].toUpperCase()}function Gn(t){return Wn(t)+Pn(t)}function Jn(t){return Wn(t)+Pn(t).toLowerCase()}function Hn(t){return Xt(t)?.name}function Qn(t){return!i(t)}const Xn=V("Map"),Yn=K(Xn),tr=/Array/,nr="Array";function rr(t){if(t){const n=Hn(t);if(tr.test(n)&&n!==nr)return!0}return!1}const er=V("BigInt"),or=K(er),ir=V("Boolean"),cr=K(ir),ur=V("ArrayBuffer"),sr=K(ur);const ar=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const fr=V("Date"),lr=K(fr);function hr(t){return!1===t}const pr=V("Float32Array"),gr=K(pr),yr=V("Float64Array"),dr=K(yr),{isInteger:mr}=Number,Ar=mr,br=V("Int16Array"),wr=K(br),vr=V("Int32Array"),Cr=K(vr),Or=V("Int8Array"),Ir=K(Or);function jr(t){return!!t&&t instanceof Promise}function Fr(t){return!!t&&(jr(t)||kt(t)||Nt(t))}const{isSafeInteger:Er}=Number,Mr=Er;const Sr=V("Uint16Array"),Rr=K(Sr),xr=V("Uint32Array"),Br=K(xr),Nr=V("Uint8Array"),Tr=K(Nr),Ur=V("Uint8ClampedArray"),Pr=K(Ur),kr=V("WeakMap"),$r=K(kr),Dr=void 0!==globalThis.Deno,Lr=void 0!==globalThis.process&&process.versions&&process.versions.node;function qr(t,n=!0){return Boolean(t)&&n}function Vr(t,n){return hr(z(t,n))}const Kr=JSON;const Zr=Kr.stringify;function _r(t,n,r){const e=globalThis.options||r;let o;return Ut(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Zr(t)}\n\t\tExpected: ${Zr(n)}`,e)}async function zr(t,n,r){const e=await t;return!(Ut(n)&&!1===await n(e,r))&&!Vr(e,n)||_r(e,n,r)}const Wr=globalThis.structuredClone;async function Gr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);i(e)&&r.push(e)}return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);i(c)&&e(c)}return o}const u=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i(c)&&(u?o.set(r,c):o[r]=c)}return o}function Jr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);i(c)&&o(c)}return e}const o=Ut(e.set);for(const[r,c]of t){const u=n(c,r,e,t);i(u)&&(o?e.set(r,u):e[r]=u)}return e}const Hr=$t(s,f,wn,bn,Jr,Gr);function Qr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Ut(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function Xr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Ut(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const Yr=$t(E,M,vn,Cn,Qr,Xr);function te(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const ne=te(u),re=te(O);function ee(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const oe=ee(a),ie=ee(I);const ce=wt(/\./);class ue{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const se=w(ue);class ae{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,ae.models.set(t,n)):Ft(this,t)}}class fe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Mt(t,(n=>{t[n]=new fe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new fe(r),!0)})}}class le{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const he=w(le);class pe{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Lt,t.Intervals=ue,t.Model=ae,t.Store=fe,t.Timers=_t,t.UniqID=le,t.VirtualStorage=pe,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Jt,t.arrayToRegex=En,t.arraysToObject=function(t,n){const r={};return u(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Fr(t)||Fr(n)?zr(t,n,r):!(Ut(n)&&!1===n(t,r))&&!Vr(t,n)||_r(t,n,r)},t.assertAsync=zr,t.assign=Ft,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=rn(t,(t=>Ut(t)?t.bind(n):t));return r?Ft(r,e):e},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Sn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Lt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(_(t))return st(t);if(d(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=st,t.clearIntervals=function(){Zt(setTimeout(Kt,0),(t=>{se.remove(t)}))},t.clearTimers=function(){Zt(setTimeout(Kt,0),(t=>{zt.remove(t)}))},t.clone=function(t){return Wr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.compact=function(t){if($(t)){const n=R(t),r=n.length,e={};for(let o=0;oqr(t)))},t.compactKeys=function(t){const n=[];return Mt(t,((t,r)=>{i(t)&&n.push(r)})),n},t.compactMap=Hr,t.compactMapArray=s,t.compactMapAsyncArray=f,t.compactMapAsyncObject=bn,t.compactMapObject=wn,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return u(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return u(t,(t=>{t[n]||r++})),r},t.curry=function(t,r=t.length){const e=[],o=(...i)=>{if(e.push(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.curryRight=function(t,r=t.length){const e=[],o=(...i)=>{if(e.unshift(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.debounce=function(t,n){function r(...t){r.id!==Vt&&zt.remove(r.id),r.id=Wt((()=>{r.callable(...t),r.id=Vt}),n)}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{r.id!==Vt&&(zt.remove(r.id),r.id=Vt)},r},t.deduct=function(t){return t-1},t.defProp=pn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,r=t.length)=>C(t,0,r-n),t.each=Dt,t.eachArray=u,t.eachAsyncArray=a,t.eachAsyncObject=Et,t.eachObject=Mt,t.eachRight=O,t.eachRightAsync=I,t.ensureArray=m,t.ensureBuffer=function(t){return _(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=jn,t.every=sn,t.everyArg=function(...t){return kt(t[0])?async function(...n){return sn(t,(async t=>sn(n,(async n=>t(n)))))}:function(...n){return sn(t,(t=>sn(n,(n=>t(n)))))}},t.everyArray=j,t.everyAsyncArray=F,t.everyAsyncObject=en,t.everyObject=on,t.falsy=Vt,t.filter=Yr,t.filterArray=E,t.filterAsyncArray=M,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=at,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(m(n))),[]);return r},t.flattenDeep=A,t.flow=ne,t.flowAsync=oe,t.flowAsyncRight=ie,t.flowRight=re,t.forEach=y,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else Ut(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=xt,t.forOfAsync=Tt,t.forOfCompactMap=Jr,t.forOfCompactMapAsync=Gr,t.forOfEvery=cn,t.forOfEveryAsync=un,t.forOfFilter=Qr,t.forOfFilterAsync=Xr,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=$t,t.get=U,t.getEntries=function(t){if(i(t))return An(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return gt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return j(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Hn,t.groupBy=function(t,n){const r={};return u(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(Qn(n)||Qn(r))return!1;if(mt(n))return mt(r)?n.includes(r,e):In(r)?r.test(n):Ut(r)?Boolean(r(n)):sn(r,(r=>Boolean(t(n,r))));if(d(n)){if(mt(r))return n.includes(r,e);if(In(r))return sn(n,(t=>t.test(r)));if(d(r))return sn(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=T(n);if(1===r.length)return P(t,n);{const n=r.pop(),e=U(r,t);return!!e&&P(e,n)}})))},t.hasDot=ce,t.hasKeys=k,t.hasLength=e,t.hasProp=gn,t.hasValue=i,t.htmlEntities=Kn,t.ifInvoke=function(t,...n){if(Ut(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!i(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(i(t)){if(Ut(n))return r?Jt(n,r,e):n(...e);if($(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eDt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return u(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return s(t,(t=>{if(j(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return se.set(t,n)},t.intervals=se,t.invert=function(t,n={}){if(t)return Mt(t,((t,r)=>{n[t]=r})),n},t.invoke=function(t,n,r){return G(t,((t,e)=>t[n](r,e)))},t.invokeAsync=function(t,n,r){return J(t,(async(t,e)=>t[n](r,e)))},t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=d,t.isArrayBuffer=sr,t.isArrayBufferCall=ur,t.isArrayLike=function(t,n){if(Qn(t)||Ut(t))return!1;if(d(t)||rr(t))return!0;const r=t.length;if(!Qn(r)||!dt(r)||r<0)return!1;if(n){const n=R(t);return!!n&&sn(n,((t,n)=>n>=0&&dt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=Pt,t.isBigInt=or,t.isBigIntCall=er,t.isBoolean=cr,t.isBooleanCall=ir,t.isBuffer=_,t.isBufferCall=Z,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return ar.test(n)}return!1},t.isConstructor=D,t.isConstructorFactory=L,t.isConstructorNameFactory=V,t.isDate=lr,t.isDateCall=fr,t.isDeno=Dr,t.isEmpty=function(t){return mt(t)||d(t)?!e(t):$(t)?!Mn(t):!i(t)},t.isEqual=z,t.isF32=gr,t.isF32Call=pr,t.isF64=dr,t.isF64Call=yr,t.isFalse=hr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=Ot,t.isFileJSON=It,t.isFloat=Ar,t.isFunction=Ut,t.isGenerator=Nt,t.isGeneratorCall=Bt,t.isI16=wr,t.isI16Call=br,t.isI32=Cr,t.isI32Call=vr,t.isI8=Ir,t.isI8Call=Or,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Fr,t.isMap=Yn,t.isMapCall=Xn,t.isMatchArray=function(t,n){return t.length===n.length&&j(t,((t,r)=>z(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=R(t),e=R(n);return r.length===e.length&&j(r,(r=>t[r]===n[r]))},t.isNegative=h,t.isNodejs=Lr,t.isNotArray=function(t){return!d(t)},t.isNotNumber=function(t){return!dt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=dt,t.isNumberCall=yt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=$,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=jr,t.isRegex=In,t.isRegexCall=On,t.isRelated=function(t,n){return!Qn(t)&&!Qn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=Mr,t.isSame=yn,t.isSameType=function(t,n){const r=Xt(t),e=Xt(n);return r===e&&r.name===e.name},t.isSet=Rt,t.isSetCall=St,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=qr,t.isTypeFactory=K,t.isTypedArray=rr,t.isU16=Rr,t.isU16Call=Sr,t.isU32=Br,t.isU32Call=xr,t.isU8=Tr,t.isU8C=Pr,t.isU8CCall=Ur,t.isU8Call=Nr,t.isUndefined=r,t.isWeakMap=$r,t.isWeakMapCall=kr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return Kr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Rn," ").trim().toLowerCase().replace(xn,"-")},t.keys=R,t.largest=function(t){return W(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Un," ").trim().toLowerCase()},t.map=rn,t.mapArray=G,t.mapAsyncArray=J,t.mapAsyncObject=Ht,t.mapObject=Qt,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{Dt(r,((r,e)=>{if(n[e]&&($(r)||d(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return i(n)?w(ae,[t,n]):U(t,ae.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Qn,t.noop=Kt,t.notEqual=Vr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=jt,t.objectEntries=An,t.objectSize=Mn,t.omit=function(t,n){if(t){if(d(n)){const r=En(n);return vn(t,((t,n)=>!r.test(n)))}if(In(n))return vn(t,((t,r)=>!n.test(r)));if(mt(n))return vn(t,((t,r)=>r!==n));if(dt(n)){const r=n.toString();return vn(t,((t,n)=>n!==r))}return Ut(n)?vn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(i(n)||(n=t(...r)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>rn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>sn(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[s(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return u(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return G(t,(t=>At(t,n)))},t.pluckObject=At,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=R(t))=>j(r,(r=>z(t[r],n[r]))),t.randomFloat=function(t,n=0){return dn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,r=1,e=[]){return h(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return et(t);if(1===n)return[t[tt(r-1,0)]];const e=[],o={};let i,c=0;for(;cht(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>bt(t,e,n,r)))},t.sortCollectionAscending=gt,t.sortCollectionAscendingFilter=pt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(H)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=bt,t.sortUnique=ct,t.stringify=Zr,t.stubArray=()=>[],t.stubFalse=()=>Vt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=H,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=qt:(r.callable(...t),r.id=Wt((()=>{r.shouldThrottle&&r.callable(...t),r.id=Vt}),n))}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{zt.remove(r.id),r.id=Vt},r},t.timer=Wt,t.timers=zt,t.times=Zt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return Mt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ut(A(t))},t.uniqID=he,t.unique=ut,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eGn(t)))},t.upperFirstLetter=Wn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(zn,(t=>Jn(t)))},t.virtualStorage=function(t){return new pe(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(_n)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=w(Map),r=[];return 2===t.length?v(t[0],t[1]):(u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return u(t,((t,e)=>{r[t]=n[e]})),r}})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function r(t){return void 0===t}function e(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!r(t)&&!o(t)}function c(t){return t}function u(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const a=n.call(e,t,c,r,u,s,o);i(a)&&r.push(a)})):u(t,((t,c,u,s)=>{const a=n(t,c,r,u,s,e,o);i(a)&&r.push(a)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(i(r))for(let i=0;i{const c=await n(t,e,r,o);i(c)&&r.push(c)})),r}const{sign:l}=Math;function h(t){return-1===l(t)}function p(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function y(t,n){return t.forEach(n),t}const d=Array.isArray;function m(t){return d(t)&&t||i(t)&&[t]||[]}function A(t){return t.flat(1/0)}const b=Reflect.construct;function w(t,n=[],r){const e=d(n)?n:[n];return r?b(t,e,r):b(t,e)}function v(...t){const n=w(Map),r=[];return u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function C(t,n=1,r=t.length){return t.splice(n,r)}function O(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function I(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function j(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function M(t,n,r=[],e){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const S=Object.keys;function R(t){if(t)return S(t)}const x=/\.|\[/,B=/]/g,N="";function T(t){return t.replace(B,N).split(x)}function U(t,n){if(!n)return!1;let r=n;return j(d(t)?t:T(t),(t=>(r=r[t],i(r)))),r}const k=Object.hasOwn;function P(t,...n){if(t)return j(n,(n=>{const r=T(n);if(1===r.length)return k(t,n);{const n=r.pop(),e=U(r,t);return!!e&&k(e,n)}}))}const $=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function D(t,n){return t?.constructor===n||!1}function L(t){return n=>D(n,t)}function q(t){return t?.constructor?.name}function V(t){return n=>q(n)===t||!1}function K(t){return function(n,...r){return r?t(n)&&j(r,t):t(n)}}const Z=V("Buffer"),_=K(Z),z=(t,n)=>{if(t===n)return!0;if(_(t))return t.equals(n);if(t.toString()===n.toString())if($(t)){const r=R(t);if(P(n,r))return j(r,(r=>z(t[r],n[r])))}else if(d(t)&&t.length===n.length)return j(t,((t,r)=>z(t,n[r])));return!1};const W=Math.max;function G(t,n,r=[],e,o){return i(e)?u(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):u(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function J(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function H(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function rt(t,n,r){if(i(t))return nt(t,n,r)}function et(t,n=t.length){if(t.length<=1)return rt(t);const r=rt(t);let e,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",r){return t.sort(((t,e)=>ft(t,e,n,r)))}function ht(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function pt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}const yt=V("Number"),dt=K(yt);const mt=L(String);function At(t,n){if(t)return mt(n)?t[n]:G(n,(n=>t[n]))}function bt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),Ot=wt(/\.js$/),It=wt(/\.json$/);const jt=Object.assign;function Ft(t,...n){if(i(t))return jt(t,...n)}const Et=async(t,n,r,e)=>{if(!t)return;const o=R(t);return i(r)?await a(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await a(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function Mt(t,n,r,e){if(!t)return;const o=R(t);return i(r)?u(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):u(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const St=V("Set"),Rt=K(St);function xt(t,n){if(Rt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Bt=V("GeneratorFunction"),Nt=K(Bt);async function Tt(t,n,r){if(Rt(t)){for(const r of t)await n(r,t);return t}if(Nt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const Ut=t=>!!i(t)&&t instanceof Function,kt=V("AsyncFunction"),Pt=K(kt);function $t(t,n,r,e,o,c){return(u,s,a,f,l)=>{let h;const p=Pt(s);if(i(u)&&s)return h=d(u)?p?n:t:$(u)||Ut(u)?p?e:r:o?p?c:o:Nt(u)?c:p?e:r,h(u,s,a,f,l)}}const Dt=$t(u,a,Mt,Et,xt,Tt);class Lt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Dt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,Vt=!1,Kt=()=>{};function Zt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const zt=w(_t);function Wt(t,n){return zt.set(t,n)}const Gt=Reflect.apply;function Jt(t,n,r){if(Ut(t))return Gt(t,n,r)}async function Ht(t,n,r={}){if(t)return await Et(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function Qt(t,n,r={},e,o){if(t)return i(e)?Mt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):Mt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function Xt(t){return t?.constructor}function Yt(t,n=[]){const r=Xt(t);return r===Function&&"function"===r.name?function(){}:w(r,n)}function tn(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Ut(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function nn(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const rn=$t(G,J,Qt,Ht,tn,nn);async function en(t,n){if(!t)return;return F(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function on(t,n){if(!t)return;return j(R(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function cn(t,n=c){if(d(t)||Rt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function un(t,n=c,r){if(Nt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(d(t)||Rt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const sn=$t(j,F,on,en,cn,un);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,pn=Object.defineProperty,gn=fn(Object.hasOwnProperty),yn=Object.is;const{random:dn}=Math;const{sign:mn}=Math;const An=Object.entries;async function bn(t,n=c,r={}){return await Et(t,(async(t,e,o,c,u)=>{const s=await n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function wn(t,n=c,r={}){return Mt(t,((t,e,o,c,u)=>{const s=n(t,e,r,o,c,u);i(s)&&(r[e]=s)})),r}function vn(t,n,r={}){return Mt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Cn(t,n,r={}){return await Et(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const On=V("RegExp"),In=K(On),jn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(jn,"\\$&")}function En(t,n){return n?En(G(t,Fn)):RegExp(t.join("|"))}function Mn(t){if(t)return R(t).length}const Sn=/[ _-]+/g;const Rn=/[ _-]+/g,xn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Tn=/[ _-]+/g;const Un=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Pn=/%(?![\da-f]{2})/gi,$n=/&/g,Dn=//g,qn=/"/g;function Vn(t){return decodeURIComponent(t.replace(Pn,(()=>"%25")))}function Kn(t){return t.replace($n,"&").replace(Dn,"<").replace(Ln,">").replace(qn,""")}const Zn=/\S+/g,_n=/\w+/g;const zn=/\w+/g;function Wn(t){return t[0].toUpperCase()}function Gn(t){return Wn(t)+kn(t)}function Jn(t){return Wn(t)+kn(t).toLowerCase()}function Hn(t){return Xt(t)?.name}function Qn(t){return!i(t)}const Xn=V("Map"),Yn=K(Xn),tr=/Array/,nr="Array";function rr(t){if(t){const n=Hn(t);if(tr.test(n)&&n!==nr)return!0}return!1}const er=V("BigInt"),or=K(er),ir=V("Boolean"),cr=K(ir),ur=V("ArrayBuffer"),sr=K(ur);const ar=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const fr=V("Date"),lr=K(fr);function hr(t){return!1===t}const pr=V("Float32Array"),gr=K(pr),yr=V("Float64Array"),dr=K(yr),{isInteger:mr}=Number,Ar=mr,br=V("Int16Array"),wr=K(br),vr=V("Int32Array"),Cr=K(vr),Or=V("Int8Array"),Ir=K(Or);function jr(t){return!!t&&t instanceof Promise}function Fr(t){return!!t&&(jr(t)||Pt(t)||Nt(t))}const{isSafeInteger:Er}=Number,Mr=Er;const Sr=V("Uint16Array"),Rr=K(Sr),xr=V("Uint32Array"),Br=K(xr),Nr=V("Uint8Array"),Tr=K(Nr),Ur=V("Uint8ClampedArray"),kr=K(Ur),Pr=V("WeakMap"),$r=K(Pr),Dr=void 0!==globalThis.Deno,Lr=void 0!==globalThis.process&&process.versions&&process.versions.node;function qr(t,n=!0){return Boolean(t)&&n}function Vr(t,n){return hr(z(t,n))}const Kr=JSON;const Zr=Kr.stringify;function _r(t,n,r){const e=globalThis.options||r;let o;return Ut(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Zr(t)}\n\t\tExpected: ${Zr(n)}`,e)}async function zr(t,n,r){const e=await t;return!(Ut(n)&&!1===await n(e,r))&&!Vr(e,n)||_r(e,n,r)}const Wr=globalThis.structuredClone;async function Gr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);i(e)&&r.push(e)}return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);i(c)&&e(c)}return o}const u=Ut(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i(c)&&(u?o.set(r,c):o[r]=c)}return o}function Jr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);i(c)&&o(c)}return e}const o=Ut(e.set);for(const[r,c]of t){const u=n(c,r,e,t);i(u)&&(o?e.set(r,u):e[r]=u)}return e}const Hr=$t(s,f,wn,bn,Jr,Gr);function Qr(t,n=c,r){const e=r||Yt(t);if(d(t)||Rt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Ut(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function Xr(t,n=c,r,e){if(Nt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||Yt(t);if(d(t)||Rt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Ut(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const Yr=$t(E,M,vn,Cn,Qr,Xr);function te(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const ne=te(u),re=te(O);function ee(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const oe=ee(a),ie=ee(I);const ce=wt(/\./);class ue{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const se=w(ue);class ae{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,ae.models.set(t,n)):Ft(this,t)}}class fe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Mt(t,(n=>{t[n]=new fe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new fe(r),!0)})}}class le{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const he=w(le);class pe{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Lt,t.Intervals=ue,t.Model=ae,t.Store=fe,t.Timers=_t,t.UniqID=le,t.VirtualStorage=pe,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Jt,t.arrayToRegex=En,t.arraysToObject=function(t,n){const r={};return u(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Fr(t)||Fr(n)?zr(t,n,r):!(Ut(n)&&!1===n(t,r))&&!Vr(t,n)||_r(t,n,r)},t.assertAsync=zr,t.assign=Ft,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=rn(t,(t=>Ut(t)?t.bind(n):t));return r?Ft(r,e):e},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Sn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Lt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(_(t))return st(t);if(d(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=st,t.clearIntervals=function(){Zt(setTimeout(Kt,0),(t=>{se.remove(t)}))},t.clearTimers=function(){Zt(setTimeout(Kt,0),(t=>{zt.remove(t)}))},t.clone=function(t){return Wr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.compact=function(t){if($(t)){const n=R(t),r=n.length,e={};for(let o=0;oqr(t)))},t.compactKeys=function(t){const n=[];return Mt(t,((t,r)=>{i(t)&&n.push(r)})),n},t.compactMap=Hr,t.compactMapArray=s,t.compactMapAsyncArray=f,t.compactMapAsyncObject=bn,t.compactMapObject=wn,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return u(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return u(t,(t=>{t[n]||r++})),r},t.curry=function(t,r=t.length){const e=[],o=(...i)=>{if(e.push(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.curryRight=function(t,r=t.length){const e=[],o=(...i)=>{if(e.unshift(...i),e.length===r){const r=t(...e);return n(e),r}return o};return o},t.debounce=function(t,n){function r(...t){r.id!==Vt&&zt.remove(r.id),r.id=Wt((()=>{r.callable(...t),r.id=Vt}),n)}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{r.id!==Vt&&(zt.remove(r.id),r.id=Vt)},r},t.deduct=function(t){return t-1},t.defProp=pn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,r=t.length)=>C(t,0,r-n),t.each=Dt,t.eachArray=u,t.eachAsyncArray=a,t.eachAsyncObject=Et,t.eachObject=Mt,t.eachRight=O,t.eachRightAsync=I,t.ensureArray=m,t.ensureBuffer=function(t){return _(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=jn,t.every=sn,t.everyArg=function(...t){return Pt(t[0])?async function(...n){return sn(t,(async t=>sn(n,(async n=>t(n)))))}:function(...n){return sn(t,(t=>sn(n,(n=>t(n)))))}},t.everyArray=j,t.everyAsyncArray=F,t.everyAsyncObject=en,t.everyObject=on,t.falsy=Vt,t.filter=Yr,t.filterArray=E,t.filterAsyncArray=M,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=at,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>at(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(m(n))),[]);return r},t.flattenDeep=A,t.flow=ne,t.flowAsync=oe,t.flowAsyncRight=ie,t.flowRight=re,t.forEach=y,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else Ut(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=xt,t.forOfAsync=Tt,t.forOfCompactMap=Jr,t.forOfCompactMapAsync=Gr,t.forOfEvery=cn,t.forOfEveryAsync=un,t.forOfFilter=Qr,t.forOfFilterAsync=Xr,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=$t,t.get=U,t.getEntries=function(t){if(i(t))return An(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return gt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return j(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Hn,t.groupBy=function(t,n){const r={};return u(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(Qn(n)||Qn(r))return!1;if(mt(n))return mt(r)?n.includes(r,e):In(r)?r.test(n):Ut(r)?Boolean(r(n)):sn(r,(r=>Boolean(t(n,r))));if(d(n)){if(mt(r))return n.includes(r,e);if(In(r))return sn(n,(t=>t.test(r)));if(d(r))return sn(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=T(n);if(1===r.length)return k(t,n);{const n=r.pop(),e=U(r,t);return!!e&&k(e,n)}})))},t.hasDot=ce,t.hasKeys=P,t.hasLength=e,t.hasProp=gn,t.hasValue=i,t.htmlEntities=Kn,t.ifInvoke=function(t,...n){if(Ut(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!i(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(i(t)){if(Ut(n))return r?Jt(n,r,e):n(...e);if($(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eDt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return u(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return s(t,(t=>{if(j(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return se.set(t,n)},t.intervals=se,t.invert=function(t,n={}){if(t)return Mt(t,((t,r)=>{n[t]=r})),n},t.invokeArray=function(t,n,r){if(!t)return;const e=t.length;if(i(r))for(let o=0;ot[n].call(e,r):(t,e)=>t[n](r))},t.invokeCollectionAsync=function(t,n,r,e){return J(t,e?t=>t[n].call(e,r):async t=>t[n](r))},t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=d,t.isArrayBuffer=sr,t.isArrayBufferCall=ur,t.isArrayLike=function(t,n){if(Qn(t)||Ut(t))return!1;if(d(t)||rr(t))return!0;const r=t.length;if(!Qn(r)||!dt(r)||r<0)return!1;if(n){const n=R(t);return!!n&&sn(n,((t,n)=>n>=0&&dt(n)))}return!0},t.isAsync=Pt,t.isAsyncCall=kt,t.isBigInt=or,t.isBigIntCall=er,t.isBoolean=cr,t.isBooleanCall=ir,t.isBuffer=_,t.isBufferCall=Z,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return ar.test(n)}return!1},t.isConstructor=D,t.isConstructorFactory=L,t.isConstructorNameFactory=V,t.isDate=lr,t.isDateCall=fr,t.isDeno=Dr,t.isEmpty=function(t){return mt(t)||d(t)?!e(t):$(t)?!Mn(t):!i(t)},t.isEqual=z,t.isF32=gr,t.isF32Call=pr,t.isF64=dr,t.isF64Call=yr,t.isFalse=hr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=Ot,t.isFileJSON=It,t.isFloat=Ar,t.isFunction=Ut,t.isGenerator=Nt,t.isGeneratorCall=Bt,t.isI16=wr,t.isI16Call=br,t.isI32=Cr,t.isI32Call=vr,t.isI8=Ir,t.isI8Call=Or,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Fr,t.isMap=Yn,t.isMapCall=Xn,t.isMatchArray=function(t,n){return t.length===n.length&&j(t,((t,r)=>z(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=R(t),e=R(n);return r.length===e.length&&j(r,(r=>t[r]===n[r]))},t.isNegative=h,t.isNodejs=Lr,t.isNotArray=function(t){return!d(t)},t.isNotNumber=function(t){return!dt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=dt,t.isNumberCall=yt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=$,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=jr,t.isRegex=In,t.isRegexCall=On,t.isRelated=function(t,n){return!Qn(t)&&!Qn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=Mr,t.isSame=yn,t.isSameType=function(t,n){const r=Xt(t),e=Xt(n);return r===e&&r.name===e.name},t.isSet=Rt,t.isSetCall=St,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=qr,t.isTypeFactory=K,t.isTypedArray=rr,t.isU16=Rr,t.isU16Call=Sr,t.isU32=Br,t.isU32Call=xr,t.isU8=Tr,t.isU8C=kr,t.isU8CCall=Ur,t.isU8Call=Nr,t.isUndefined=r,t.isWeakMap=$r,t.isWeakMapCall=Pr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return Kr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Rn," ").trim().toLowerCase().replace(xn,"-")},t.keys=R,t.largest=function(t){return W(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Un," ").trim().toLowerCase()},t.map=rn,t.mapArray=G,t.mapAsyncArray=J,t.mapAsyncObject=Ht,t.mapObject=Qt,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{Dt(r,((r,e)=>{if(n[e]&&($(r)||d(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return i(n)?w(ae,[t,n]):U(t,ae.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Qn,t.noop=Kt,t.notEqual=Vr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=jt,t.objectEntries=An,t.objectSize=Mn,t.omit=function(t,n){if(t){if(d(n)){const r=En(n);return vn(t,((t,n)=>!r.test(n)))}if(In(n))return vn(t,((t,r)=>!n.test(r)));if(mt(n))return vn(t,((t,r)=>r!==n));if(dt(n)){const r=n.toString();return vn(t,((t,n)=>n!==r))}return Ut(n)?vn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(i(n)||(n=t(...r)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>rn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>sn(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[s(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return u(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return G(t,(t=>At(t,n)))},t.pluckObject=At,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=R(t))=>j(r,(r=>z(t[r],n[r]))),t.randomFloat=function(t,n=0){return dn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,r=1,e=[]){return h(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return et(t);if(1===n)return[t[tt(r-1,0)]];const e=[],o={};let i,c=0;for(;cht(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>bt(t,e,n,r)))},t.sortCollectionAscending=gt,t.sortCollectionAscendingFilter=pt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(H)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=bt,t.sortUnique=ct,t.stringify=Zr,t.stubArray=()=>[],t.stubFalse=()=>Vt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=H,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=qt:(r.callable(...t),r.id=Wt((()=>{r.shouldThrottle&&r.callable(...t),r.id=Vt}),n))}return r.id=Vt,r.callable=t.bind(r),r.clear=()=>{zt.remove(r.id),r.id=Vt},r},t.timer=Wt,t.timers=zt,t.times=Zt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return Mt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ut(A(t))},t.uniqID=he,t.unique=ut,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eGn(t)))},t.upperFirstLetter=Wn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(zn,(t=>Jn(t)))},t.virtualStorage=function(t){return new pe(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(_n)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=w(Map),r=[];return 2===t.length?v(t[0],t[1]):(u(t,((t,r)=>{u(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),y(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return u(t,((t,e)=>{r[t]=n[e]})),r}})); //# sourceMappingURL=basic.js.map diff --git a/package/browser.js b/package/browser.js index 4931347e..93bdd434 100644 --- a/package/browser.js +++ b/package/browser.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function e(t){return void 0===t}function r(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!e(t)&&!o(t)}function c(t){return t}function s(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const a=n.call(r,t,c,e,s,u,o);i(a)&&e.push(a)})):s(t,((t,c,s,u)=>{const a=n(t,c,e,s,u,r,o);i(a)&&e.push(a)})),e}async function a(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const c=await n(t,r,e,o);i(c)&&e.push(c)})),e}const{sign:l}=Math;function h(t){return-1===l(t)}function g(t,n,e,r){let o=t;for(;on;)r.push(o),o-=e;return r}function d(t,n){return t.forEach(n),t}const y=Array.isArray;function m(t){return y(t)&&t||i(t)&&[t]||[]}function b(t){return t.flat(1/0)}const A=Reflect.construct;function w(t,n=[],e){const r=y(n)?n:[n];return e?A(t,r,e):A(t,r)}function v(...t){const n=w(Map),e=[];return s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&0===t.parentIndex&&e.push(t.child)})),e}function C(t,n=1,e=t.length){return t.splice(n,e)}function I(t,n,e){if(!t)return;const r=t.length;for(let o=r-1;o>=0;o--)n(t[o],o,t,r,e);return t}async function O(t,n){if(!t)return;const e=t.length;for(let r=e-1;r>=0;r--)await n(t[r],r,t,e);return t}function E(t,n,e){if(!t)return;const r=t.length;for(let o=0;o{!0===n(t,o,e,i,c,r)&&e.push(t)})),e}async function j(t,n,e=[],r){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,e,i,c,r)&&e.push(t)})),e}const x=Object.keys;function M(t){if(t)return x(t)}const T=/\.|\[/,R=/]/g,B="";function N(t){return t.replace(R,B).split(T)}function L(t,n){if(!n)return!1;let e=n;return E(y(t)?t:N(t),(t=>(e=e[t],i(e)))),e}const $=Object.hasOwn;function k(t,...n){if(t)return E(n,(n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}}))}const D=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function U(t,n){return t?.constructor===n||!1}function P(t){return n=>U(n,t)}function q(t){return t?.constructor?.name}function z(t){return n=>q(n)===t||!1}function W(t){return function(n,...e){return e?t(n)&&E(e,t):t(n)}}const _=z("Buffer"),H=W(_),V=(t,n)=>{if(t===n)return!0;if(H(t))return t.equals(n);if(t.toString()===n.toString())if(D(t)){const e=M(t);if(k(n,e))return E(e,(e=>V(t[e],n[e])))}else if(y(t)&&t.length===n.length)return E(t,((t,e)=>V(t,n[e])));return!1};const Z=Math.max;function K(t,n,e=[],r,o){return i(r)?s(t,((t,i,c,s)=>{e[i]=n.call(r,t,i,e,c,s,o)})):s(t,((t,r,i,c)=>{e[r]=n(t,r,e,i,c,o)})),e}async function G(t,n){const e=[];return await a(t,(async(t,r,o)=>{e[r]=await n(t,r,o)})),e}function J(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function et(t,n,e){if(i(t))return nt(t,n,e)}function rt(t,n=t.length){if(t.length<=1)return et(t);const e=et(t);let r,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",e){return t.sort(((t,r)=>ft(t,r,n,e)))}function ht(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):o.localeCompare(i)}function gt(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i?o?oi?1:0:-1:1}function pt(t,n="id",e){return t.sort(((t,r)=>gt(t,r,n,e)))}const dt=z("Number"),yt=W(dt);const mt=P(String);function bt(t,n){if(t)return mt(n)?t[n]:K(n,(n=>t[n]))}function At(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),It=wt(/\.js$/),Ot=wt(/\.json$/);const Et=Object.assign;function Ft(t,...n){if(i(t))return Et(t,...n)}const St=async(t,n,e,r)=>{if(!t)return;const o=M(t);return i(e)?await a(o,((i,c,s,u)=>n.call(e,t[i],i,t,u,o,r))):await a(o,((e,i,c,s)=>n(t[e],e,t,s,o,r))),t};function jt(t,n,e,r){if(!t)return;const o=M(t);return i(e)?s(o,((o,i,c,s)=>{n.call(e,t[o],o,t,s,c,r)})):s(o,((e,o,i,c)=>{n(t[e],e,t,c,i,r)})),t}const xt=z("Set"),Mt=W(xt);function Tt(t,n){if(Mt(t)){for(const e of t)n(e,t);return t}for(const[e,r]of t)n(r,e,t);return t}const Rt=z("GeneratorFunction"),Bt=W(Rt);async function Nt(t,n,e){if(Mt(t)){for(const e of t)await n(e,t);return t}if(Bt(t))for await(const r of t(...e))await n(r,t);for(const[e,r]of t)await n(r,e,t);return t}const Lt=t=>!!i(t)&&t instanceof Function,$t=z("AsyncFunction"),kt=W($t);function Dt(t,n,e,r,o,c){return(s,u,a,f,l)=>{let h;const g=kt(u);if(i(s)&&u)return h=y(s)?g?n:t:D(s)||Lt(s)?g?r:e:o?g?c:o:Bt(s)?c:g?r:e,h(s,u,a,f,l)}}const Ut=Dt(s,a,jt,St,Tt,Nt);class Pt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Ut(t,((t,e)=>{n[e]=function(...e){return this.value=t.call(n,n.value,...e),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,zt=!1,Wt=()=>{};function _t(t,n){for(let e=0;e{t(),e.remove(r)}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Vt=w(Ht);function Zt(t,n){return Vt.set(t,n)}const Kt=Reflect.apply;function Gt(t,n,e){if(Lt(t))return Kt(t,n,e)}async function Jt(t,n,e={}){if(t)return await St(t,(async(t,r,o,i,c)=>{e[r]=await n(t,r,e,o,i,c)})),e}function Qt(t,n,e={},r,o){if(t)return i(r)?jt(t,((t,i,c,s,u)=>{e[i]=n.call(r,t,i,e,c,s,u,o)})):jt(t,((t,r,i,c,s)=>{e[r]=n(t,r,e,i,c,s,o)})),e}function Xt(t){return t?.constructor}function Yt(t,n=[]){const e=Xt(t);return e===Function&&"function"===e.name?function(){}:w(e,n)}function tn(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){o(n(e,r,t))}return r}const o=Lt(r.set);for(const[e,i]of t){const c=n(i,e,r,t);o?r.set(e,c):r[e]=c}return r}async function nn(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))e.push(await n(o,e,t));return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){r(await n(e,o,t))}return o}const i=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i?o.set(e,c):o[e]=c}return o}const en=Dt(K,G,Qt,Jt,tn,nn);async function rn(t,n){if(!t)return;return F(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function on(t,n){if(!t)return;return E(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function cn(t,n=c){if(y(t)||Mt(t))for(const e of t){if(!1===n(e,t))return!1}else for(const[e,r]of t){if(!1===n(r,e,t))return!1}return!0}async function sn(t,n=c,e){if(Bt(t))for await(const r of t(...e)){if(!1===await n(r,t))return!1}else if(y(t)||Mt(t))for(const e of t){if(!1===await n(e,t))return!1}else for(const[e,r]of t){if(!1===await n(r,e,t))return!1}return!0}const un=Dt(E,F,on,rn,cn,sn);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,gn=Object.defineProperty,pn=fn(Object.hasOwnProperty),dn=Object.is;const{random:yn}=Math;const{sign:mn}=Math;const bn=Object.entries;async function An(t,n=c,e={}){return await St(t,(async(t,r,o,c,s)=>{const u=await n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function wn(t,n=c,e={}){return jt(t,((t,r,o,c,s)=>{const u=n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function vn(t,n,e={}){return jt(t,((t,r,o,i,c)=>{!0===n(t,r,e,o,i,c)&&(e[r]=t)})),e}async function Cn(t,n,e={}){return await St(t,(async(t,r,o,i,c)=>{!0===await n(t,r,e,o,i,c)&&(e[r]=t)})),e}const In=z("RegExp"),On=W(In),En=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(En,"\\$&")}function Sn(t,n){return n?Sn(K(t,Fn)):RegExp(t.join("|"))}function jn(t){if(t)return M(t).length}const xn=(t,n)=>{const e={};return s(t,((t,r)=>{e[t]=n[r]})),e},Mn=/[ _-]+/g;const Tn=/[ _-]+/g,Rn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Ln=/[ _-]+/g;const $n=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Dn=/%(?![\da-f]{2})/gi,Un=/&/g,Pn=//g,zn=/"/g;function Wn(t){return decodeURIComponent(t.replace(Dn,(()=>"%25")))}function _n(t){return t.replace(Un,"&").replace(Pn,"<").replace(qn,">").replace(zn,""")}const Hn=/\S+/g,Vn=/\w+/g;const Zn=/\w+/g;function Kn(t){return t[0].toUpperCase()}function Gn(t){return Kn(t)+kn(t)}function Jn(t){return Kn(t)+kn(t).toLowerCase()}function Qn(t){return Xt(t)?.name}function Xn(t){return!i(t)}const Yn=z("Map"),te=W(Yn),ne=/Array/,ee="Array";function re(t){if(t){const n=Qn(t);if(ne.test(n)&&n!==ee)return!0}return!1}const oe=z("BigInt"),ie=W(oe),ce=z("Boolean"),se=W(ce),ue=z("ArrayBuffer"),ae=W(ue);const fe=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const le=z("Date"),he=W(le);function ge(t){return!1===t}const pe=z("Float32Array"),de=W(pe),ye=z("Float64Array"),me=W(ye),{isInteger:be}=Number,Ae=be,we=z("Int16Array"),ve=W(we),Ce=z("Int32Array"),Ie=W(Ce),Oe=z("Int8Array"),Ee=W(Oe);function Fe(t){return!!t&&t instanceof Promise}function Se(t){return!!t&&(Fe(t)||kt(t)||Bt(t))}const{isSafeInteger:je}=Number,xe=je;const Me=z("Uint16Array"),Te=W(Me),Re=z("Uint32Array"),Be=W(Re),Ne=z("Uint8Array"),Le=W(Ne),$e=z("Uint8ClampedArray"),ke=W($e),De=z("WeakMap"),Ue=W(De),Pe=void 0!==globalThis.Deno,qe=void 0!==globalThis.process&&process.versions&&process.versions.node;function ze(t,n=!0){return Boolean(t)&&n}function We(t,n){return ge(V(t,n))}const _e=JSON;const He=_e.stringify;function Ve(t,n,e){const r=globalThis.options||e;let o;return Lt(r)?o=`${r.name} : ${r.constructor.name}`:r&&(o=`${r.title||r.method.name} -> ${r.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${He(t)}\n\t\tExpected: ${He(n)}`,r)}async function Ze(t,n,e){const r=await t;return!(Lt(n)&&!1===await n(r,e))&&!We(r,n)||Ve(r,n,e)}const Ke=globalThis.structuredClone;async function Ge(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r)){const r=await n(o,e,t);i(r)&&e.push(r)}return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){const c=await n(e,o,t);i(c)&&r(c)}return o}const s=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i(c)&&(s?o.set(e,c):o[e]=c)}return o}function Je(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){const c=n(e,r,t);i(c)&&o(c)}return r}const o=Lt(r.set);for(const[e,c]of t){const s=n(c,e,r,t);i(s)&&(o?r.set(e,s):r[e]=s)}return r}const Qe=Dt(u,f,wn,An,Je,Ge);function Xe(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){!0===n(e,r,t)&&o(e)}}else{const e=Lt(r.set);for(const[o,i]of t){!0===n(i,o,r,t)&&(e?r.set(o,i):r[o]=i)}}return r}async function Ye(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))!0===await n(o,e,t)&&e.push(o);return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){!0===await n(e,o,t)&&r(e)}}else{const e=Lt(o.set);for await(const[r,i]of t){!0===await n(i,r,o,t)&&(e?o.set(r,i):o[r]=i)}}return o}const tr=Dt(S,j,vn,Cn,Xe,Ye);function nr(t){return(...n)=>e=>{let r=e;return t(n,(t=>{r=t(r)})),r}}const er=nr(s),rr=nr(I);function or(t){return(...n)=>async e=>{let r=e;return await t(n,(async t=>{r=await t(r)})),r}}const ir=or(a),cr=or(O);const sr=wt(/\./);class ur{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const e=setInterval((()=>{t()}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const ar=w(ur);class fr{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,fr.models.set(t,n)):Ft(this,t)}}function lr(t){return new Promise(t)}class hr{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;jt(t,(n=>{t[n]=new hr(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,e)=>(console.log(t,n,t[n]),t[n]=new hr(e),!0)})}}class gr{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,e=this.totalActive===this.totalFree;n&&e&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const pr=w(gr);class dr{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function yr(t){return new dr(t)}function mr(t){return t?mr[t]:M(mr)}const br=globalThis.navigator?.userAgentData;if(br)jt(br,((t,n)=>{se(t)&&t&&(mr[n]=t)})),s(br.brands,(t=>{mr[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{mr[t]=!0}))}function Ar(t,n,e,r){return t.addEventListener(n,e,r),t}const wr=document.createDocumentFragment.bind(document);function vr(t,n){return t.appendChild(n),n}function Cr(t,n){return y(n)?xn(n,K(n,(n=>t.getAttribute(n)))):(jt(n,((n,e)=>{t.setAttribute(e,n)})),t)}const Ir=/^.[\w_-]+$/,Or=/^[A-Za-z]+$/,Er=/\s/,Fr=document.getElementsByClassName.bind(document),Sr=document.getElementsByTagName.bind(document),jr=document.getElementById.bind(document),xr=document.querySelector.bind(document),Mr=document.querySelectorAll.bind(document);const Tr=document.createElement.bind(document);function Rr(t){const n=sr(t)&&t||`${t}.js`;return(t=>lr((n=>{Ar(t,"load",n,!0),Ar(t,"error",n,!0),vr(xr("head"),t)})))(Cr(Tr("script"),{async:"",src:n}))}function Br(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&Ar(document,"DOMContentLoaded",t),!1)}Br((()=>{const t=jr("AcidLib");Rr(t&&t.getAttribute("data-index")||"/index")}));const Nr=location.protocol,Lr="http:"===Nr?"ws":"wss",$r=location.hostname,kr={hardware:{cores:navigator.hardwareConcurrency},host:{name:$r,protocol:Nr,protocolSocket:Lr}};function Dr(){Ft(kr,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function Ur(){Dr()}Br(Ur),Ar(window,"load",Ur,!0),Ar(window,"resize",Ur,!0),t.hasLocal=void 0,function(n){try{n().removeItem("TESTING"),t.hasLocal=!0}catch(n){t.hasLocal=!1}}((()=>localStorage));class Pr{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=yr(t)}hasLocal=t.hasLocal;setItem(t,n){return this.hasLocal&&this.local.setItem(t,mt(n)?n:He(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return i(n)?n:!i(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}const qr=(t,n)=>`color:${t};background:${n};`,zr={alert:qr("#fff","#f44336"),important:qr("#fff","#E91E63"),notify:qr("#fff","#651FFF"),warning:qr("#000","#FFEA00")};t.Chain=Pt,t.Crate=Pr,t.Intervals=ur,t.Model=fr,t.Store=hr,t.Timers=Ht,t.UniqID=gr,t.VirtualStorage=dr,t.add=function(t,n){return t+n},t.after=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r<=0&&(e=n(...t),r=null),e)},t.append=vr,t.apply=Gt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const e={};return s(t,((t,r)=>{e[n[r]]=t})),e},t.ary=function(t,n){return(...e)=>t(...e.splice(0,n))},t.assert=function(t,n,e){return Se(t)||Se(n)?Ze(t,n,e):!(Lt(n)&&!1===n(t,e))&&!We(t,n)||Ve(t,n,e)},t.assertAsync=Ze,t.assign=Ft,t.before=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r>=1?e=n(...t):r=null,e)},t.bindAll=function(t,n,e){const r=en(t,(t=>Lt(t)?t.bind(n):t));return e?Ft(e,r):r},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Mn," ").trim().split(" ").forEach(((t,e)=>{n+=0===e?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Pt,[t])},t.chunk=function(t,n=1){const e=[];let r=0;return t.forEach(((t,o)=>{o%n||(e.push([]),o&&r++),e[r].push(t)})),e},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(H(t))return ut(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=ut,t.clearIntervals=function(){_t(setTimeout(Wt,0),(t=>{ar.remove(t)}))},t.clearTimers=function(){_t(setTimeout(Wt,0),(t=>{Vt.remove(t)}))},t.clone=function(t){return Ke(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.cnsl=(t,n)=>{const e=mt(t)?t:He(t);if("alert"===n||"warning"===n)return console.trace(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},t.cnslTheme=(t,n,e)=>{zr[t]=qr(n,e)},t.compact=function(t){if(D(t)){const n=M(t),e=n.length,r={};for(let o=0;oze(t)))},t.compactKeys=function(t){const n=[];return jt(t,((t,e)=>{i(t)&&n.push(e)})),n},t.compactMap=Qe,t.compactMapArray=u,t.compactMapAsyncArray=f,t.compactMapAsyncObject=An,t.compactMapObject=wn,t.concurrent=function(t,n,e){const r=t.length,o=[];for(let i=0;i{r=n(t),e[r]||(e[r]=0),e[r]++})),e},t.countKey=function(t,n){let e=0;return s(t,(t=>{t[n]&&e++})),e},t.countWithoutKey=function(t,n){let e=0;return s(t,(t=>{t[n]||e++})),e},t.crate=function(t){return new Pr(t)},t.createFragment=wr,t.curry=function(t,e=t.length){const r=[],o=(...i)=>{if(r.push(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.curryRight=function(t,e=t.length){const r=[],o=(...i)=>{if(r.unshift(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.debounce=function(t,n){function e(...t){e.id!==zt&&Vt.remove(e.id),e.id=Zt((()=>{e.callable(...t),e.id=zt}),n)}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{e.id!==zt&&(Vt.remove(e.id),e.id=zt)},e},t.deduct=function(t){return t-1},t.defProp=gn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,e=t.length)=>C(t,0,e-n),t.each=Ut,t.eachArray=s,t.eachAsyncArray=a,t.eachAsyncObject=St,t.eachObject=jt,t.eachRight=I,t.eachRightAsync=O,t.ensureArray=m,t.ensureBuffer=function(t){return H(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=En,t.eventAdd=Ar,t.eventRemove=function(t,n,e,r){return t.removeEventListener(n,e,r),t},t.every=un,t.everyArg=function(...t){return kt(t[0])?async function(...n){return un(t,(async t=>un(n,(async n=>t(n)))))}:function(...n){return un(t,(t=>un(n,(n=>t(n)))))}},t.everyArray=E,t.everyAsyncArray=F,t.everyAsyncObject=rn,t.everyObject=on,t.falsy=zt,t.filter=tr,t.filterArray=S,t.filterAsyncArray=j,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,e="id"){const r=t.findIndex(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.findIndexCache=at,t.findItem=function(t,n,e="id"){const r=t.find(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let e=t;for(let t=0;tt.concat(m(n))),[]);return e},t.flattenDeep=b,t.flow=er,t.flowAsync=ir,t.flowAsyncRight=cr,t.flowRight=rr,t.forEach=d,t.forEachAsync=async function(t,n){const e=[],r=[];let o=0;t.forEach(((t,n)=>{e[o]=t,r[o]=t,o++}));for(let t=0;t{const r=n(t,e);o(r)}))}else Lt(e.set)?t.forEach(((t,r)=>{const o=n(t,r,e);e.set(r,o)})):t.forEach(((t,r)=>{const o=n(t,r,e);e[r]=o}));return e},t.forOf=Tt,t.forOfAsync=Nt,t.forOfCompactMap=Je,t.forOfCompactMapAsync=Ge,t.forOfEvery=cn,t.forOfEveryAsync=sn,t.forOfFilter=Xe,t.forOfFilterAsync=Ye,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=Dt,t.get=L,t.getByClass=Fr,t.getById=jr,t.getByTag=Sr,t.getEntries=function(t){if(i(t))return bn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return pt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let e=0;return E(t,((t,r)=>(e=r,n>=t&&(e=r+1,!0)))),e},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Qn,t.groupBy=function(t,n){const e={};return s(t,(t=>{const r=n(t);e[r]||(e[r]=[]),e[r].push(t)})),e},t.has=function t(n,e,r){if(Xn(n)||Xn(e))return!1;if(mt(n))return mt(e)?n.includes(e,r):On(e)?e.test(n):Lt(e)?Boolean(e(n)):un(e,(e=>Boolean(t(n,e))));if(y(n)){if(mt(e))return n.includes(e,r);if(On(e))return un(n,(t=>t.test(e)));if(y(e))return un(e,(e=>Boolean(t(n,e))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}})))},t.hasDot=sr,t.hasKeys=k,t.hasLength=r,t.hasProp=pn,t.hasValue=i,t.htmlEntities=_n,t.ifInvoke=function(t,...n){if(Lt(t))return t(...n)},t.ifNotAssign=(t,n,e)=>(n&&!i(t[n])&&(t[n]=e),t),t.ifValue=function(t,n,e,r){if(i(t)){if(Lt(n))return e?Gt(n,e,r):n(...r);if(D(n))return n[e]=t,n}},t.importjs=Rr,t.inAsync=async function(t,n){const e=t.length;for(let r=0;rUt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const e={};return s(t,(t=>{e[t[n]]=t})),e},t.info=kr,t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,e){return t.slice(0,n)+e+t.slice(n,t.length)},t.intersection=function(t,...n){return u(t,(t=>{if(E(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return ar.set(t,n)},t.intervals=ar,t.invert=function(t,n={}){if(t)return jt(t,((t,e)=>{n[t]=e})),n},t.invoke=function(t,n,e){return K(t,((t,r)=>t[n](e,r)))},t.invokeAsync=function(t,n,e){return G(t,(async(t,r)=>t[n](e,r)))},t.isAgent=mr,t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=y,t.isArrayBuffer=ae,t.isArrayBufferCall=ue,t.isArrayLike=function(t,n){if(Xn(t)||Lt(t))return!1;if(y(t)||re(t))return!0;const e=t.length;if(!Xn(e)||!yt(e)||e<0)return!1;if(n){const n=M(t);return!!n&&un(n,((t,n)=>n>=0&&yt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=$t,t.isBigInt=ie,t.isBigIntCall=oe,t.isBoolean=se,t.isBooleanCall=ce,t.isBuffer=H,t.isBufferCall=_,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return fe.test(n)}return!1},t.isConstructor=U,t.isConstructorFactory=P,t.isConstructorNameFactory=z,t.isDate=he,t.isDateCall=le,t.isDeno=Pe,t.isDocumentReady=Br,t.isDom=function(t){return t&&9!==t.nodeType},t.isEmpty=function(t){return mt(t)||y(t)?!r(t):D(t)?!jn(t):!i(t)},t.isEnter=function(t){return 13===t.keyCode},t.isEqual=V,t.isF32=de,t.isF32Call=pe,t.isF64=me,t.isF64Call=ye,t.isFalse=ge,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=It,t.isFileJSON=Ot,t.isFloat=Ae,t.isFunction=Lt,t.isGenerator=Bt,t.isGeneratorCall=Rt,t.isHTMLCollection=function(t){return!!i(t)&&"[object HTMLCollection]"===t.toString()},t.isI16=ve,t.isI16Call=we,t.isI32=Ie,t.isI32Call=Ce,t.isI8=Ee,t.isI8Call=Oe,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Se,t.isMap=te,t.isMapCall=Yn,t.isMatchArray=function(t,n){return t.length===n.length&&E(t,((t,e)=>V(n[e],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const e=M(t),r=M(n);return e.length===r.length&&E(e,(e=>t[e]===n[e]))},t.isNegative=h,t.isNodeList=function(t){return!!i(t)&&"[object NodeList]"===t.toString()},t.isNodejs=qe,t.isNotArray=function(t){return!y(t)},t.isNotNumber=function(t){return!yt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=yt,t.isNumberCall=dt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,e){return t>n&&te},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=D,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Fe,t.isRegex=On,t.isRegexCall=In,t.isRelated=function(t,n){return!Xn(t)&&!Xn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xe,t.isSame=dn,t.isSameType=function(t,n){const e=Xt(t),r=Xt(n);return e===r&&e.name===r.name},t.isSet=Mt,t.isSetCall=xt,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=ze,t.isTypeFactory=W,t.isTypedArray=re,t.isU16=Te,t.isU16Call=Me,t.isU32=Be,t.isU32Call=Re,t.isU8=Le,t.isU8C=ke,t.isU8CCall=$e,t.isU8Call=Ne,t.isUndefined=e,t.isWeakMap=Ue,t.isWeakMapCall=De,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return _e.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Tn," ").trim().toLowerCase().replace(Rn,"-")},t.keys=M,t.largest=function(t){return Z(...t)},t.last=function(t,n){const e=t.length;return n?t.slice(e-n,e):t[e-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=en,t.mapArray=K,t.mapAsyncArray=G,t.mapAsyncObject=Jt,t.mapObject=Qt,t.mapRightArray=function(t,n,e=[],r){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)e[o]=n(t[c],c,t,i,r),o++;return e},t.mapWhile=function(t,n,e=[],r){const o=t.length;for(let i=0;i{Ut(e,((e,r)=>{if(n[r]&&(D(e)||y(e)||e.forEach))return t(n[r],e);n[r]=e}))})),n},t.model=function(t,n){return i(n)?w(fr,[t,n]):L(t,fr.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Xn,t.nodeAttribute=Cr,t.noop=Wt,t.notEqual=We,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Et,t.objectEntries=bn,t.objectSize=jn,t.omit=function(t,n){if(t){if(y(n)){const e=Sn(n);return vn(t,((t,n)=>!e.test(n)))}if(On(n))return vn(t,((t,e)=>!n.test(e)));if(mt(n))return vn(t,((t,e)=>e!==n));if(yt(n)){const e=n.toString();return vn(t,((t,n)=>n!==e))}return Lt(n)?vn(t,((t,e)=>!n(t,e))):void 0}},t.once=t=>{let n;return(...e)=>(i(n)||(n=t(...e)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>en(t,(t=>t(...n)))},t.overEvery=function(t){return n=>un(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const e=[];return[u(t,((t,r)=>{if(n(t,r))return t;e.push(t)})),e]},t.pick=(t,n,e={})=>{if(t)return s(n,(n=>{e[n]=t[n]})),e},t.pluck=function(t,n){return K(t,(t=>bt(t,n)))},t.pluckObject=bt,t.promise=lr,t.propertyMatch=(t,n,e=M(t))=>E(e,(e=>V(t[e],n[e]))),t.querySelector=xr,t.querySelectorAll=Mr,t.randomFloat=function(t,n=0){return yn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,e=1,r=[]){return h(e)?r:tt(...n.map((t=>e[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let e=t.length;for(let r=0;re)return rt(t);if(1===n)return[t[tt(e-1,0)]];const r=[],o={};let i,c=0;for(;cht(t,r,n,e)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",e){return t.sort(((t,r)=>At(t,r,n,e)))},t.sortCollectionAscending=pt,t.sortCollectionAscendingFilter=gt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(J)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=At,t.sortUnique=ct,t.stringify=He,t.stubArray=()=>[],t.stubFalse=()=>zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=J,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const e=t.length;return t.slice(e-n,e)},t.themes=zr,t.throttle=function(t,n){function e(...t){e.id?e.shouldThrottle=qt:(e.callable(...t),e.id=Zt((()=>{e.shouldThrottle&&e.callable(...t),e.id=zt}),n))}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{Vt.remove(e.id),e.id=zt},e},t.timer=Zt,t.timers=Vt,t.times=_t,t.timesAsync=async function(t,n){for(let e=0;en?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=e-n;for(;c=0&&(i=r[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,e):t},t.truncateRight=function(t,n){const e=t.length;return e>n?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=n;for(;c0&&(i=r[c]," "!==i);c++);return t.substring(c,e).trim()})(t,n,e):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.unZipObject=t=>{const n=[],e=[];return jt(t,((t,r)=>{n.push(r),e.push(t)})),[n,e]},t.union=function(...t){return st(b(t))},t.uniqID=pr,t.unique=st,t.untilFalseArray=function(t,n){const e=t.length;for(let r=0;rGn(t)))},t.upperFirstLetter=Kn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(Zn,(t=>Jn(t)))},t.virtualStorage=yr,t.whileCompactMap=function(t,n,e=[],r){let o=0;for(;o!e.has(t)))},t.words=function(t){return t.match(Vn)||[]},t.wrap=function(t,n){return(...e)=>n(t,...e)},t.xor=function(...t){const n=w(Map),e=[];return 2===t.length?v(t[0],t[1]):(s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&e.push(t.child)})),e)},t.zip=function(...t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.zipObject=xn})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={})}(this,(function(t){"use strict";function n(t){return t.length=0,t}function e(t){return void 0===t}function r(t){return Boolean(t.length)}function o(t){return null===t}function i(t){return!e(t)&&!o(t)}function c(t){return t}function s(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const a=n.call(r,t,c,e,s,u,o);i(a)&&e.push(a)})):s(t,((t,c,s,u)=>{const a=n(t,c,e,s,u,r,o);i(a)&&e.push(a)})),e}async function a(t,n,e,r){if(!t)return;const o=t.length;if(i(e))for(let i=0;i{const c=await n(t,r,e,o);i(c)&&e.push(c)})),e}const{sign:l}=Math;function h(t){return-1===l(t)}function g(t,n,e,r){let o=t;for(;on;)r.push(o),o-=e;return r}function d(t,n){return t.forEach(n),t}const y=Array.isArray;function m(t){return y(t)&&t||i(t)&&[t]||[]}function b(t){return t.flat(1/0)}const A=Reflect.construct;function w(t,n=[],e){const r=y(n)?n:[n];return e?A(t,r,e):A(t,r)}function v(...t){const n=w(Map),e=[];return s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&0===t.parentIndex&&e.push(t.child)})),e}function C(t,n=1,e=t.length){return t.splice(n,e)}function I(t,n,e){if(!t)return;const r=t.length;for(let o=r-1;o>=0;o--)n(t[o],o,t,r,e);return t}async function O(t,n){if(!t)return;const e=t.length;for(let r=e-1;r>=0;r--)await n(t[r],r,t,e);return t}function E(t,n,e){if(!t)return;const r=t.length;for(let o=0;o{!0===n(t,o,e,i,c,r)&&e.push(t)})),e}async function j(t,n,e=[],r){return await a(t,(async(t,o,i,c)=>{!0===await n(t,o,e,i,c,r)&&e.push(t)})),e}const x=Object.keys;function M(t){if(t)return x(t)}const T=/\.|\[/,R=/]/g,B="";function N(t){return t.replace(R,B).split(T)}function L(t,n){if(!n)return!1;let e=n;return E(y(t)?t:N(t),(t=>(e=e[t],i(e)))),e}const $=Object.hasOwn;function k(t,...n){if(t)return E(n,(n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}}))}const D=t=>!!i(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function U(t,n){return t?.constructor===n||!1}function P(t){return n=>U(n,t)}function q(t){return t?.constructor?.name}function z(t){return n=>q(n)===t||!1}function W(t){return function(n,...e){return e?t(n)&&E(e,t):t(n)}}const _=z("Buffer"),H=W(_),V=(t,n)=>{if(t===n)return!0;if(H(t))return t.equals(n);if(t.toString()===n.toString())if(D(t)){const e=M(t);if(k(n,e))return E(e,(e=>V(t[e],n[e])))}else if(y(t)&&t.length===n.length)return E(t,((t,e)=>V(t,n[e])));return!1};const Z=Math.max;function K(t,n,e=[],r,o){return i(r)?s(t,((t,i,c,s)=>{e[i]=n.call(r,t,i,e,c,s,o)})):s(t,((t,r,i,c)=>{e[r]=n(t,r,e,i,c,o)})),e}async function G(t,n){const e=[];return await a(t,(async(t,r,o)=>{e[r]=await n(t,r,o)})),e}function J(t,n){return t-n}function Q(t,n){return n-t}const{floor:X,random:Y}=Math;function tt(t,n=0){return X(Y()*(t-n))+n}const nt=Array.from;function et(t,n,e){if(i(t))return nt(t,n,e)}function rt(t,n=t.length){if(t.length<=1)return et(t);const e=et(t);let r,o,i=0;for(;ii?-1:0:1:-1}function lt(t,n="id",e){return t.sort(((t,r)=>ft(t,r,n,e)))}function ht(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):o.localeCompare(i)}function gt(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i?o?oi?1:0:-1:1}function pt(t,n="id",e){return t.sort(((t,r)=>gt(t,r,n,e)))}const dt=z("Number"),yt=W(dt);const mt=P(String);function bt(t,n){if(t)return mt(n)?t[n]:K(n,(n=>t[n]))}function At(t,n,e,r){const o=t[e],i=n[e];return o===i&&r?r(t,n,e):i.localeCompare(o)}function wt(t){return n=>!!i(n)&&t.test(n)}const vt=wt(/\.css$/),Ct=wt(/\.html$/),It=wt(/\.js$/),Ot=wt(/\.json$/);const Et=Object.assign;function Ft(t,...n){if(i(t))return Et(t,...n)}const St=async(t,n,e,r)=>{if(!t)return;const o=M(t);return i(e)?await a(o,((i,c,s,u)=>n.call(e,t[i],i,t,u,o,r))):await a(o,((e,i,c,s)=>n(t[e],e,t,s,o,r))),t};function jt(t,n,e,r){if(!t)return;const o=M(t);return i(e)?s(o,((o,i,c,s)=>{n.call(e,t[o],o,t,s,c,r)})):s(o,((e,o,i,c)=>{n(t[e],e,t,c,i,r)})),t}const xt=z("Set"),Mt=W(xt);function Tt(t,n){if(Mt(t)){for(const e of t)n(e,t);return t}for(const[e,r]of t)n(r,e,t);return t}const Rt=z("GeneratorFunction"),Bt=W(Rt);async function Nt(t,n,e){if(Mt(t)){for(const e of t)await n(e,t);return t}if(Bt(t))for await(const r of t(...e))await n(r,t);for(const[e,r]of t)await n(r,e,t);return t}const Lt=t=>!!i(t)&&t instanceof Function,$t=z("AsyncFunction"),kt=W($t);function Dt(t,n,e,r,o,c){return(s,u,a,f,l)=>{let h;const g=kt(u);if(i(s)&&u)return h=y(s)?g?n:t:D(s)||Lt(s)?g?r:e:o?g?c:o:Bt(s)?c:g?r:e,h(s,u,a,f,l)}}const Ut=Dt(s,a,jt,St,Tt,Nt);class Pt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Ut(t,((t,e)=>{n[e]=function(...e){return this.value=t.call(n,n.value,...e),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const qt=!0,zt=!1,Wt=()=>{};function _t(t,n){for(let e=0;e{t(),e.remove(r)}),n);return this.list.set(r,qt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Vt=w(Ht);function Zt(t,n){return Vt.set(t,n)}const Kt=Reflect.apply;function Gt(t,n,e){if(Lt(t))return Kt(t,n,e)}async function Jt(t,n,e={}){if(t)return await St(t,(async(t,r,o,i,c)=>{e[r]=await n(t,r,e,o,i,c)})),e}function Qt(t,n,e={},r,o){if(t)return i(r)?jt(t,((t,i,c,s,u)=>{e[i]=n.call(r,t,i,e,c,s,u,o)})):jt(t,((t,r,i,c,s)=>{e[r]=n(t,r,e,i,c,s,o)})),e}function Xt(t){return t?.constructor}function Yt(t,n=[]){const e=Xt(t);return e===Function&&"function"===e.name?function(){}:w(e,n)}function tn(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){o(n(e,r,t))}return r}const o=Lt(r.set);for(const[e,i]of t){const c=n(i,e,r,t);o?r.set(e,c):r[e]=c}return r}async function nn(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))e.push(await n(o,e,t));return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){r(await n(e,o,t))}return o}const i=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i?o.set(e,c):o[e]=c}return o}const en=Dt(K,G,Qt,Jt,tn,nn);async function rn(t,n){if(!t)return;return F(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function on(t,n){if(!t)return;return E(M(t),((e,r,o,i)=>n(t[e],e,t,i,o)))}function cn(t,n=c){if(y(t)||Mt(t))for(const e of t){if(!1===n(e,t))return!1}else for(const[e,r]of t){if(!1===n(r,e,t))return!1}return!0}async function sn(t,n=c,e){if(Bt(t))for await(const r of t(...e)){if(!1===await n(r,t))return!1}else if(y(t)||Mt(t))for(const e of t){if(!1===await n(e,t))return!1}else for(const[e,r]of t){if(!1===await n(r,e,t))return!1}return!0}const un=Dt(E,F,on,rn,cn,sn);const an=Function.prototype;function fn(t){return an.call.bind(t)}const ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor,gn=Object.defineProperty,pn=fn(Object.hasOwnProperty),dn=Object.is;const{random:yn}=Math;const{sign:mn}=Math;const bn=Object.entries;async function An(t,n=c,e={}){return await St(t,(async(t,r,o,c,s)=>{const u=await n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function wn(t,n=c,e={}){return jt(t,((t,r,o,c,s)=>{const u=n(t,r,e,o,c,s);i(u)&&(e[r]=u)})),e}function vn(t,n,e={}){return jt(t,((t,r,o,i,c)=>{!0===n(t,r,e,o,i,c)&&(e[r]=t)})),e}async function Cn(t,n,e={}){return await St(t,(async(t,r,o,i,c)=>{!0===await n(t,r,e,o,i,c)&&(e[r]=t)})),e}const In=z("RegExp"),On=W(In),En=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Fn(t){return t.replace(En,"\\$&")}function Sn(t,n){return n?Sn(K(t,Fn)):RegExp(t.join("|"))}function jn(t){if(t)return M(t).length}const xn=(t,n)=>{const e={};return s(t,((t,r)=>{e[t]=n[r]})),e},Mn=/[ _-]+/g;const Tn=/[ _-]+/g,Rn=/[ ]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Ln=/[ _-]+/g;const $n=/[ _-]+/g;function kn(t,n=1){return t.substring(n)}const Dn=/%(?![\da-f]{2})/gi,Un=/&/g,Pn=//g,zn=/"/g;function Wn(t){return decodeURIComponent(t.replace(Dn,(()=>"%25")))}function _n(t){return t.replace(Un,"&").replace(Pn,"<").replace(qn,">").replace(zn,""")}const Hn=/\S+/g,Vn=/\w+/g;const Zn=/\w+/g;function Kn(t){return t[0].toUpperCase()}function Gn(t){return Kn(t)+kn(t)}function Jn(t){return Kn(t)+kn(t).toLowerCase()}function Qn(t){return Xt(t)?.name}function Xn(t){return!i(t)}const Yn=z("Map"),te=W(Yn),ne=/Array/,ee="Array";function re(t){if(t){const n=Qn(t);if(ne.test(n)&&n!==ee)return!0}return!1}const oe=z("BigInt"),ie=W(oe),ce=z("Boolean"),se=W(ce),ue=z("ArrayBuffer"),ae=W(ue);const fe=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const le=z("Date"),he=W(le);function ge(t){return!1===t}const pe=z("Float32Array"),de=W(pe),ye=z("Float64Array"),me=W(ye),{isInteger:be}=Number,Ae=be,we=z("Int16Array"),ve=W(we),Ce=z("Int32Array"),Ie=W(Ce),Oe=z("Int8Array"),Ee=W(Oe);function Fe(t){return!!t&&t instanceof Promise}function Se(t){return!!t&&(Fe(t)||kt(t)||Bt(t))}const{isSafeInteger:je}=Number,xe=je;const Me=z("Uint16Array"),Te=W(Me),Re=z("Uint32Array"),Be=W(Re),Ne=z("Uint8Array"),Le=W(Ne),$e=z("Uint8ClampedArray"),ke=W($e),De=z("WeakMap"),Ue=W(De),Pe=void 0!==globalThis.Deno,qe=void 0!==globalThis.process&&process.versions&&process.versions.node;function ze(t,n=!0){return Boolean(t)&&n}function We(t,n){return ge(V(t,n))}const _e=JSON;const He=_e.stringify;function Ve(t,n,e){const r=globalThis.options||e;let o;return Lt(r)?o=`${r.name} : ${r.constructor.name}`:r&&(o=`${r.title||r.method.name} -> ${r.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${He(t)}\n\t\tExpected: ${He(n)}`,r)}async function Ze(t,n,e){const r=await t;return!(Lt(n)&&!1===await n(r,e))&&!We(r,n)||Ve(r,n,e)}const Ke=globalThis.structuredClone;async function Ge(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r)){const r=await n(o,e,t);i(r)&&e.push(r)}return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){const c=await n(e,o,t);i(c)&&r(c)}return o}const s=Lt(o.set);for await(const[e,r]of t){const c=await n(r,e,o,t);i(c)&&(s?o.set(e,c):o[e]=c)}return o}function Je(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){const c=n(e,r,t);i(c)&&o(c)}return r}const o=Lt(r.set);for(const[e,c]of t){const s=n(c,e,r,t);i(s)&&(o?r.set(e,s):r[e]=s)}return r}const Qe=Dt(u,f,wn,An,Je,Ge);function Xe(t,n=c,e){const r=e||Yt(t);if(y(t)||Mt(t)){const e=r.push||r.add,o=e&&e.bind(r);for(const e of t){!0===n(e,r,t)&&o(e)}}else{const e=Lt(r.set);for(const[o,i]of t){!0===n(i,o,r,t)&&(e?r.set(o,i):r[o]=i)}}return r}async function Ye(t,n=c,e,r){if(Bt(t)){const e=[];for await(const o of t(...r))!0===await n(o,e,t)&&e.push(o);return e}const o=e||Yt(t);if(y(t)||Mt(t)){const e=o.push||o.add,r=e&&e.bind(o);for(const e of t){!0===await n(e,o,t)&&r(e)}}else{const e=Lt(o.set);for await(const[r,i]of t){!0===await n(i,r,o,t)&&(e?o.set(r,i):o[r]=i)}}return o}const tr=Dt(S,j,vn,Cn,Xe,Ye);function nr(t){return(...n)=>e=>{let r=e;return t(n,(t=>{r=t(r)})),r}}const er=nr(s),rr=nr(I);function or(t){return(...n)=>async e=>{let r=e;return await t(n,(async t=>{r=await t(r)})),r}}const ir=or(a),cr=or(O);const sr=wt(/\./);class ur{list=w(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const e=setInterval((()=>{t()}),n);return this.list.set(e,qt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const ar=w(ur);class fr{static models={};constructor(t,n){i(n)?(Ft(this,n),this.modelName=t,fr.models.set(t,n)):Ft(this,t)}}function lr(t){return new Promise(t)}class hr{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;jt(t,(n=>{t[n]=new hr(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,e)=>(console.log(t,n,t[n]),t[n]=new hr(e),!0)})}}class gr{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return i(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,e=this.totalActive===this.totalFree;n&&e&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const pr=w(gr);class dr{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function yr(t){return new dr(t)}function mr(t){return t?mr[t]:M(mr)}const br=globalThis.navigator?.userAgentData;if(br)jt(br,((t,n)=>{se(t)&&t&&(mr[n]=t)})),s(br.brands,(t=>{mr[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{mr[t]=!0}))}function Ar(t,n,e,r){return t.addEventListener(n,e,r),t}const wr=document.createDocumentFragment.bind(document);function vr(t,n){return t.appendChild(n),n}function Cr(t,n){return y(n)?xn(n,K(n,(n=>t.getAttribute(n)))):(jt(n,((n,e)=>{t.setAttribute(e,n)})),t)}const Ir=/^.[\w_-]+$/,Or=/^[A-Za-z]+$/,Er=/\s/,Fr=document.getElementsByClassName.bind(document),Sr=document.getElementsByTagName.bind(document),jr=document.getElementById.bind(document),xr=document.querySelector.bind(document),Mr=document.querySelectorAll.bind(document);const Tr=document.createElement.bind(document);function Rr(t){const n=sr(t)&&t||`${t}.js`;return(t=>lr((n=>{Ar(t,"load",n,!0),Ar(t,"error",n,!0),vr(xr("head"),t)})))(Cr(Tr("script"),{async:"",src:n}))}function Br(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&Ar(document,"DOMContentLoaded",t),!1)}Br((()=>{const t=jr("AcidLib");Rr(t&&t.getAttribute("data-index")||"/index")}));const Nr=location.protocol,Lr="http:"===Nr?"ws":"wss",$r=location.hostname,kr={hardware:{cores:navigator.hardwareConcurrency},host:{name:$r,protocol:Nr,protocolSocket:Lr}};function Dr(){Ft(kr,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function Ur(){Dr()}Br(Ur),Ar(window,"load",Ur,!0),Ar(window,"resize",Ur,!0),t.hasLocal=void 0,function(n){try{n().removeItem("TESTING"),t.hasLocal=!0}catch(n){t.hasLocal=!1}}((()=>localStorage));class Pr{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=yr(t)}hasLocal=t.hasLocal;setItem(t,n){return this.hasLocal&&this.local.setItem(t,mt(n)?n:He(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return i(n)?n:!i(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}const qr=(t,n)=>`color:${t};background:${n};`,zr={alert:qr("#fff","#f44336"),important:qr("#fff","#E91E63"),notify:qr("#fff","#651FFF"),warning:qr("#000","#FFEA00")};t.Chain=Pt,t.Crate=Pr,t.Intervals=ur,t.Model=fr,t.Store=hr,t.Timers=Ht,t.UniqID=gr,t.VirtualStorage=dr,t.add=function(t,n){return t+n},t.after=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r<=0&&(e=n(...t),r=null),e)},t.append=vr,t.apply=Gt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const e={};return s(t,((t,r)=>{e[n[r]]=t})),e},t.ary=function(t,n){return(...e)=>t(...e.splice(0,n))},t.assert=function(t,n,e){return Se(t)||Se(n)?Ze(t,n,e):!(Lt(n)&&!1===n(t,e))&&!We(t,n)||Ve(t,n,e)},t.assertAsync=Ze,t.assign=Ft,t.before=function(t,n){let e,r=t;return(...t)=>(null!==r&&r--,r>=1?e=n(...t):r=null,e)},t.bindAll=function(t,n,e){const r=en(t,(t=>Lt(t)?t.bind(n):t));return e?Ft(e,r):r},t.cacheNativeMethod=fn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Mn," ").trim().split(" ").forEach(((t,e)=>{n+=0===e?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return w(Pt,[t])},t.chunk=function(t,n=1){const e=[];let r=0;return t.forEach(((t,o)=>{o%n||(e.push([]),o&&r++),e[r].push(t)})),e},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(H(t))return ut(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=n,t.clearBuffer=ut,t.clearIntervals=function(){_t(setTimeout(Wt,0),(t=>{ar.remove(t)}))},t.clearTimers=function(){_t(setTimeout(Wt,0),(t=>{Vt.remove(t)}))},t.clone=function(t){return Ke(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=Yt,t.cnsl=(t,n)=>{const e=mt(t)?t:He(t);if("alert"===n||"warning"===n)return console.trace(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${e}`,`${zr[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},t.cnslTheme=(t,n,e)=>{zr[t]=qr(n,e)},t.compact=function(t){if(D(t)){const n=M(t),e=n.length,r={};for(let o=0;oze(t)))},t.compactKeys=function(t){const n=[];return jt(t,((t,e)=>{i(t)&&n.push(e)})),n},t.compactMap=Qe,t.compactMapArray=u,t.compactMapAsyncArray=f,t.compactMapAsyncObject=An,t.compactMapObject=wn,t.concurrent=function(t,n,e){const r=t.length,o=[];for(let i=0;i{r=n(t),e[r]||(e[r]=0),e[r]++})),e},t.countKey=function(t,n){let e=0;return s(t,(t=>{t[n]&&e++})),e},t.countWithoutKey=function(t,n){let e=0;return s(t,(t=>{t[n]||e++})),e},t.crate=function(t){return new Pr(t)},t.createFragment=wr,t.curry=function(t,e=t.length){const r=[],o=(...i)=>{if(r.push(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.curryRight=function(t,e=t.length){const r=[],o=(...i)=>{if(r.unshift(...i),r.length===e){const e=t(...r);return n(r),e}return o};return o},t.debounce=function(t,n){function e(...t){e.id!==zt&&Vt.remove(e.id),e.id=Zt((()=>{e.callable(...t),e.id=zt}),n)}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{e.id!==zt&&(Vt.remove(e.id),e.id=zt)},e},t.deduct=function(t){return t-1},t.defProp=gn,t.difference=v,t.divide=function(t,n){return t/n},t.drop=C,t.dropRight=(t,n=1,e=t.length)=>C(t,0,e-n),t.each=Ut,t.eachArray=s,t.eachAsyncArray=a,t.eachAsyncObject=St,t.eachObject=jt,t.eachRight=I,t.eachRightAsync=O,t.ensureArray=m,t.ensureBuffer=function(t){return H(t)&&t||i(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Fn,t.escapeRegexRegex=En,t.eventAdd=Ar,t.eventRemove=function(t,n,e,r){return t.removeEventListener(n,e,r),t},t.every=un,t.everyArg=function(...t){return kt(t[0])?async function(...n){return un(t,(async t=>un(n,(async n=>t(n)))))}:function(...n){return un(t,(t=>un(n,(n=>t(n)))))}},t.everyArray=E,t.everyAsyncArray=F,t.everyAsyncObject=rn,t.everyObject=on,t.falsy=zt,t.filter=tr,t.filterArray=S,t.filterAsyncArray=j,t.filterAsyncObject=Cn,t.filterObject=vn,t.findIndex=function(t,n,e="id"){const r=t.findIndex(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.findIndexCache=at,t.findItem=function(t,n,e="id"){const r=t.find(((t,r)=>at(t,0,0,n,e)));return-1!==r&&r},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let e=t;for(let t=0;tt.concat(m(n))),[]);return e},t.flattenDeep=b,t.flow=er,t.flowAsync=ir,t.flowAsyncRight=cr,t.flowRight=rr,t.forEach=d,t.forEachAsync=async function(t,n){const e=[],r=[];let o=0;t.forEach(((t,n)=>{e[o]=t,r[o]=t,o++}));for(let t=0;t{const r=n(t,e);o(r)}))}else Lt(e.set)?t.forEach(((t,r)=>{const o=n(t,r,e);e.set(r,o)})):t.forEach(((t,r)=>{const o=n(t,r,e);e[r]=o}));return e},t.forOf=Tt,t.forOfAsync=Nt,t.forOfCompactMap=Je,t.forOfCompactMapAsync=Ge,t.forOfEvery=cn,t.forOfEveryAsync=sn,t.forOfFilter=Xe,t.forOfFilterAsync=Ye,t.forOfMap=tn,t.forOfMapAsync=nn,t.generateLoop=Dt,t.get=L,t.getByClass=Fr,t.getById=jr,t.getByTag=Sr,t.getEntries=function(t){if(i(t))return bn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return pt(t,n)[0]},t.getLowest=function(t,n){return lt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let e=0;return E(t,((t,r)=>(e=r,n>=t&&(e=r+1,!0)))),e},t.getPropDesc=hn,t.getPropNames=ln,t.getType=Xt,t.getTypeName=Qn,t.groupBy=function(t,n){const e={};return s(t,(t=>{const r=n(t);e[r]||(e[r]=[]),e[r].push(t)})),e},t.has=function t(n,e,r){if(Xn(n)||Xn(e))return!1;if(mt(n))return mt(e)?n.includes(e,r):On(e)?e.test(n):Lt(e)?Boolean(e(n)):un(e,(e=>Boolean(t(n,e))));if(y(n)){if(mt(e))return n.includes(e,r);if(On(e))return un(n,(t=>t.test(e)));if(y(e))return un(e,(e=>Boolean(t(n,e))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const e=N(n);if(1===e.length)return $(t,n);{const n=e.pop(),r=L(e,t);return!!r&&$(r,n)}})))},t.hasDot=sr,t.hasKeys=k,t.hasLength=r,t.hasProp=pn,t.hasValue=i,t.htmlEntities=_n,t.ifInvoke=function(t,...n){if(Lt(t))return t(...n)},t.ifNotAssign=(t,n,e)=>(n&&!i(t[n])&&(t[n]=e),t),t.ifValue=function(t,n,e,r){if(i(t)){if(Lt(n))return e?Gt(n,e,r):n(...r);if(D(n))return n[e]=t,n}},t.importjs=Rr,t.inAsync=async function(t,n){const e=t.length;for(let r=0;rUt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const e={};return s(t,(t=>{e[t[n]]=t})),e},t.info=kr,t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,e){return t.slice(0,n)+e+t.slice(n,t.length)},t.intersection=function(t,...n){return u(t,(t=>{if(E(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return ar.set(t,n)},t.intervals=ar,t.invert=function(t,n={}){if(t)return jt(t,((t,e)=>{n[t]=e})),n},t.invokeArray=function(t,n,e){if(!t)return;const r=t.length;if(i(e))for(let o=0;ot[n].call(r,e):(t,r)=>t[n](e))},t.invokeCollectionAsync=function(t,n,e,r){return G(t,r?t=>t[n].call(r,e):async t=>t[n](e))},t.isAgent=mr,t.isArguments=function(t){return!!i(t)&&"[object Arguments]"===t.toString()},t.isArray=y,t.isArrayBuffer=ae,t.isArrayBufferCall=ue,t.isArrayLike=function(t,n){if(Xn(t)||Lt(t))return!1;if(y(t)||re(t))return!0;const e=t.length;if(!Xn(e)||!yt(e)||e<0)return!1;if(n){const n=M(t);return!!n&&un(n,((t,n)=>n>=0&&yt(n)))}return!0},t.isAsync=kt,t.isAsyncCall=$t,t.isBigInt=ie,t.isBigIntCall=oe,t.isBoolean=se,t.isBooleanCall=ce,t.isBuffer=H,t.isBufferCall=_,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(i(t)){const n=t?.constructor?.name;return fe.test(n)}return!1},t.isConstructor=U,t.isConstructorFactory=P,t.isConstructorNameFactory=z,t.isDate=he,t.isDateCall=le,t.isDeno=Pe,t.isDocumentReady=Br,t.isDom=function(t){return t&&9!==t.nodeType},t.isEmpty=function(t){return mt(t)||y(t)?!r(t):D(t)?!jn(t):!i(t)},t.isEnter=function(t){return 13===t.keyCode},t.isEqual=V,t.isF32=de,t.isF32Call=pe,t.isF64=me,t.isF64Call=ye,t.isFalse=ge,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=vt,t.isFileHTML=Ct,t.isFileJS=It,t.isFileJSON=Ot,t.isFloat=Ae,t.isFunction=Lt,t.isGenerator=Bt,t.isGeneratorCall=Rt,t.isHTMLCollection=function(t){return!!i(t)&&"[object HTMLCollection]"===t.toString()},t.isI16=ve,t.isI16Call=we,t.isI32=Ie,t.isI32Call=Ce,t.isI8=Ee,t.isI8Call=Oe,t.isIterable=function(t){return i(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Se,t.isMap=te,t.isMapCall=Yn,t.isMatchArray=function(t,n){return t.length===n.length&&E(t,((t,e)=>V(n[e],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const e=M(t),r=M(n);return e.length===r.length&&E(e,(e=>t[e]===n[e]))},t.isNegative=h,t.isNodeList=function(t){return!!i(t)&&"[object NodeList]"===t.toString()},t.isNodejs=qe,t.isNotArray=function(t){return!y(t)},t.isNotNumber=function(t){return!yt(t)},t.isNotString=function(t){return!mt(t)},t.isNull=o,t.isNumber=yt,t.isNumberCall=dt,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,e){return t>n&&te},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=D,t.isPositive=function(t){return 1===mn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Fe,t.isRegex=On,t.isRegexCall=In,t.isRelated=function(t,n){return!Xn(t)&&!Xn(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xe,t.isSame=dn,t.isSameType=function(t,n){const e=Xt(t),r=Xt(n);return e===r&&e.name===r.name},t.isSet=Mt,t.isSetCall=xt,t.isString=mt,t.isTrue=function(t){return!0===t},t.isTruthy=ze,t.isTypeFactory=W,t.isTypedArray=re,t.isU16=Te,t.isU16Call=Me,t.isU32=Be,t.isU32Call=Re,t.isU8=Le,t.isU8C=ke,t.isU8CCall=$e,t.isU8Call=Ne,t.isUndefined=e,t.isWeakMap=Ue,t.isWeakMapCall=De,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return _e.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Tn," ").trim().toLowerCase().replace(Rn,"-")},t.keys=M,t.largest=function(t){return Z(...t)},t.last=function(t,n){const e=t.length;return n?t.slice(e-n,e):t[e-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=en,t.mapArray=K,t.mapAsyncArray=G,t.mapAsyncObject=Jt,t.mapObject=Qt,t.mapRightArray=function(t,n,e=[],r){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)e[o]=n(t[c],c,t,i,r),o++;return e},t.mapWhile=function(t,n,e=[],r){const o=t.length;for(let i=0;i{Ut(e,((e,r)=>{if(n[r]&&(D(e)||y(e)||e.forEach))return t(n[r],e);n[r]=e}))})),n},t.model=function(t,n){return i(n)?w(fr,[t,n]):L(t,fr.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=Xn,t.nodeAttribute=Cr,t.noop=Wt,t.notEqual=We,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Et,t.objectEntries=bn,t.objectSize=jn,t.omit=function(t,n){if(t){if(y(n)){const e=Sn(n);return vn(t,((t,n)=>!e.test(n)))}if(On(n))return vn(t,((t,e)=>!n.test(e)));if(mt(n))return vn(t,((t,e)=>e!==n));if(yt(n)){const e=n.toString();return vn(t,((t,n)=>n!==e))}return Lt(n)?vn(t,((t,e)=>!n(t,e))):void 0}},t.once=t=>{let n;return(...e)=>(i(n)||(n=t(...e)),n)},t.onlyUnique=it,t.over=function(t){return(...n)=>en(t,(t=>t(...n)))},t.overEvery=function(t){return n=>un(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const e=[];return[u(t,((t,r)=>{if(n(t,r))return t;e.push(t)})),e]},t.pick=(t,n,e={})=>{if(t)return s(n,(n=>{e[n]=t[n]})),e},t.pluck=function(t,n){return K(t,(t=>bt(t,n)))},t.pluckObject=bt,t.promise=lr,t.propertyMatch=(t,n,e=M(t))=>E(e,(e=>V(t[e],n[e]))),t.querySelector=xr,t.querySelectorAll=Mr,t.randomFloat=function(t,n=0){return yn()*(t-n)+n},t.randomInt=tt,t.range=function(t,n,e=1,r=[]){return h(e)?r:tt(...n.map((t=>e[t])))},t.regexTestFactory=wt,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let e=t.length;for(let r=0;re)return rt(t);if(1===n)return[t[tt(e-1,0)]];const r=[],o={};let i,c=0;for(;cht(t,r,n,e)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",e){return t.sort(((t,r)=>At(t,r,n,e)))},t.sortCollectionAscending=pt,t.sortCollectionAscendingFilter=gt,t.sortCollectionDescending=lt,t.sortCollectionDescendingFilter=ft,t.sortNumberAscending=function(t){return t.sort(J)},t.sortNumberDescening=function(t){return t.sort(Q)},t.sortObjectsAlphabetically=ht,t.sortObjectsAlphabeticallyReverse=At,t.sortUnique=ct,t.stringify=He,t.stubArray=()=>[],t.stubFalse=()=>zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>qt,t.subtract=J,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=Q,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const e=t.length;return t.slice(e-n,e)},t.themes=zr,t.throttle=function(t,n){function e(...t){e.id?e.shouldThrottle=qt:(e.callable(...t),e.id=Zt((()=>{e.shouldThrottle&&e.callable(...t),e.id=zt}),n))}return e.id=zt,e.callable=t.bind(e),e.clear=()=>{Vt.remove(e.id),e.id=zt},e},t.timer=Zt,t.timers=Vt,t.times=_t,t.timesAsync=async function(t,n){for(let e=0;en?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=e-n;for(;c=0&&(i=r[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,e):t},t.truncateRight=function(t,n){const e=t.length;return e>n?((t,n,e)=>{const r=t.split(""),o=r.length;let i,c=n;for(;c0&&(i=r[c]," "!==i);c++);return t.substring(c,e).trim()})(t,n,e):t},t.truth=qt,t.unZip=function(t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.unZipObject=t=>{const n=[],e=[];return jt(t,((t,r)=>{n.push(r),e.push(t)})),[n,e]},t.union=function(...t){return st(b(t))},t.uniqID=pr,t.unique=st,t.untilFalseArray=function(t,n){const e=t.length;for(let r=0;rGn(t)))},t.upperFirstLetter=Kn,t.upperFirstOnly=Jn,t.upperFirstOnlyAll=function(t){return t.replace(Zn,(t=>Jn(t)))},t.virtualStorage=yr,t.whileCompactMap=function(t,n,e=[],r){let o=0;for(;o!e.has(t)))},t.words=function(t){return t.match(Vn)||[]},t.wrap=function(t,n){return(...e)=>n(t,...e)},t.xor=function(...t){const n=w(Map),e=[];return 2===t.length?v(t[0],t[1]):(s(t,((t,e)=>{s(t,((t,r)=>{let o=n.get(t);if(o){if(o.parentIndex===e)return;o.count++}else o={count:1,parentIndex:e,child:t},n.set(t,o)}))})),d(n,(t=>{1===t.count&&e.push(t.child)})),e)},t.zip=function(...t){return t[0].map(((n,e)=>t.map((t=>t[e]))))},t.zipObject=xn})); //# sourceMappingURL=browser.js.map diff --git a/package/index.js b/package/index.js index 05f8b035..10ae692b 100644 --- a/package/index.js +++ b/package/index.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("fs/promises"),require("path"),require("url")):"function"==typeof define&&define.amd?define(["exports","fs/promises","path","url"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={},t.promises,t.path,t.url)}(this,(function(t,n,r,e){"use strict";function o(t){return t.length=0,t}function i(t){return void 0===t}function c(t){return Boolean(t.length)}function u(t){return null===t}function s(t){return!i(t)&&!u(t)}function a(t){return t}function f(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const a=n.call(e,t,i,r,c,u,o);s(a)&&r.push(a)})):f(t,((t,i,c,u)=>{const a=n(t,i,r,c,u,e,o);s(a)&&r.push(a)})),r}async function h(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const i=await n(t,e,r,o);s(i)&&r.push(i)})),r}const{sign:g}=Math;function y(t){return-1===g(t)}function d(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function A(t,n){return t.forEach(n),t}const b=Array.isArray;function w(t){return b(t)&&t||s(t)&&[t]||[]}function v(t){return t.flat(1/0)}const C=Reflect.construct;function O(t,n=[],r){const e=b(n)?n:[n];return r?C(t,e,r):C(t,e)}function j(...t){const n=O(Map),r=[];return f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function F(t,n=1,r=t.length){return t.splice(n,r)}function I(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function E(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function M(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function x(t,n,r=[],e){return await h(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const T=Object.keys;function B(t){if(t)return T(t)}const N=/\.|\[/,U=/]/g,P="";function k(t){return t.replace(U,P).split(N)}function $(t,n){if(!n)return!1;let r=n;return M(b(t)?t:k(t),(t=>(r=r[t],s(r)))),r}const D=Object.hasOwn;function L(t,...n){if(t)return M(n,(n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}}))}const _=t=>!!s(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function q(t,n){return t?.constructor===n||!1}function V(t){return n=>q(n,t)}function K(t){return t?.constructor?.name}function Z(t){return n=>K(n)===t||!1}function z(t){return function(n,...r){return r?t(n)&&M(r,t):t(n)}}const W=Z("Buffer"),G=z(W),J=(t,n)=>{if(t===n)return!0;if(G(t))return t.equals(n);if(t.toString()===n.toString())if(_(t)){const r=B(t);if(L(n,r))return M(r,(r=>J(t[r],n[r])))}else if(b(t)&&t.length===n.length)return M(t,((t,r)=>J(t,n[r])));return!1};const H=Math.max;function Q(t,n,r=[],e,o){return s(e)?f(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):f(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function X(t,n){const r=[];return await h(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function Y(t,n){return t-n}function tt(t,n){return n-t}const{floor:nt,random:rt}=Math;function et(t,n=0){return nt(rt()*(t-n))+n}const ot=Array.from;function it(t,n,r){if(s(t))return ot(t,n,r)}function ct(t,n=t.length){if(t.length<=1)return it(t);const r=it(t);let e,o,i=0;for(;ii?-1:0:1:-1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}function yt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function dt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function mt(t,n="id",r){return t.sort(((t,e)=>dt(t,e,n,r)))}const At=Z("Number"),bt=z(At);const wt=V(String);function vt(t,n){if(t)return wt(n)?t[n]:Q(n,(n=>t[n]))}function Ct(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function Ot(t){return n=>!!s(n)&&t.test(n)}const jt=Ot(/\.css$/),Ft=Ot(/\.html$/),It=Ot(/\.js$/),Et=Ot(/\.json$/);const Mt=Object.assign;function Rt(t,...n){if(s(t))return Mt(t,...n)}const St=async(t,n,r,e)=>{if(!t)return;const o=B(t);return s(r)?await h(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await h(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function xt(t,n,r,e){if(!t)return;const o=B(t);return s(r)?f(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):f(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const Tt=Z("Set"),Bt=z(Tt);function Nt(t,n){if(Bt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Ut=Z("GeneratorFunction"),Pt=z(Ut);async function kt(t,n,r){if(Bt(t)){for(const r of t)await n(r,t);return t}if(Pt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const $t=t=>!!s(t)&&t instanceof Function,Dt=Z("AsyncFunction"),Lt=z(Dt);function _t(t,n,r,e,o,i){return(c,u,a,f,l)=>{let h;const p=Lt(u);if(s(c)&&u)return h=b(c)?p?n:t:_(c)||$t(c)?p?e:r:o?p?i:o:Pt(c)?i:p?e:r,h(c,u,a,f,l)}}const qt=_t(f,h,xt,St,Nt,kt);class Vt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;qt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const Kt=!0,Zt=!1,zt=()=>{};function Wt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Kt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Jt=O(Gt);function Ht(t,n){return Jt.set(t,n)}const Qt=Reflect.apply;function Xt(t,n,r){if($t(t))return Qt(t,n,r)}async function Yt(t,n,r={}){if(t)return await St(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function tn(t,n,r={},e,o){if(t)return s(e)?xt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):xt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function nn(t){return t?.constructor}function rn(t,n=[]){const r=nn(t);return r===Function&&"function"===r.name?function(){}:O(r,n)}function en(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function on(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const cn=_t(Q,X,tn,Yt,en,on);async function un(t,n){if(!t)return;return R(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function sn(t,n){if(!t)return;return M(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function an(t,n=a){if(b(t)||Bt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function fn(t,n=a,r){if(Pt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(b(t)||Bt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const ln=_t(M,R,sn,un,an,fn);const hn=Function.prototype;function pn(t){return hn.call.bind(t)}const gn=Object.getOwnPropertyNames,yn=Object.getOwnPropertyDescriptor,dn=Object.defineProperty,mn=pn(Object.hasOwnProperty),An=Object.is;const{random:bn}=Math;const{sign:wn}=Math;const vn=Object.entries;async function Cn(t,n=a,r={}){return await St(t,(async(t,e,o,i,c)=>{const u=await n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function On(t,n=a,r={}){return xt(t,((t,e,o,i,c)=>{const u=n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function jn(t,n,r={}){return xt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Fn(t,n,r={}){return await St(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const In=Z("RegExp"),En=z(In),Mn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Rn(t){return t.replace(Mn,"\\$&")}function Sn(t,n){return n?Sn(Q(t,Rn)):RegExp(t.join("|"))}function xn(t){if(t)return B(t).length}const Tn=/[ _-]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Un=/[ _-]+/g,Pn=/[ ]+/g;const kn=/[ _-]+/g;const $n=/[ _-]+/g;function Dn(t,n=1){return t.substring(n)}const Ln=/%(?![\da-f]{2})/gi,_n=/&/g,qn=//g,Kn=/"/g;function Zn(t){return decodeURIComponent(t.replace(Ln,(()=>"%25")))}function zn(t){return t.replace(_n,"&").replace(qn,"<").replace(Vn,">").replace(Kn,""")}const Wn=/\S+/g,Gn=/\w+/g;const Jn=/\w+/g;function Hn(t){return t[0].toUpperCase()}function Qn(t){return Hn(t)+Dn(t)}function Xn(t){return Hn(t)+Dn(t).toLowerCase()}function Yn(t){return nn(t)?.name}function tr(t){return!s(t)}const nr=Z("Map"),rr=z(nr),er=/Array/,or="Array";function ir(t){if(t){const n=Yn(t);if(er.test(n)&&n!==or)return!0}return!1}const cr=Z("BigInt"),ur=z(cr),sr=Z("Boolean"),ar=z(sr),fr=Z("ArrayBuffer"),lr=z(fr);const hr=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const pr=Z("Date"),gr=z(pr);function yr(t){return!1===t}const dr=Z("Float32Array"),mr=z(dr),Ar=Z("Float64Array"),br=z(Ar),{isInteger:wr}=Number,vr=wr,Cr=Z("Int16Array"),Or=z(Cr),jr=Z("Int32Array"),Fr=z(jr),Ir=Z("Int8Array"),Er=z(Ir);function Mr(t){return!!t&&t instanceof Promise}function Rr(t){return!!t&&(Mr(t)||Lt(t)||Pt(t))}const{isSafeInteger:Sr}=Number,xr=Sr;const Tr=Z("Uint16Array"),Br=z(Tr),Nr=Z("Uint32Array"),Ur=z(Nr),Pr=Z("Uint8Array"),kr=z(Pr),$r=Z("Uint8ClampedArray"),Dr=z($r),Lr=Z("WeakMap"),_r=z(Lr),qr=void 0!==globalThis.Deno,Vr=void 0!==globalThis.process&&process.versions&&process.versions.node;function Kr(t,n=!0){return Boolean(t)&&n}function Zr(t,n){return yr(J(t,n))}const zr=JSON;const Wr=zr.stringify;function Gr(t,n,r){const e=globalThis.options||r;let o;return $t(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Wr(t)}\n\t\tExpected: ${Wr(n)}`,e)}async function Jr(t,n,r){const e=await t;return!($t(n)&&!1===await n(e,r))&&!Zr(e,n)||Gr(e,n,r)}const Hr=globalThis.structuredClone;async function Qr(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);s(e)&&r.push(e)}return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const i=await n(r,o,t);s(i)&&e(i)}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);s(c)&&(i?o.set(r,c):o[r]=c)}return o}function Xr(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const i=n(r,e,t);s(i)&&o(i)}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);s(c)&&(o?e.set(r,c):e[r]=c)}return e}const Yr=_t(l,p,On,Cn,Xr,Qr);function te(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=$t(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function ne(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=$t(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const re=_t(S,x,jn,Fn,te,ne);function ee(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const oe=ee(f),ie=ee(I);function ce(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const ue=ce(h),se=ce(E);const ae=Ot(/\./);class fe{list=O(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Kt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const le=O(fe);class he{static models={};constructor(t,n){s(n)?(Rt(this,n),this.modelName=t,he.models.set(t,n)):Rt(this,t)}}class pe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;xt(t,(n=>{t[n]=new pe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new pe(r),!0)})}}class ge{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return s(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ye=O(ge);class de{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Vt,t.Intervals=fe,t.Model=he,t.Store=pe,t.Timers=Gt,t.UniqID=ge,t.VirtualStorage=de,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Xt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const r={};return f(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Rr(t)||Rr(n)?Jr(t,n,r):!($t(n)&&!1===n(t,r))&&!Zr(t,n)||Gr(t,n,r)},t.assertAsync=Jr,t.assign=Rt,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=cn(t,(t=>$t(t)?t.bind(n):t));return r?Rt(r,e):e},t.cacheNativeMethod=pn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Tn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return O(Vt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(G(t))return lt(t);if(b(t))return o(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=o,t.clearBuffer=lt,t.clearIntervals=function(){Wt(setTimeout(zt,0),(t=>{le.remove(t)}))},t.clearTimers=function(){Wt(setTimeout(zt,0),(t=>{Jt.remove(t)}))},t.clone=function(t){return Hr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=rn,t.compact=function(t){if(_(t)){const n=B(t),r=n.length,e={};for(let o=0;oKr(t)))},t.compactKeys=function(t){const n=[];return xt(t,((t,r)=>{s(t)&&n.push(r)})),n},t.compactMap=Yr,t.compactMapArray=l,t.compactMapAsyncArray=p,t.compactMapAsyncObject=Cn,t.compactMapObject=On,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{const c=r.join(e,i);if((await n.stat(c)).isDirectory()){const u=r.join(o,i.replace(e,""));await n.mkdir(u,{recursive:!0}),await t(c,u)}else await async function(t,e,o){const i=r.join(t,o),c=r.join(e,o);await n.copyFile(i,c)}(e,o,i)})),!0},t.countBy=function(t,n){const r={};let e;return f(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return f(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return f(t,(t=>{t[n]||r++})),r},t.currentFile=function(t){return globalThis.__filename?__filename:e.fileURLToPath(t.url)},t.currentPath=function(t){return globalThis.__dirname?__dirname:r.dirname(e.fileURLToPath(t.url))},t.curry=function(t,n=t.length){const r=[],e=(...i)=>{if(r.push(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.curryRight=function(t,n=t.length){const r=[],e=(...i)=>{if(r.unshift(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.debounce=function(t,n){function r(...t){r.id!==Zt&&Jt.remove(r.id),r.id=Ht((()=>{r.callable(...t),r.id=Zt}),n)}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{r.id!==Zt&&(Jt.remove(r.id),r.id=Zt)},r},t.deduct=function(t){return t-1},t.defProp=dn,t.difference=j,t.divide=function(t,n){return t/n},t.drop=F,t.dropRight=(t,n=1,r=t.length)=>F(t,0,r-n),t.each=qt,t.eachArray=f,t.eachAsyncArray=h,t.eachAsyncObject=St,t.eachObject=xt,t.eachRight=I,t.eachRightAsync=E,t.ensureArray=w,t.ensureBuffer=function(t){return G(t)&&t||s(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Rn,t.escapeRegexRegex=Mn,t.every=ln,t.everyArg=function(...t){return Lt(t[0])?async function(...n){return ln(t,(async t=>ln(n,(async n=>t(n)))))}:function(...n){return ln(t,(t=>ln(n,(n=>t(n)))))}},t.everyArray=M,t.everyAsyncArray=R,t.everyAsyncObject=un,t.everyObject=sn,t.falsy=Zt,t.filter=re,t.filterArray=S,t.filterAsyncArray=x,t.filterAsyncObject=Fn,t.filterObject=jn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=ht,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(w(n))),[]);return r},t.flattenDeep=v,t.flow=oe,t.flowAsync=ue,t.flowAsyncRight=se,t.flowRight=ie,t.forEach=A,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else $t(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=Nt,t.forOfAsync=kt,t.forOfCompactMap=Xr,t.forOfCompactMapAsync=Qr,t.forOfEvery=an,t.forOfEveryAsync=fn,t.forOfFilter=te,t.forOfFilterAsync=ne,t.forOfMap=en,t.forOfMapAsync=on,t.generateLoop=_t,t.get=$,t.getEntries=function(t){if(s(t))return vn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return mt(t,n)[0]},t.getLowest=function(t,n){return gt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return M(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=yn,t.getPropNames=gn,t.getType=nn,t.getTypeName=Yn,t.groupBy=function(t,n){const r={};return f(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(tr(n)||tr(r))return!1;if(wt(n))return wt(r)?n.includes(r,e):En(r)?r.test(n):$t(r)?Boolean(r(n)):ln(r,(r=>Boolean(t(n,r))));if(b(n)){if(wt(r))return n.includes(r,e);if(En(r))return ln(n,(t=>t.test(r)));if(b(r))return ln(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}})))},t.hasDot=ae,t.hasKeys=L,t.hasLength=c,t.hasProp=mn,t.hasValue=s,t.htmlEntities=zn,t.ifInvoke=function(t,...n){if($t(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!s(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(s(t)){if($t(n))return r?Xt(n,r,e):n(...e);if(_(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eqt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return f(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return l(t,(t=>{if(M(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return le.set(t,n)},t.intervals=le,t.invert=function(t,n={}){if(t)return xt(t,((t,r)=>{n[t]=r})),n},t.invoke=function(t,n,r){return Q(t,((t,e)=>t[n](r,e)))},t.invokeAsync=function(t,n,r){return X(t,(async(t,e)=>t[n](r,e)))},t.isArguments=function(t){return!!s(t)&&"[object Arguments]"===t.toString()},t.isArray=b,t.isArrayBuffer=lr,t.isArrayBufferCall=fr,t.isArrayLike=function(t,n){if(tr(t)||$t(t))return!1;if(b(t)||ir(t))return!0;const r=t.length;if(!tr(r)||!bt(r)||r<0)return!1;if(n){const n=B(t);return!!n&&ln(n,((t,n)=>n>=0&&bt(n)))}return!0},t.isAsync=Lt,t.isAsyncCall=Dt,t.isBigInt=ur,t.isBigIntCall=cr,t.isBoolean=ar,t.isBooleanCall=sr,t.isBuffer=G,t.isBufferCall=W,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(s(t)){const n=t?.constructor?.name;return hr.test(n)}return!1},t.isConstructor=q,t.isConstructorFactory=V,t.isConstructorNameFactory=Z,t.isDate=gr,t.isDateCall=pr,t.isDeno=qr,t.isEmpty=function(t){return wt(t)||b(t)?!c(t):_(t)?!xn(t):!s(t)},t.isEqual=J,t.isF32=mr,t.isF32Call=dr,t.isF64=br,t.isF64Call=Ar,t.isFalse=yr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=jt,t.isFileHTML=Ft,t.isFileJS=It,t.isFileJSON=Et,t.isFloat=vr,t.isFunction=$t,t.isGenerator=Pt,t.isGeneratorCall=Ut,t.isI16=Or,t.isI16Call=Cr,t.isI32=Fr,t.isI32Call=jr,t.isI8=Er,t.isI8Call=Ir,t.isIterable=function(t){return s(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Rr,t.isMap=rr,t.isMapCall=nr,t.isMatchArray=function(t,n){return t.length===n.length&&M(t,((t,r)=>J(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=B(t),e=B(n);return r.length===e.length&&M(r,(r=>t[r]===n[r]))},t.isNegative=y,t.isNodejs=Vr,t.isNotArray=function(t){return!b(t)},t.isNotNumber=function(t){return!bt(t)},t.isNotString=function(t){return!wt(t)},t.isNull=u,t.isNumber=bt,t.isNumberCall=At,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=_,t.isPositive=function(t){return 1===wn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Mr,t.isRegex=En,t.isRegexCall=In,t.isRelated=function(t,n){return!tr(t)&&!tr(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xr,t.isSame=An,t.isSameType=function(t,n){const r=nn(t),e=nn(n);return r===e&&r.name===e.name},t.isSet=Bt,t.isSetCall=Tt,t.isString=wt,t.isTrue=function(t){return!0===t},t.isTruthy=Kr,t.isTypeFactory=z,t.isTypedArray=ir,t.isU16=Br,t.isU16Call=Tr,t.isU32=Ur,t.isU32Call=Nr,t.isU8=kr,t.isU8C=Dr,t.isU8CCall=$r,t.isU8Call=Pr,t.isUndefined=i,t.isWeakMap=_r,t.isWeakMapCall=Lr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return zr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Bn," ").trim().toLowerCase().replace(Nn,"-")},t.keys=B,t.largest=function(t){return H(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=cn,t.mapArray=Q,t.mapAsyncArray=X,t.mapAsyncObject=Yt,t.mapObject=tn,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{qt(r,((r,e)=>{if(n[e]&&(_(r)||b(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return s(n)?O(he,[t,n]):$(t,he.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=tr,t.noop=zt,t.notEqual=Zr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Mt,t.objectEntries=vn,t.objectSize=xn,t.omit=function(t,n){if(t){if(b(n)){const r=Sn(n);return jn(t,((t,n)=>!r.test(n)))}if(En(n))return jn(t,((t,r)=>!n.test(r)));if(wt(n))return jn(t,((t,r)=>r!==n));if(bt(n)){const r=n.toString();return jn(t,((t,n)=>n!==r))}return $t(n)?jn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(s(n)||(n=t(...r)),n)},t.onlyUnique=st,t.over=function(t){return(...n)=>cn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>ln(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[l(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return f(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return Q(t,(t=>vt(t,n)))},t.pluckObject=vt,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=B(t))=>M(r,(r=>J(t[r],n[r]))),t.randomFloat=function(t,n=0){return bn()*(t-n)+n},t.randomInt=et,t.range=function(t,n,r=1,e=[]){return y(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=Ot,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return ct(t);if(1===n)return[t[et(r-1,0)]];const e=[],o={};let i,c=0;for(;cyt(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>Ct(t,e,n,r)))},t.sortCollectionAscending=mt,t.sortCollectionAscendingFilter=dt,t.sortCollectionDescending=gt,t.sortCollectionDescendingFilter=pt,t.sortNumberAscending=function(t){return t.sort(Y)},t.sortNumberDescening=function(t){return t.sort(tt)},t.sortObjectsAlphabetically=yt,t.sortObjectsAlphabeticallyReverse=Ct,t.sortUnique=at,t.stringify=Wr,t.stubArray=()=>[],t.stubFalse=()=>Zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>Kt,t.subtract=Y,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=tt,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=Kt:(r.callable(...t),r.id=Ht((()=>{r.shouldThrottle&&r.callable(...t),r.id=Zt}),n))}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{Jt.remove(r.id),r.id=Zt},r},t.timer=Ht,t.timers=Jt,t.times=Wt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=Kt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return xt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ft(v(t))},t.uniqID=ye,t.unique=ft,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eQn(t)))},t.upperFirstLetter=Hn,t.upperFirstOnly=Xn,t.upperFirstOnlyAll=function(t){return t.replace(Jn,(t=>Xn(t)))},t.virtualStorage=function(t){return new de(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(Gn)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=O(Map),r=[];return 2===t.length?j(t[0],t[1]):(f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return f(t,((t,e)=>{r[t]=n[e]})),r}})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("fs/promises"),require("path"),require("url")):"function"==typeof define&&define.amd?define(["exports","fs/promises","path","url"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).$={},t.promises,t.path,t.url)}(this,(function(t,n,r,e){"use strict";function o(t){return t.length=0,t}function i(t){return void 0===t}function c(t){return Boolean(t.length)}function u(t){return null===t}function s(t){return!i(t)&&!u(t)}function a(t){return t}function f(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const a=n.call(e,t,i,r,c,u,o);s(a)&&r.push(a)})):f(t,((t,i,c,u)=>{const a=n(t,i,r,c,u,e,o);s(a)&&r.push(a)})),r}async function h(t,n,r,e){if(!t)return;const o=t.length;if(s(r))for(let i=0;i{const i=await n(t,e,r,o);s(i)&&r.push(i)})),r}const{sign:g}=Math;function y(t){return-1===g(t)}function d(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function A(t,n){return t.forEach(n),t}const b=Array.isArray;function w(t){return b(t)&&t||s(t)&&[t]||[]}function v(t){return t.flat(1/0)}const C=Reflect.construct;function O(t,n=[],r){const e=b(n)?n:[n];return r?C(t,e,r):C(t,e)}function j(...t){const n=O(Map),r=[];return f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function F(t,n=1,r=t.length){return t.splice(n,r)}function I(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function E(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function M(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,i,c,e)&&r.push(t)})),r}async function x(t,n,r=[],e){return await h(t,(async(t,o,i,c)=>{!0===await n(t,o,r,i,c,e)&&r.push(t)})),r}const T=Object.keys;function B(t){if(t)return T(t)}const N=/\.|\[/,U=/]/g,P="";function k(t){return t.replace(U,P).split(N)}function $(t,n){if(!n)return!1;let r=n;return M(b(t)?t:k(t),(t=>(r=r[t],s(r)))),r}const D=Object.hasOwn;function L(t,...n){if(t)return M(n,(n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}}))}const _=t=>!!s(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function q(t,n){return t?.constructor===n||!1}function V(t){return n=>q(n,t)}function K(t){return t?.constructor?.name}function Z(t){return n=>K(n)===t||!1}function z(t){return function(n,...r){return r?t(n)&&M(r,t):t(n)}}const W=Z("Buffer"),G=z(W),J=(t,n)=>{if(t===n)return!0;if(G(t))return t.equals(n);if(t.toString()===n.toString())if(_(t)){const r=B(t);if(L(n,r))return M(r,(r=>J(t[r],n[r])))}else if(b(t)&&t.length===n.length)return M(t,((t,r)=>J(t,n[r])));return!1};const H=Math.max;function Q(t,n,r=[],e,o){return s(e)?f(t,((t,i,c,u)=>{r[i]=n.call(e,t,i,r,c,u,o)})):f(t,((t,e,i,c)=>{r[e]=n(t,e,r,i,c,o)})),r}async function X(t,n){const r=[];return await h(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function Y(t,n){return t-n}function tt(t,n){return n-t}const{floor:nt,random:rt}=Math;function et(t,n=0){return nt(rt()*(t-n))+n}const ot=Array.from;function it(t,n,r){if(s(t))return ot(t,n,r)}function ct(t,n=t.length){if(t.length<=1)return it(t);const r=it(t);let e,o,i=0;for(;ii?-1:0:1:-1}function gt(t,n="id",r){return t.sort(((t,e)=>pt(t,e,n,r)))}function yt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):o.localeCompare(i)}function dt(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i?o?oi?1:0:-1:1}function mt(t,n="id",r){return t.sort(((t,e)=>dt(t,e,n,r)))}const At=Z("Number"),bt=z(At);const wt=V(String);function vt(t,n){if(t)return wt(n)?t[n]:Q(n,(n=>t[n]))}function Ct(t,n,r,e){const o=t[r],i=n[r];return o===i&&e?e(t,n,r):i.localeCompare(o)}function Ot(t){return n=>!!s(n)&&t.test(n)}const jt=Ot(/\.css$/),Ft=Ot(/\.html$/),It=Ot(/\.js$/),Et=Ot(/\.json$/);const Mt=Object.assign;function Rt(t,...n){if(s(t))return Mt(t,...n)}const St=async(t,n,r,e)=>{if(!t)return;const o=B(t);return s(r)?await h(o,((i,c,u,s)=>n.call(r,t[i],i,t,s,o,e))):await h(o,((r,i,c,u)=>n(t[r],r,t,u,o,e))),t};function xt(t,n,r,e){if(!t)return;const o=B(t);return s(r)?f(o,((o,i,c,u)=>{n.call(r,t[o],o,t,u,c,e)})):f(o,((r,o,i,c)=>{n(t[r],r,t,c,i,e)})),t}const Tt=Z("Set"),Bt=z(Tt);function Nt(t,n){if(Bt(t)){for(const r of t)n(r,t);return t}for(const[r,e]of t)n(e,r,t);return t}const Ut=Z("GeneratorFunction"),Pt=z(Ut);async function kt(t,n,r){if(Bt(t)){for(const r of t)await n(r,t);return t}if(Pt(t))for await(const e of t(...r))await n(e,t);for(const[r,e]of t)await n(e,r,t);return t}const $t=t=>!!s(t)&&t instanceof Function,Dt=Z("AsyncFunction"),Lt=z(Dt);function _t(t,n,r,e,o,i){return(c,u,a,f,l)=>{let h;const p=Lt(u);if(s(c)&&u)return h=b(c)?p?n:t:_(c)||$t(c)?p?e:r:o?p?i:o:Pt(c)?i:p?e:r,h(c,u,a,f,l)}}const qt=_t(f,h,xt,St,Nt,kt);class Vt{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;qt(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}const Kt=!0,Zt=!1,zt=()=>{};function Wt(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Kt),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Jt=O(Gt);function Ht(t,n){return Jt.set(t,n)}const Qt=Reflect.apply;function Xt(t,n,r){if($t(t))return Qt(t,n,r)}async function Yt(t,n,r={}){if(t)return await St(t,(async(t,e,o,i,c)=>{r[e]=await n(t,e,r,o,i,c)})),r}function tn(t,n,r={},e,o){if(t)return s(e)?xt(t,((t,i,c,u,s)=>{r[i]=n.call(e,t,i,r,c,u,s,o)})):xt(t,((t,e,i,c,u)=>{r[e]=n(t,e,r,i,c,u,o)})),r}function nn(t){return t?.constructor}function rn(t,n=[]){const r=nn(t);return r===Function&&"function"===r.name?function(){}:O(r,n)}function en(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);o?e.set(r,c):e[r]=c}return e}async function on(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);i?o.set(r,c):o[r]=c}return o}const cn=_t(Q,X,tn,Yt,en,on);async function un(t,n){if(!t)return;return R(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function sn(t,n){if(!t)return;return M(B(t),((r,e,o,i)=>n(t[r],r,t,i,o)))}function an(t,n=a){if(b(t)||Bt(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function fn(t,n=a,r){if(Pt(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(b(t)||Bt(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const ln=_t(M,R,sn,un,an,fn);const hn=Function.prototype;function pn(t){return hn.call.bind(t)}const gn=Object.getOwnPropertyNames,yn=Object.getOwnPropertyDescriptor,dn=Object.defineProperty,mn=pn(Object.hasOwnProperty),An=Object.is;const{random:bn}=Math;const{sign:wn}=Math;const vn=Object.entries;async function Cn(t,n=a,r={}){return await St(t,(async(t,e,o,i,c)=>{const u=await n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function On(t,n=a,r={}){return xt(t,((t,e,o,i,c)=>{const u=n(t,e,r,o,i,c);s(u)&&(r[e]=u)})),r}function jn(t,n,r={}){return xt(t,((t,e,o,i,c)=>{!0===n(t,e,r,o,i,c)&&(r[e]=t)})),r}async function Fn(t,n,r={}){return await St(t,(async(t,e,o,i,c)=>{!0===await n(t,e,r,o,i,c)&&(r[e]=t)})),r}const In=Z("RegExp"),En=z(In),Mn=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Rn(t){return t.replace(Mn,"\\$&")}function Sn(t,n){return n?Sn(Q(t,Rn)):RegExp(t.join("|"))}function xn(t){if(t)return B(t).length}const Tn=/[ _-]+/g;const Bn=/[ _-]+/g,Nn=/[ ]+/g;const Un=/[ _-]+/g,Pn=/[ ]+/g;const kn=/[ _-]+/g;const $n=/[ _-]+/g;function Dn(t,n=1){return t.substring(n)}const Ln=/%(?![\da-f]{2})/gi,_n=/&/g,qn=//g,Kn=/"/g;function Zn(t){return decodeURIComponent(t.replace(Ln,(()=>"%25")))}function zn(t){return t.replace(_n,"&").replace(qn,"<").replace(Vn,">").replace(Kn,""")}const Wn=/\S+/g,Gn=/\w+/g;const Jn=/\w+/g;function Hn(t){return t[0].toUpperCase()}function Qn(t){return Hn(t)+Dn(t)}function Xn(t){return Hn(t)+Dn(t).toLowerCase()}function Yn(t){return nn(t)?.name}function tr(t){return!s(t)}const nr=Z("Map"),rr=z(nr),er=/Array/,or="Array";function ir(t){if(t){const n=Yn(t);if(er.test(n)&&n!==or)return!0}return!1}const cr=Z("BigInt"),ur=z(cr),sr=Z("Boolean"),ar=z(sr),fr=Z("ArrayBuffer"),lr=z(fr);const hr=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");const pr=Z("Date"),gr=z(pr);function yr(t){return!1===t}const dr=Z("Float32Array"),mr=z(dr),Ar=Z("Float64Array"),br=z(Ar),{isInteger:wr}=Number,vr=wr,Cr=Z("Int16Array"),Or=z(Cr),jr=Z("Int32Array"),Fr=z(jr),Ir=Z("Int8Array"),Er=z(Ir);function Mr(t){return!!t&&t instanceof Promise}function Rr(t){return!!t&&(Mr(t)||Lt(t)||Pt(t))}const{isSafeInteger:Sr}=Number,xr=Sr;const Tr=Z("Uint16Array"),Br=z(Tr),Nr=Z("Uint32Array"),Ur=z(Nr),Pr=Z("Uint8Array"),kr=z(Pr),$r=Z("Uint8ClampedArray"),Dr=z($r),Lr=Z("WeakMap"),_r=z(Lr),qr=void 0!==globalThis.Deno,Vr=void 0!==globalThis.process&&process.versions&&process.versions.node;function Kr(t,n=!0){return Boolean(t)&&n}function Zr(t,n){return yr(J(t,n))}const zr=JSON;const Wr=zr.stringify;function Gr(t,n,r){const e=globalThis.options||r;let o;return $t(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Wr(t)}\n\t\tExpected: ${Wr(n)}`,e)}async function Jr(t,n,r){const e=await t;return!($t(n)&&!1===await n(e,r))&&!Zr(e,n)||Gr(e,n,r)}const Hr=globalThis.structuredClone;async function Qr(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);s(e)&&r.push(e)}return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const i=await n(r,o,t);s(i)&&e(i)}return o}const i=$t(o.set);for await(const[r,e]of t){const c=await n(e,r,o,t);s(c)&&(i?o.set(r,c):o[r]=c)}return o}function Xr(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const i=n(r,e,t);s(i)&&o(i)}return e}const o=$t(e.set);for(const[r,i]of t){const c=n(i,r,e,t);s(c)&&(o?e.set(r,c):e[r]=c)}return e}const Yr=_t(l,p,On,Cn,Xr,Qr);function te(t,n=a,r){const e=r||rn(t);if(b(t)||Bt(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=$t(e.set);for(const[o,i]of t){!0===n(i,o,e,t)&&(r?e.set(o,i):e[o]=i)}}return e}async function ne(t,n=a,r,e){if(Pt(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||rn(t);if(b(t)||Bt(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=$t(o.set);for await(const[e,i]of t){!0===await n(i,e,o,t)&&(r?o.set(e,i):o[e]=i)}}return o}const re=_t(S,x,jn,Fn,te,ne);function ee(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const oe=ee(f),ie=ee(I);function ce(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const ue=ce(h),se=ce(E);const ae=Ot(/\./);class fe{list=O(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Kt),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const le=O(fe);class he{static models={};constructor(t,n){s(n)?(Rt(this,n),this.modelName=t,he.models.set(t,n)):Rt(this,t)}}class pe{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;xt(t,(n=>{t[n]=new pe(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new pe(r),!0)})}}class ge{totalActive=0;freed=[];totalFree=0;get(){let t=this.freed.shift();return s(t)?this.totalFree--:(t=this.totalActive,this.totalActive++),t}free(t){this.freed.push(t),this.totalFree++;const n=this.totalActive>0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ye=O(ge);class de{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}t.Chain=Vt,t.Intervals=fe,t.Model=he,t.Store=pe,t.Timers=Gt,t.UniqID=ge,t.VirtualStorage=de,t.add=function(t,n){return t+n},t.after=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)},t.apply=Xt,t.arrayToRegex=Sn,t.arraysToObject=function(t,n){const r={};return f(t,((t,e)=>{r[n[e]]=t})),r},t.ary=function(t,n){return(...r)=>t(...r.splice(0,n))},t.assert=function(t,n,r){return Rr(t)||Rr(n)?Jr(t,n,r):!($t(n)&&!1===n(t,r))&&!Zr(t,n)||Gr(t,n,r)},t.assertAsync=Jr,t.assign=Rt,t.before=function(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)},t.bindAll=function(t,n,r){const e=cn(t,(t=>$t(t)?t.bind(n):t));return r?Rt(r,e):e},t.cacheNativeMethod=pn,t.calcProgress=function(t,n){return 0!==t&&(0===n?0:n/t*100)},t.camelCase=function(t){let n="";return t.replace(Tn," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n},t.chain=function(t){return O(Vt,[t])},t.chunk=function(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r},t.chunkString=function(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))},t.clear=function(t){if(t){if(G(t))return lt(t);if(b(t))return o(t);t.clear?t.clear():t.length&&(t.length=0)}return t},t.clearArray=o,t.clearBuffer=lt,t.clearIntervals=function(){Wt(setTimeout(zt,0),(t=>{le.remove(t)}))},t.clearTimers=function(){Wt(setTimeout(zt,0),(t=>{Jt.remove(t)}))},t.clone=function(t){return Hr(t)},t.cloneArray=function(t){return t.slice()},t.cloneType=rn,t.compact=function(t){if(_(t)){const n=B(t),r=n.length,e={};for(let o=0;oKr(t)))},t.compactKeys=function(t){const n=[];return xt(t,((t,r)=>{s(t)&&n.push(r)})),n},t.compactMap=Yr,t.compactMapArray=l,t.compactMapAsyncArray=p,t.compactMapAsyncObject=Cn,t.compactMapObject=On,t.concurrent=function(t,n,r){const e=t.length,o=[];for(let i=0;i{const c=r.join(e,i);if((await n.stat(c)).isDirectory()){const u=r.join(o,i.replace(e,""));await n.mkdir(u,{recursive:!0}),await t(c,u)}else await async function(t,e,o){const i=r.join(t,o),c=r.join(e,o);await n.copyFile(i,c)}(e,o,i)})),!0},t.countBy=function(t,n){const r={};let e;return f(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r},t.countKey=function(t,n){let r=0;return f(t,(t=>{t[n]&&r++})),r},t.countWithoutKey=function(t,n){let r=0;return f(t,(t=>{t[n]||r++})),r},t.currentFile=function(t){return globalThis.__filename?__filename:e.fileURLToPath(t.url)},t.currentPath=function(t){return globalThis.__dirname?__dirname:r.dirname(e.fileURLToPath(t.url))},t.curry=function(t,n=t.length){const r=[],e=(...i)=>{if(r.push(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.curryRight=function(t,n=t.length){const r=[],e=(...i)=>{if(r.unshift(...i),r.length===n){const n=t(...r);return o(r),n}return e};return e},t.debounce=function(t,n){function r(...t){r.id!==Zt&&Jt.remove(r.id),r.id=Ht((()=>{r.callable(...t),r.id=Zt}),n)}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{r.id!==Zt&&(Jt.remove(r.id),r.id=Zt)},r},t.deduct=function(t){return t-1},t.defProp=dn,t.difference=j,t.divide=function(t,n){return t/n},t.drop=F,t.dropRight=(t,n=1,r=t.length)=>F(t,0,r-n),t.each=qt,t.eachArray=f,t.eachAsyncArray=h,t.eachAsyncObject=St,t.eachObject=xt,t.eachRight=I,t.eachRightAsync=E,t.ensureArray=w,t.ensureBuffer=function(t){return G(t)&&t||s(t)&&Buffer.from(t)||Buffer.alloc(0)},t.escapeRegex=Rn,t.escapeRegexRegex=Mn,t.every=ln,t.everyArg=function(...t){return Lt(t[0])?async function(...n){return ln(t,(async t=>ln(n,(async n=>t(n)))))}:function(...n){return ln(t,(t=>ln(n,(n=>t(n)))))}},t.everyArray=M,t.everyAsyncArray=R,t.everyAsyncObject=un,t.everyObject=sn,t.falsy=Zt,t.filter=re,t.filterArray=S,t.filterAsyncArray=x,t.filterAsyncObject=Fn,t.filterObject=jn,t.findIndex=function(t,n,r="id"){const e=t.findIndex(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.findIndexCache=ht,t.findItem=function(t,n,r="id"){const e=t.find(((t,e)=>ht(t,0,0,n,r)));return-1!==e&&e},t.first=function(t,n){return n?t.slice(0,n):t[0]},t.flatten=function(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(w(n))),[]);return r},t.flattenDeep=v,t.flow=oe,t.flowAsync=ue,t.flowAsyncRight=se,t.flowRight=ie,t.forEach=A,t.forEachAsync=async function(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t{const e=n(t,r);o(e)}))}else $t(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r},t.forOf=Nt,t.forOfAsync=kt,t.forOfCompactMap=Xr,t.forOfCompactMapAsync=Qr,t.forOfEvery=an,t.forOfEveryAsync=fn,t.forOfFilter=te,t.forOfFilterAsync=ne,t.forOfMap=en,t.forOfMapAsync=on,t.generateLoop=_t,t.get=$,t.getEntries=function(t){if(s(t))return vn(t)},t.getFileExtension=function(t){if(t)return t.substring(t.lastIndexOf(".")+1)},t.getFilename=function(t){if(t)return t.substring(t.lastIndexOf("/")+1)},t.getHighest=function(t,n="id"){return mt(t,n)[0]},t.getLowest=function(t,n){return gt(t,n,!1)[0]},t.getNumberInsertIndex=function(t,n){let r=0;return M(t,((t,e)=>(r=e,n>=t&&(r=e+1,!0)))),r},t.getPropDesc=yn,t.getPropNames=gn,t.getType=nn,t.getTypeName=Yn,t.groupBy=function(t,n){const r={};return f(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r},t.has=function t(n,r,e){if(tr(n)||tr(r))return!1;if(wt(n))return wt(r)?n.includes(r,e):En(r)?r.test(n):$t(r)?Boolean(r(n)):ln(r,(r=>Boolean(t(n,r))));if(b(n)){if(wt(r))return n.includes(r,e);if(En(r))return ln(n,(t=>t.test(r)));if(b(r))return ln(r,(r=>Boolean(t(n,r))))}return!1},t.hasAnyKeys=function(t,...n){if(t)return Boolean(n.find((n=>{const r=k(n);if(1===r.length)return D(t,n);{const n=r.pop(),e=$(r,t);return!!e&&D(e,n)}})))},t.hasDot=ae,t.hasKeys=L,t.hasLength=c,t.hasProp=mn,t.hasValue=s,t.htmlEntities=zn,t.ifInvoke=function(t,...n){if($t(t))return t(...n)},t.ifNotAssign=(t,n,r)=>(n&&!s(t[n])&&(t[n]=r),t),t.ifValue=function(t,n,r,e){if(s(t)){if($t(n))return r?Xt(n,r,e):n(...e);if(_(n))return n[r]=t,n}},t.inAsync=async function(t,n){const r=t.length;for(let e=0;eqt(t,(t=>{t(n)})),t.increment=function(t){return t+1},t.indexBy=function(t,n="id"){const r={};return f(t,(t=>{r[t[n]]=t})),r},t.initial=function(t){return t.slice(0,t.length-1)},t.initialString=function(t,n=1){return t.slice(0,-1*n)},t.insertInRange=function(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)},t.intersection=function(t,...n){return l(t,(t=>{if(M(n,(n=>n.includes(t))))return t}))},t.interval=function(t,n){return le.set(t,n)},t.intervals=le,t.invert=function(t,n={}){if(t)return xt(t,((t,r)=>{n[t]=r})),n},t.invokeArray=function(t,n,r){if(!t)return;const e=t.length;if(s(r))for(let o=0;ot[n].call(e,r):(t,e)=>t[n](r))},t.invokeCollectionAsync=function(t,n,r,e){return X(t,e?t=>t[n].call(e,r):async t=>t[n](r))},t.isArguments=function(t){return!!s(t)&&"[object Arguments]"===t.toString()},t.isArray=b,t.isArrayBuffer=lr,t.isArrayBufferCall=fr,t.isArrayLike=function(t,n){if(tr(t)||$t(t))return!1;if(b(t)||ir(t))return!0;const r=t.length;if(!tr(r)||!bt(r)||r<0)return!1;if(n){const n=B(t);return!!n&&ln(n,((t,n)=>n>=0&&bt(n)))}return!0},t.isAsync=Lt,t.isAsyncCall=Dt,t.isBigInt=ur,t.isBigIntCall=cr,t.isBoolean=ar,t.isBooleanCall=sr,t.isBuffer=G,t.isBufferCall=W,t.isChild=function(t,n){return!(!t||!n)&&t instanceof n},t.isCloneable=function(t){if(s(t)){const n=t?.constructor?.name;return hr.test(n)}return!1},t.isConstructor=q,t.isConstructorFactory=V,t.isConstructorNameFactory=Z,t.isDate=gr,t.isDateCall=pr,t.isDeno=qr,t.isEmpty=function(t){return wt(t)||b(t)?!c(t):_(t)?!xn(t):!s(t)},t.isEqual=J,t.isF32=mr,t.isF32Call=dr,t.isF64=br,t.isF64Call=Ar,t.isFalse=yr,t.isFalsy=function(t,n=!0){return!1===Boolean(t)&&n},t.isFileCSS=jt,t.isFileHTML=Ft,t.isFileJS=It,t.isFileJSON=Et,t.isFloat=vr,t.isFunction=$t,t.isGenerator=Pt,t.isGeneratorCall=Ut,t.isI16=Or,t.isI16Call=Cr,t.isI32=Fr,t.isI32Call=jr,t.isI8=Er,t.isI8Call=Ir,t.isIterable=function(t){return s(t)&&"function"==typeof t[Symbol.iterator]},t.isKindAsync=Rr,t.isMap=rr,t.isMapCall=nr,t.isMatchArray=function(t,n){return t.length===n.length&&M(t,((t,r)=>J(n[r],t)))},t.isMatchObject=(t,n)=>{if(t===n)return!0;const r=B(t),e=B(n);return r.length===e.length&&M(r,(r=>t[r]===n[r]))},t.isNegative=y,t.isNodejs=Vr,t.isNotArray=function(t){return!b(t)},t.isNotNumber=function(t){return!bt(t)},t.isNotString=function(t){return!wt(t)},t.isNull=u,t.isNumber=bt,t.isNumberCall=At,t.isNumberEqual=function(t,n){return t===n},t.isNumberInRange=function(t,n,r){return t>n&&tr},t.isParent=function(t,n){return!!(t&&n&&n.call)&&t instanceof n},t.isPlainObject=_,t.isPositive=function(t){return 1===wn(t)},t.isPrimitive=function(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n},t.isPromise=Mr,t.isRegex=En,t.isRegexCall=In,t.isRelated=function(t,n){return!tr(t)&&!tr(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)},t.isSafeInt=xr,t.isSame=An,t.isSameType=function(t,n){const r=nn(t),e=nn(n);return r===e&&r.name===e.name},t.isSet=Bt,t.isSetCall=Tt,t.isString=wt,t.isTrue=function(t){return!0===t},t.isTruthy=Kr,t.isTypeFactory=z,t.isTypedArray=ir,t.isU16=Br,t.isU16Call=Tr,t.isU32=Ur,t.isU32Call=Nr,t.isU8=kr,t.isU8C=Dr,t.isU8CCall=$r,t.isU8Call=Pr,t.isUndefined=i,t.isWeakMap=_r,t.isWeakMapCall=Lr,t.isZero=function(t){return 0===t},t.jsonParse=function(t,n){if(t)return zr.parse(t,n)},t.kebabCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace(Bn," ").trim().toLowerCase().replace(Nn,"-")},t.keys=B,t.largest=function(t){return H(...t)},t.last=function(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]},t.lowerCase=function(t){return t.replace(/([A-Z]+)/g," $1").replace($n," ").trim().toLowerCase()},t.map=cn,t.mapArray=Q,t.mapAsyncArray=X,t.mapAsyncObject=Yt,t.mapObject=tn,t.mapRightArray=function(t,n,r=[],e){let o=0;const i=t.length;for(let c=i-1;c>=0;c--)r[o]=n(t[c],c,t,i,e),o++;return r},t.mapWhile=function(t,n,r=[],e){const o=t.length;for(let i=0;i{qt(r,((r,e)=>{if(n[e]&&(_(r)||b(r)||r.forEach))return t(n[e],r);n[e]=r}))})),n},t.model=function(t,n){return s(n)?O(he,[t,n]):$(t,he.models)},t.multiply=function(t,n){return t*n},t.negate=function(t){return(...n)=>!t(...n)},t.noValue=tr,t.noop=zt,t.notEqual=Zr,t.nthArg=function(t=0){return(...n)=>n[t]},t.objectAssign=Mt,t.objectEntries=vn,t.objectSize=xn,t.omit=function(t,n){if(t){if(b(n)){const r=Sn(n);return jn(t,((t,n)=>!r.test(n)))}if(En(n))return jn(t,((t,r)=>!n.test(r)));if(wt(n))return jn(t,((t,r)=>r!==n));if(bt(n)){const r=n.toString();return jn(t,((t,n)=>n!==r))}return $t(n)?jn(t,((t,r)=>!n(t,r))):void 0}},t.once=t=>{let n;return(...r)=>(s(n)||(n=t(...r)),n)},t.onlyUnique=st,t.over=function(t){return(...n)=>cn(t,(t=>t(...n)))},t.overEvery=function(t){return n=>ln(t,(t=>t(n)))},t.pair=function(t,n){return[t,n]},t.partition=function(t,n){const r=[];return[l(t,((t,e)=>{if(n(t,e))return t;r.push(t)})),r]},t.pick=(t,n,r={})=>{if(t)return f(n,(n=>{r[n]=t[n]})),r},t.pluck=function(t,n){return Q(t,(t=>vt(t,n)))},t.pluckObject=vt,t.promise=function(t){return new Promise(t)},t.propertyMatch=(t,n,r=B(t))=>M(r,(r=>J(t[r],n[r]))),t.randomFloat=function(t,n=0){return bn()*(t-n)+n},t.randomInt=et,t.range=function(t,n,r=1,e=[]){return y(r)?e:tt(...n.map((t=>r[t])))},t.regexTestFactory=Ot,t.remainder=function(t,n){return t%n},t.remove=function(t,n){let r=t.length;for(let e=0;er)return ct(t);if(1===n)return[t[et(r-1,0)]];const e=[],o={};let i,c=0;for(;cyt(t,e,n,r)))},t.sortCollectionAlphabeticallyReverse=function(t,n="id",r){return t.sort(((t,e)=>Ct(t,e,n,r)))},t.sortCollectionAscending=mt,t.sortCollectionAscendingFilter=dt,t.sortCollectionDescending=gt,t.sortCollectionDescendingFilter=pt,t.sortNumberAscending=function(t){return t.sort(Y)},t.sortNumberDescening=function(t){return t.sort(tt)},t.sortObjectsAlphabetically=yt,t.sortObjectsAlphabeticallyReverse=Ct,t.sortUnique=at,t.stringify=Wr,t.stubArray=()=>[],t.stubFalse=()=>Zt,t.stubObject=()=>({}),t.stubString=()=>"",t.stubTrue=()=>Kt,t.subtract=Y,t.subtractAll=function(t){return t.reduce(((t,n)=>t-n),0)},t.subtractReverse=tt,t.sumAll=function(t){return t.reduce(((t,n)=>t+n),0)},t.take=function(t,n=1){return t.slice(0,n)},t.takeRight=function(t,n=1){const r=t.length;return t.slice(r-n,r)},t.throttle=function(t,n){function r(...t){r.id?r.shouldThrottle=Kt:(r.callable(...t),r.id=Ht((()=>{r.shouldThrottle&&r.callable(...t),r.id=Zt}),n))}return r.id=Zt,r.callable=t.bind(r),r.clear=()=>{Jt.remove(r.id),r.id=Zt},r},t.timer=Ht,t.timers=Jt,t.times=Wt,t.timesAsync=async function(t,n){for(let r=0;rn?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=r-n;for(;c=0&&(i=e[c]," "!==i);c--);return t.slice(0,c).trim()})(t,n,r):t},t.truncateRight=function(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let i,c=n;for(;c0&&(i=e[c]," "!==i);c++);return t.substring(c,r).trim()})(t,n,r):t},t.truth=Kt,t.unZip=function(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.unZipObject=t=>{const n=[],r=[];return xt(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},t.union=function(...t){return ft(v(t))},t.uniqID=ye,t.unique=ft,t.untilFalseArray=function(t,n){const r=t.length;for(let e=0;eQn(t)))},t.upperFirstLetter=Hn,t.upperFirstOnly=Xn,t.upperFirstOnlyAll=function(t){return t.replace(Jn,(t=>Xn(t)))},t.virtualStorage=function(t){return new de(t)},t.whileCompactMap=function(t,n,r=[],e){let o=0;for(;o!r.has(t)))},t.words=function(t){return t.match(Gn)||[]},t.wrap=function(t,n){return(...r)=>n(t,...r)},t.xor=function(...t){const n=O(Map),r=[];return 2===t.length?j(t[0],t[1]):(f(t,((t,r)=>{f(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),A(n,(t=>{1===t.count&&r.push(t.child)})),r)},t.zip=function(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))},t.zipObject=(t,n)=>{const r={};return f(t,((t,e)=>{r[t]=n[e]})),r}})); //# sourceMappingURL=index.js.map diff --git a/package/module/basic.js b/package/module/basic.js index f1407d70..917ac48a 100644 --- a/package/module/basic.js +++ b/package/module/basic.js @@ -1,2 +1,2 @@ -function n(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function t(n){return n.length=0,n}function r(n){return n.slice()}function e(n){return void 0===n}function o(n){return Boolean(n.length)}function u(n){return null===n}function c(n){return!e(n)&&!u(n)}function i(n){return n}function s(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const f=t.call(e,n,u,r,i,s,o);c(f)&&r.push(f)})):s(n,((n,u,i,s)=>{const f=t(n,u,r,i,s,e,o);c(f)&&r.push(f)})),r}async function a(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const u=await t(n,e,r,o);c(u)&&r.push(u)})),r}const{sign:h}=Math;function g(n){return-1===h(n)}function p(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function m(n,t,r=1,e=[]){return g(r)?e:n{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function O(n,t=1,r=n.length){return n.splice(t,r)}const $=(n,t=1,r=n.length)=>O(n,0,r-t);function j(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function B(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function C(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function F(n,t,r=[],e){return await a(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function R(n,t){return t?n.slice(0,t):n[0]}function T(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(v(t))),[]);return r}function P(n){return n.slice(0,n.length-1)}function U(n,...t){return f(n,(n=>{if(C(t,(t=>t.includes(n))))return n}))}const N=Object.keys;function L(n){if(n)return N(n)}const _=/\.|\[/,D=/]/g,Z="";function k(n){return n.replace(D,Z).split(_)}function q(n,t){if(!t)return!1;let r=t;return C(y(n)?n:k(n),(n=>(r=r[n],c(r)))),r}const V=Object.hasOwn;function G(n,...t){if(n)return C(t,(t=>{const r=k(t);if(1===r.length)return V(n,t);{const t=r.pop(),e=q(r,n);return!!e&&V(e,t)}}))}function J(n,...t){if(n)return Boolean(t.find((t=>{const r=k(t);if(1===r.length)return V(n,t);{const t=r.pop(),e=q(r,n);return!!e&&V(e,t)}})))}const W=n=>!!c(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function z(n,t){return n?.constructor===t||!1}function H(n){return t=>z(t,n)}function K(n){return n?.constructor?.name}function Q(n){return t=>K(t)===n||!1}function X(n){return function(t,...r){return r?n(t)&&C(r,n):n(t)}}const Y=Q("Buffer"),nn=X(Y),tn=(n,t)=>{if(n===t)return!0;if(nn(n))return n.equals(t);if(n.toString()===t.toString())if(W(n)){const r=L(n);if(G(t,r))return C(r,(r=>tn(n[r],t[r])))}else if(y(n)&&n.length===t.length)return C(n,((n,r)=>tn(n,t[r])));return!1};function rn(n,t){return n.length===t.length&&C(n,((n,r)=>tn(t[r],n)))}const en=Math.max;function on(n){return en(...n)}function un(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function cn(n,t,r=[],e,o){return c(e)?s(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):s(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function sn(n,t){const r=[];return await a(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function fn(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function an(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function pn(n,t){return t-n}function dn(n){return n.sort(pn)}function mn(n,t){let r=n.length;for(let e=0;er)return $n(n);if(1===t)return[n[En(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Mn(n,t=1){return n.slice(0,t)}function Fn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Rn(n,t,r){return r.indexOf(n)===t}function Tn(n,t,r){return n!==r[t-1]}function Pn(n,t){return t?n.filter(Tn):n.filter(Rn)}function Un(...n){return Pn(A(n))}function Nn(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function qn(...n){const t=I(Map),r=[];return 2===n.length?x(n[0],n[1]):(s(n,((n,r)=>{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Vn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Gn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Jn(n){return nn(n)&&n||c(n)&&Buffer.from(n)||Buffer.alloc(0)}function Wn(n){return n.fill(0),n}function zn(n,t){const r={};let e;return s(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function Hn(n,t){let r=0;return s(n,(n=>{n[t]&&r++})),r}function Kn(n,t){let r=0;return s(n,(n=>{n[t]||r++})),r}function Qn(n,t,r,e,o){if(n[o]===e)return!0}function Xn(n,t,r="id"){const e=n.findIndex(((n,e)=>Qn(n,0,0,t,r)));return-1!==e&&e}function Yn(n,t,r="id"){const e=n.find(((n,e)=>Qn(n,0,0,t,r)));return-1!==e&&e}function nt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function tt(n,t="id",r){return n.sort(((n,e)=>nt(n,e,t,r)))}function rt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function et(n,t="id",r){return n.sort(((n,e)=>rt(n,e,t,r)))}function ot(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function ut(n,t="id",r){return n.sort(((n,e)=>ot(n,e,t,r)))}function ct(n,t="id"){return ut(n,t)[0]}function it(n,t){return tt(n,t,!1)[0]}function st(n,t){const r={};return s(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function ft(n,t="id"){const r={};return s(n,(n=>{r[n[t]]=n})),r}function at(n,t,r){return cn(n,((n,e)=>n[t](r,e)))}function lt(n,t,r){return sn(n,(async(n,e)=>n[t](r,e)))}const ht=Q("Number"),gt=X(ht);function pt(n){return!gt(n)}const dt=H(String);function mt(n){return!dt(n)}function wt(n,t){if(n)return dt(t)?n[t]:cn(t,(t=>n[t]))}function yt(n,t){return cn(n,(n=>wt(n,t)))}function bt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function vt(n,t="id",r){return n.sort(((n,e)=>bt(n,e,t,r)))}function At(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function Et(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function It(n){return t=>!!c(t)&&n.test(t)}const xt=It(/\.css$/),Ot=It(/\.html$/),$t=It(/\.js$/),jt=It(/\.json$/);function Bt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function Ct(n,t){return(...r)=>n(...r.splice(0,t))}function St(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Mt=Object.assign;function Ft(n,...t){if(c(n))return Mt(n,...t)}const Rt=async(n,t,r,e)=>{if(!n)return;const o=L(n);return c(r)?await a(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await a(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Tt(n,t,r,e){if(!n)return;const o=L(n);return c(r)?s(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):s(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function Pt(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!c(n)&&n instanceof Function,qt=Q("AsyncFunction"),Vt=X(qt);function Gt(n,t,r,e,o,u){return(i,s,f,a,l)=>{let h;const g=Vt(s);if(c(i)&&s)return h=y(i)?g?t:n:W(i)||kt(i)?g?e:r:o?g?u:o:Dt(i)?u:g?e:r,h(i,s,f,a,l)}}const Jt=Gt(s,a,Tt,Rt,Lt,Zt);class Wt{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Jt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function zt(n){return I(Wt,[n])}function Ht(n,r=n.length){const e=[],o=(...u)=>{if(e.push(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}function Kt(n,r=n.length){const e=[],o=(...u)=>{if(e.unshift(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}const Qt=!0,Xt=()=>Qt,Yt=!1,nr=()=>Yt,tr=()=>{};function rr(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,Qt),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const ur=I(or);function cr(n,t){return ur.set(n,t)}function ir(){rr(setTimeout(tr,0),(n=>{ur.remove(n)}))}const sr=Reflect.apply;function fr(n,t,r){if(kt(n))return sr(n,t,r)}function ar(n,t){function r(...n){r.id!==Yt&&ur.remove(r.id),r.id=cr((()=>{r.callable(...n),r.id=Yt}),t)}return r.id=Yt,r.callable=n.bind(r),r.clear=()=>{r.id!==Yt&&(ur.remove(r.id),r.id=Yt)},r}function lr(n,...t){if(kt(n))return n(...t)}async function hr(n,t){const r=n.length;for(let e=0;eJt(n,(n=>{n(t)}));function pr(n){return(...t)=>!n(...t)}function dr(n=0){return(...t)=>t[n]}const mr=n=>{let t;return(...r)=>(c(t)||(t=n(...r)),t)};async function wr(n,t,r={}){if(n)return await Rt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function yr(n,t,r={},e,o){if(n)return c(e)?Tt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Tt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function br(n){return n?.constructor}function vr(n,t=[]){const r=br(n);return r===Function&&"function"===r.name?function(){}:I(r,t)}function Ar(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=kt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Er(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=kt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const Ir=Gt(cn,sn,yr,wr,Ar,Er);function xr(n){return(...t)=>Ir(n,(n=>n(...t)))}async function Or(n,t){if(!n)return;return S(L(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function $r(n,t){if(!n)return;return C(L(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function jr(n,t=i){if(y(n)||Nt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Br(n,t=i,r){if(Dt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(y(n)||Nt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Cr=Gt(C,S,$r,Or,jr,Br);function Sr(n){return t=>Cr(n,(n=>n(t)))}function Mr(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Fr(n,t){function r(...n){r.id?r.shouldThrottle=Qt:(r.callable(...n),r.id=cr((()=>{r.shouldThrottle&&r.callable(...n),r.id=Yt}),t))}return r.id=Yt,r.callable=n.bind(r),r.clear=()=>{ur.remove(r.id),r.id=Yt},r}function Rr(n,t){return(...r)=>t(n,...r)}const Tr=Function.prototype;function Pr(n){return Tr.call.bind(n)}const Ur=Object.getOwnPropertyNames,Nr=Object.getOwnPropertyDescriptor,Lr=Object.defineProperty,_r=Pr(Object.hasOwnProperty),Dr=Object.is;function Zr(n,t){return n+t}function kr(n){return n-1}function qr(n,t){return n/t}function Vr(n){return n+1}function Gr(n,t){return n*t}function Jr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:Wr}=Math;function zr(n,t=0){return Wr()*(n-t)+t}function Hr(n,t){return n%t}function Kr(n){return n.reduce(((n,t)=>n-t),0)}function Qr(n){return n.reduce(((n,t)=>n+t),0)}function Xr(n,t,r){return n>t&&nr}const{sign:ne}=Math;function te(n){return 1===ne(n)}function re(n){return 0===n}const ee=Object.entries;function oe(n){if(c(n))return ee(n)}function ue(n){const t=[];return Tt(n,((n,r)=>{c(n)&&t.push(r)})),t}async function ce(n,t=i,r={}){return await Rt(n,(async(n,e,o,u,i)=>{const s=await t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function ie(n,t=i,r={}){return Tt(n,((n,e,o,u,i)=>{const s=t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function se(n,t,r={}){return Tt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function fe(n,t,r={}){return await Rt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function ae(n,t={}){if(n)return Tt(n,((n,r)=>{t[n]=r})),t}const le=(n,t)=>{if(n===t)return!0;const r=L(n),e=L(t);return r.length===e.length&&C(r,(r=>n[r]===t[r]))},he=Q("RegExp"),ge=X(he),pe=/[()[\]{}*+?^$|#.,/\\\s-]/g;function de(n){return n.replace(pe,"\\$&")}function me(n,t){return t?me(cn(n,de)):RegExp(n.join("|"))}function we(n,t){if(n){if(y(t)){const r=me(t);return se(n,((n,t)=>!r.test(t)))}if(ge(t))return se(n,((n,r)=>!t.test(r)));if(dt(t))return se(n,((n,r)=>r!==t));if(gt(t)){const r=t.toString();return se(n,((n,t)=>t!==r))}return kt(t)?se(n,((n,r)=>!t(n,r))):void 0}}const ye=(n,t,r={})=>{if(n)return s(t,(t=>{r[t]=n[t]})),r};function be(n){if(n)return L(n).length}const ve=(n,t)=>{const r={};return s(n,((n,e)=>{r[n]=t[e]})),r},Ae=n=>{const t=[],r=[];return Tt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Ee=/[ _-]+/g;function Ie(n){let t="";return n.replace(Ee," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const xe=/[ _-]+/g,Oe=/[ ]+/g;function $e(n){return n.replace(/([A-Z]+)/g," $1").replace(xe," ").trim().toLowerCase().replace(Oe,"-")}const je=/[ _-]+/g,Be=/[ ]+/g;function Ce(n){return n.replace(/([A-Z]+)/g," $1").replace(je," ").trim().toLowerCase().replace(Be,"_")}const Se=/[ _-]+/g;function Me(n){return n.replace(/([A-Z]+)/g," $1").replace(Se," ").trim().toUpperCase()}const Fe=/[ _-]+/g;function Re(n){return n.replace(/([A-Z]+)/g," $1").replace(Fe," ").trim().toLowerCase()}function Te(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function Pe(n,t=1){return n[n.length-t]}function Ue(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function Ne(n,t=1){return n.slice(0,-1*t)}function Le(n,t=1){return n.substring(t)}function _e(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function De(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function Ze(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const ke=/%(?![\da-f]{2})/gi,qe=/&/g,Ve=//g,Je=/"/g;function We(n){return decodeURIComponent(n.replace(ke,(()=>"%25")))}function ze(n){return n.replace(qe,"&").replace(Ve,"<").replace(Ge,">").replace(Je,""")}function He(n){return ze(We(n))}const Ke=/\S+/g,Qe=/\w+/g;function Xe(n){return n.match(Ke)||[]}function Ye(n){return n.match(Qe)||[]}const no=/\w+/g;function to(n){return n[0].toUpperCase()}function ro(n){return to(n)+Le(n)}function eo(n){return to(n)+Le(n).toLowerCase()}function oo(n){return n.replace(no,(n=>ro(n)))}function uo(n){return n.replace(no,(n=>eo(n)))}function co(n){return br(n)?.name}function io(n){return!!c(n)&&"[object Arguments]"===n.toString()}function so(n){return!c(n)}const fo=Q("Map"),ao=X(fo),lo=/Array/,ho="Array";function go(n){if(n){const t=co(n);if(lo.test(t)&&t!==ho)return!0}return!1}function po(n,t){if(so(n)||kt(n))return!1;if(y(n)||go(n))return!0;const r=n.length;if(!so(r)||!gt(r)||r<0)return!1;if(t){const t=L(n);return!!t&&Cr(t,((n,t)=>t>=0&>(t)))}return!0}const mo=Q("BigInt"),wo=X(mo),yo=Q("Boolean"),bo=X(yo),vo=Q("ArrayBuffer"),Ao=X(vo);function Eo(n,t){return!(!n||!t)&&n instanceof t}const Io=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function xo(n){if(c(n)){const t=n?.constructor?.name;return Io.test(t)}return!1}const Oo=Q("Date"),$o=X(Oo);function jo(n){return dt(n)||y(n)?!o(n):W(n)?!be(n):!c(n)}function Bo(n){return!1===n}const Co=Q("Float32Array"),So=X(Co),Mo=Q("Float64Array"),Fo=X(Mo),{isInteger:Ro}=Number,To=Ro,Po=Q("Int16Array"),Uo=X(Po),No=Q("Int32Array"),Lo=X(No),_o=Q("Int8Array"),Do=X(_o);function Zo(n){return c(n)&&"function"==typeof n[Symbol.iterator]}function ko(n){return!!n&&n instanceof Promise}function qo(n){return!!n&&(ko(n)||Vt(n)||Dt(n))}function Vo(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Go(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Jo(n,t){return!so(n)&&!so(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:Wo}=Number,zo=Wo;function Ho(n,t){const r=br(n),e=br(t);return r===e&&r.name===e.name}function Ko(n){return!0===n}const Qo=Q("Uint16Array"),Xo=X(Qo),Yo=Q("Uint32Array"),nu=X(Yo),tu=Q("Uint8Array"),ru=X(tu),eu=Q("Uint8ClampedArray"),ou=X(eu),uu=Q("WeakMap"),cu=X(uu),iu=void 0!==globalThis.Deno,su=void 0!==globalThis.process&&process.versions&&process.versions.node;function fu(n,t=!0){return Boolean(n)&&t}function au(n,t=!0){return!1===Boolean(n)&&t}function lu(n,t,r,e){if(c(n)){if(kt(t))return r?fr(t,r,e):t(...e);if(W(t))return t[r]=n,t}}function hu(n,t){return Bo(tn(n,t))}const gu=JSON;function pu(n,t){if(n)return gu.parse(n,t)}const du=gu.stringify;function mu(n,t,r){const e=globalThis.options||r;let o;return kt(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${du(n)}\n\t\tExpected: ${du(t)}`,e)}async function wu(n,t,r){const e=await n;return!(kt(t)&&!1===await t(e,r))&&!hu(e,t)||mu(e,t,r)}function yu(n,t,r){if(qo(n)||qo(t))return wu(n,t,r);return!(kt(t)&&!1===t(n,r))&&!hu(n,t)||mu(n,t,r)}function bu(n,t,r){const e=Ir(n,(n=>kt(n)?n.bind(t):n));return r?Ft(r,e):e}function vu(n){if(n){if(nn(n))return Wn(n);if(y(n))return t(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const Au=globalThis.structuredClone;function Eu(n){return Au(n)}function Iu(n){if(W(n)){const t=L(n),r=t.length,e={};for(let o=0;ofu(n)))}async function xu(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);c(e)&&r.push(e)}return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);c(u)&&e(u)}return o}const u=kt(o.set);for await(const[r,e]of n){const i=await t(e,r,o,n);c(i)&&(u?o.set(r,i):o[r]=i)}return o}function Ou(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);c(u)&&o(u)}return e}const o=kt(e.set);for(const[r,u]of n){const i=t(u,r,e,n);c(i)&&(o?e.set(r,i):e[r]=i)}return e}const $u=Gt(f,l,ie,ce,Ou,xu);function ju(...n){return Vt(n[0])?async function(...t){return Cr(n,(async n=>Cr(t,(async t=>n(t)))))}:function(...t){return Cr(n,(n=>Cr(t,(t=>n(t)))))}}function Bu(n,t=i,r){const e=r||vr(n);if(y(n)||Nt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=kt(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Cu(n,t=i,r,e){if(Dt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||vr(n);if(y(n)||Nt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=kt(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Su=Gt(M,F,se,fe,Bu,Cu);function Mu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Fu=Mu(s),Ru=Mu(j);function Tu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const Pu=Tu(a),Uu=Tu(B);function Nu(n,t){const r=vr(n),e=r.push||r.add;if(e&&kt(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else kt(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function Lu(n,t){const r={};return s(n,((n,e)=>{r[t[e]]=n})),r}function _u(n,t,r){if(so(n)||so(t))return!1;if(dt(n))return dt(t)?n.includes(t,r):ge(t)?t.test(n):kt(t)?Boolean(t(n)):Cr(t,(t=>Boolean(_u(n,t))));if(y(n)){if(dt(t))return n.includes(t,r);if(ge(t))return Cr(n,(n=>n.test(t)));if(y(t))return Cr(t,(t=>Boolean(_u(n,t))))}return!1}const Du=It(/\./),Zu=(n,t,r)=>(t&&!c(n[t])&&(n[t]=r),n);class ku{list=I(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,Qt),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const qu=I(ku);function Vu(n,t){return qu.set(n,t)}function Gu(){rr(setTimeout(tr,0),(n=>{qu.remove(n)}))}function Ju(n,...t){return Jt(t,(t=>{Jt(t,((t,r)=>{if(n[r]&&(W(t)||y(t)||t.forEach))return Ju(n[r],t);n[r]=t}))})),n}class Wu{static models={};constructor(n,t){c(t)?(Ft(this,t),this.modelName=n,Wu.models.set(n,t)):Ft(this,n)}}function zu(n,t){return c(t)?I(Wu,[n,t]):q(n,Wu.models)}function Hu(n,t){return[n,t]}function Ku(n,t,r){const e=n.length,o=[];for(let u=0;uC(r,(r=>tn(n[r],t[r])));function nc(n,t,r){return t&&W(n)||gt(t)&&y(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function tc(n,t,r){return gt(r)&&y(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class rc{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Tt(n,(t=>{n[t]=new rc(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new rc(r),!0)})}}const ec=()=>[],oc=()=>({}),uc=()=>"";async function cc(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const ac=I(fc);class lc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function hc(n){return new lc(n)}export{Wt as Chain,ku as Intervals,Wu as Model,rc as Store,or as Timers,fc as UniqID,lc as VirtualStorage,Zr as add,Bt as after,fr as apply,me as arrayToRegex,Lu as arraysToObject,Ct as ary,yu as assert,wu as assertAsync,Ft as assign,St as before,bu as bindAll,Pr as cacheNativeMethod,Jr as calcProgress,Ie as camelCase,zt as chain,n as chunk,Ue as chunkString,vu as clear,t as clearArray,Wn as clearBuffer,Gu as clearIntervals,ir as clearTimers,Eu as clone,r as cloneArray,vr as cloneType,Iu as compact,ue as compactKeys,$u as compactMap,f as compactMapArray,l as compactMapAsyncArray,ce as compactMapAsyncObject,ie as compactMapObject,Ku as concurrent,Qu as concurrentStatus,I as construct,K as constructorName,zn as countBy,Hn as countKey,Kn as countWithoutKey,Ht as curry,Kt as curryRight,ar as debounce,kr as deduct,Lr as defProp,x as difference,qr as divide,O as drop,$ as dropRight,Jt as each,s as eachArray,a as eachAsyncArray,Rt as eachAsyncObject,Tt as eachObject,j as eachRight,B as eachRightAsync,v as ensureArray,Jn as ensureBuffer,de as escapeRegex,pe as escapeRegexRegex,Cr as every,ju as everyArg,C as everyArray,S as everyAsyncArray,Or as everyAsyncObject,$r as everyObject,Yt as falsy,Su as filter,M as filterArray,F as filterAsyncArray,fe as filterAsyncObject,se as filterObject,Xn as findIndex,Qn as findIndexCache,Yn as findItem,R as first,T as flatten,A as flattenDeep,Fu as flow,Pu as flowAsync,Uu as flowAsyncRight,Ru as flowRight,w as forEach,Pt as forEachAsync,Nu as forMap,Lt as forOf,Zt as forOfAsync,Ou as forOfCompactMap,xu as forOfCompactMapAsync,jr as forOfEvery,Br as forOfEveryAsync,Bu as forOfFilter,Cu as forOfFilterAsync,Ar as forOfMap,Er as forOfMapAsync,Gt as generateLoop,q as get,oe as getEntries,At as getFileExtension,Et as getFilename,ct as getHighest,it as getLowest,Sn as getNumberInsertIndex,Nr as getPropDesc,Ur as getPropNames,br as getType,co as getTypeName,st as groupBy,_u as has,J as hasAnyKeys,Du as hasDot,G as hasKeys,o as hasLength,_r as hasProp,c as hasValue,ze as htmlEntities,lr as ifInvoke,Zu as ifNotAssign,lu as ifValue,hr as inAsync,gr as inSync,Vr as increment,ft as indexBy,P as initial,Ne as initialString,Te as insertInRange,U as intersection,Vu as interval,qu as intervals,ae as invert,at as invoke,lt as invokeAsync,io as isArguments,y as isArray,Ao as isArrayBuffer,vo as isArrayBufferCall,po as isArrayLike,Vt as isAsync,qt as isAsyncCall,wo as isBigInt,mo as isBigIntCall,bo as isBoolean,yo as isBooleanCall,nn as isBuffer,Y as isBufferCall,Eo as isChild,xo as isCloneable,z as isConstructor,H as isConstructorFactory,Q as isConstructorNameFactory,$o as isDate,Oo as isDateCall,iu as isDeno,jo as isEmpty,tn as isEqual,So as isF32,Co as isF32Call,Fo as isF64,Mo as isF64Call,Bo as isFalse,au as isFalsy,xt as isFileCSS,Ot as isFileHTML,$t as isFileJS,jt as isFileJSON,To as isFloat,kt as isFunction,Dt as isGenerator,_t as isGeneratorCall,Uo as isI16,Po as isI16Call,Lo as isI32,No as isI32Call,Do as isI8,_o as isI8Call,Zo as isIterable,qo as isKindAsync,ao as isMap,fo as isMapCall,rn as isMatchArray,le as isMatchObject,g as isNegative,su as isNodejs,b as isNotArray,pt as isNotNumber,mt as isNotString,u as isNull,gt as isNumber,ht as isNumberCall,On as isNumberEqual,Xr as isNumberInRange,Yr as isNumberNotInRange,Vo as isParent,W as isPlainObject,te as isPositive,Go as isPrimitive,ko as isPromise,ge as isRegex,he as isRegexCall,Jo as isRelated,zo as isSafeInt,Dr as isSame,Ho as isSameType,Nt as isSet,Ut as isSetCall,dt as isString,Ko as isTrue,fu as isTruthy,X as isTypeFactory,go as isTypedArray,Xo as isU16,Qo as isU16Call,nu as isU32,Yo as isU32Call,ru as isU8,ou as isU8C,eu as isU8CCall,tu as isU8Call,e as isUndefined,cu as isWeakMap,uu as isWeakMapCall,re as isZero,pu as jsonParse,$e as kebabCase,L as keys,on as largest,un as last,Re as lowerCase,Ir as map,cn as mapArray,sn as mapAsyncArray,wr as mapAsyncObject,yr as mapObject,fn as mapRightArray,an as mapWhile,Ju as merge,zu as model,Gr as multiply,pr as negate,so as noValue,tr as noop,hu as notEqual,dr as nthArg,Mt as objectAssign,ee as objectEntries,be as objectSize,we as omit,mr as once,Rn as onlyUnique,xr as over,Sr as overEvery,Hu as pair,gn as partition,ye as pick,yt as pluck,wt as pluckObject,Xu as promise,Yu as propertyMatch,zr as randomFloat,En as randomInt,m as range,d as rangeDown,p as rangeUp,We as rawURLDecode,Mr as reArg,It as regexTestFactory,Hr as remainder,mn as remove,wn as removeBy,_e as replaceList,yn as rest,Le as restString,i as returnValue,bn as right,Pe as rightString,jn as sample,He as sanitize,nc as setKey,tc as setValue,$n as shuffle,Cn as smallest,Ce as snakeCase,et as sortCollectionAlphabetically,vt as sortCollectionAlphabeticallyReverse,ut as sortCollectionAscending,ot as sortCollectionAscendingFilter,tt as sortCollectionDescending,nt as sortCollectionDescendingFilter,hn as sortNumberAscending,dn as sortNumberDescening,rt as sortObjectsAlphabetically,bt as sortObjectsAlphabeticallyReverse,Tn as sortUnique,du as stringify,ec as stubArray,nr as stubFalse,oc as stubObject,uc as stubString,Xt as stubTrue,ln as subtract,Kr as subtractAll,pn as subtractReverse,Qr as sumAll,Mn as take,Fn as takeRight,Fr as throttle,cr as timer,ur as timers,rr as times,cc as timesAsync,er as timesMap,ic as timesMapAsync,xn as toArray,k as toPath,sc as toggle,Xe as tokenize,De as truncate,Ze as truncateRight,Qt as truth,Gn as unZip,Ae as unZipObject,Un as union,ac as uniqID,Pn as unique,Nn as untilFalseArray,Ln as untilTrueArray,Me as upperCase,ro as upperFirst,oo as upperFirstAll,to as upperFirstLetter,eo as upperFirstOnly,uo as upperFirstOnlyAll,hc as virtualStorage,_n as whileCompactMap,Dn as whileEachArray,Zn as whileMapArray,kn as without,Ye as words,Rr as wrap,qn as xor,Vn as zip,ve as zipObject}; +function n(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function t(n){return n.length=0,n}function r(n){return n.slice()}function e(n){return void 0===n}function o(n){return Boolean(n.length)}function u(n){return null===n}function c(n){return!e(n)&&!u(n)}function i(n){return n}function s(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const f=t.call(e,n,u,r,i,s,o);c(f)&&r.push(f)})):s(n,((n,u,i,s)=>{const f=t(n,u,r,i,s,e,o);c(f)&&r.push(f)})),r}async function a(n,t,r,e){if(!n)return;const o=n.length;if(c(r))for(let u=0;u{const u=await t(n,e,r,o);c(u)&&r.push(u)})),r}const{sign:h}=Math;function g(n){return-1===h(n)}function p(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function m(n,t,r=1,e=[]){return g(r)?e:n{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function O(n,t=1,r=n.length){return n.splice(t,r)}const $=(n,t=1,r=n.length)=>O(n,0,r-t);function j(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function B(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function C(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function F(n,t,r=[],e){return await a(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function R(n,t){return t?n.slice(0,t):n[0]}function T(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(v(t))),[]);return r}function P(n){return n.slice(0,n.length-1)}function U(n,...t){return f(n,(n=>{if(C(t,(t=>t.includes(n))))return n}))}function N(n,t,r){if(!n)return;const e=n.length;if(c(r))for(let o=0;o(r=r[n],c(r)))),r}const G=Object.hasOwn;function J(n,...t){if(n)return C(t,(t=>{const r=q(t);if(1===r.length)return G(n,t);{const t=r.pop(),e=V(r,n);return!!e&&G(e,t)}}))}function W(n,...t){if(n)return Boolean(t.find((t=>{const r=q(t);if(1===r.length)return G(n,t);{const t=r.pop(),e=V(r,n);return!!e&&G(e,t)}})))}const z=n=>!!c(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function H(n,t){return n?.constructor===t||!1}function K(n){return t=>H(t,n)}function Q(n){return n?.constructor?.name}function X(n){return t=>Q(t)===n||!1}function Y(n){return function(t,...r){return r?n(t)&&C(r,n):n(t)}}const nn=X("Buffer"),tn=Y(nn),rn=(n,t)=>{if(n===t)return!0;if(tn(n))return n.equals(t);if(n.toString()===t.toString())if(z(n)){const r=_(n);if(J(t,r))return C(r,(r=>rn(n[r],t[r])))}else if(y(n)&&n.length===t.length)return C(n,((n,r)=>rn(n,t[r])));return!1};function en(n,t){return n.length===t.length&&C(n,((n,r)=>rn(t[r],n)))}const on=Math.max;function un(n){return on(...n)}function cn(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function sn(n,t,r=[],e,o){return c(e)?s(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):s(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function fn(n,t){const r=[];return await a(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function an(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function ln(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function dn(n,t){return t-n}function mn(n){return n.sort(dn)}function wn(n,t){let r=n.length;for(let e=0;er)return jn(n);if(1===t)return[n[In(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Fn(n,t=1){return n.slice(0,t)}function Rn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Tn(n,t,r){return r.indexOf(n)===t}function Pn(n,t,r){return n!==r[t-1]}function Un(n,t){return t?n.filter(Pn):n.filter(Tn)}function Nn(...n){return Un(A(n))}function Ln(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function Vn(...n){const t=I(Map),r=[];return 2===n.length?x(n[0],n[1]):(s(n,((n,r)=>{s(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),w(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Gn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Jn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Wn(n){return tn(n)&&n||c(n)&&Buffer.from(n)||Buffer.alloc(0)}function zn(n){return n.fill(0),n}function Hn(n,t){const r={};let e;return s(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function Kn(n,t){let r=0;return s(n,(n=>{n[t]&&r++})),r}function Qn(n,t){let r=0;return s(n,(n=>{n[t]||r++})),r}function Xn(n,t,r,e,o){if(n[o]===e)return!0}function Yn(n,t,r="id"){const e=n.findIndex(((n,e)=>Xn(n,0,0,t,r)));return-1!==e&&e}function nt(n,t,r="id"){const e=n.find(((n,e)=>Xn(n,0,0,t,r)));return-1!==e&&e}function tt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function rt(n,t="id",r){return n.sort(((n,e)=>tt(n,e,t,r)))}function et(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function ot(n,t="id",r){return n.sort(((n,e)=>et(n,e,t,r)))}function ut(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function ct(n,t="id",r){return n.sort(((n,e)=>ut(n,e,t,r)))}function it(n,t="id"){return ct(n,t)[0]}function st(n,t){return rt(n,t,!1)[0]}function ft(n,t){const r={};return s(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function at(n,t="id"){const r={};return s(n,(n=>{r[n[t]]=n})),r}function lt(n,t,r,e){return sn(n,e?(n,o)=>n[t].call(e,r):(n,e)=>n[t](r))}function ht(n,t,r,e){return fn(n,e?n=>n[t].call(e,r):async n=>n[t](r))}const gt=X("Number"),pt=Y(gt);function dt(n){return!pt(n)}const mt=K(String);function wt(n){return!mt(n)}function yt(n,t){if(n)return mt(t)?n[t]:sn(t,(t=>n[t]))}function bt(n,t){return sn(n,(n=>yt(n,t)))}function vt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function At(n,t="id",r){return n.sort(((n,e)=>vt(n,e,t,r)))}function Et(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function It(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function xt(n){return t=>!!c(t)&&n.test(t)}const Ot=xt(/\.css$/),$t=xt(/\.html$/),jt=xt(/\.js$/),Bt=xt(/\.json$/);function Ct(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function St(n,t){return(...r)=>n(...r.splice(0,t))}function Mt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Ft=Object.assign;function Rt(n,...t){if(c(n))return Ft(n,...t)}const Tt=async(n,t,r,e)=>{if(!n)return;const o=_(n);return c(r)?await a(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await a(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Pt(n,t,r,e){if(!n)return;const o=_(n);return c(r)?s(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):s(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function Ut(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!c(n)&&n instanceof Function,Vt=X("AsyncFunction"),Gt=Y(Vt);function Jt(n,t,r,e,o,u){return(i,s,f,a,l)=>{let h;const g=Gt(s);if(c(i)&&s)return h=y(i)?g?t:n:z(i)||qt(i)?g?e:r:o?g?u:o:Zt(i)?u:g?e:r,h(i,s,f,a,l)}}const Wt=Jt(s,a,Pt,Tt,_t,kt);class zt{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Wt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function Ht(n){return I(zt,[n])}function Kt(n,r=n.length){const e=[],o=(...u)=>{if(e.push(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}function Qt(n,r=n.length){const e=[],o=(...u)=>{if(e.unshift(...u),e.length===r){const r=n(...e);return t(e),r}return o};return o}const Xt=!0,Yt=()=>Xt,nr=!1,tr=()=>nr,rr=()=>{};function er(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,Xt),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const cr=I(ur);function ir(n,t){return cr.set(n,t)}function sr(){er(setTimeout(rr,0),(n=>{cr.remove(n)}))}const fr=Reflect.apply;function ar(n,t,r){if(qt(n))return fr(n,t,r)}function lr(n,t){function r(...n){r.id!==nr&&cr.remove(r.id),r.id=ir((()=>{r.callable(...n),r.id=nr}),t)}return r.id=nr,r.callable=n.bind(r),r.clear=()=>{r.id!==nr&&(cr.remove(r.id),r.id=nr)},r}function hr(n,...t){if(qt(n))return n(...t)}async function gr(n,t){const r=n.length;for(let e=0;eWt(n,(n=>{n(t)}));function dr(n){return(...t)=>!n(...t)}function mr(n=0){return(...t)=>t[n]}const wr=n=>{let t;return(...r)=>(c(t)||(t=n(...r)),t)};async function yr(n,t,r={}){if(n)return await Tt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function br(n,t,r={},e,o){if(n)return c(e)?Pt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Pt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function vr(n){return n?.constructor}function Ar(n,t=[]){const r=vr(n);return r===Function&&"function"===r.name?function(){}:I(r,t)}function Er(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=qt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Ir(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=qt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const xr=Jt(sn,fn,br,yr,Er,Ir);function Or(n){return(...t)=>xr(n,(n=>n(...t)))}async function $r(n,t){if(!n)return;return S(_(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function jr(n,t){if(!n)return;return C(_(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function Br(n,t=i){if(y(n)||Lt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Cr(n,t=i,r){if(Zt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(y(n)||Lt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Sr=Jt(C,S,jr,$r,Br,Cr);function Mr(n){return t=>Sr(n,(n=>n(t)))}function Fr(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Rr(n,t){function r(...n){r.id?r.shouldThrottle=Xt:(r.callable(...n),r.id=ir((()=>{r.shouldThrottle&&r.callable(...n),r.id=nr}),t))}return r.id=nr,r.callable=n.bind(r),r.clear=()=>{cr.remove(r.id),r.id=nr},r}function Tr(n,t){return(...r)=>t(n,...r)}const Pr=Function.prototype;function Ur(n){return Pr.call.bind(n)}const Nr=Object.getOwnPropertyNames,Lr=Object.getOwnPropertyDescriptor,_r=Object.defineProperty,Dr=Ur(Object.hasOwnProperty),Zr=Object.is;function kr(n,t){return n+t}function qr(n){return n-1}function Vr(n,t){return n/t}function Gr(n){return n+1}function Jr(n,t){return n*t}function Wr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:zr}=Math;function Hr(n,t=0){return zr()*(n-t)+t}function Kr(n,t){return n%t}function Qr(n){return n.reduce(((n,t)=>n-t),0)}function Xr(n){return n.reduce(((n,t)=>n+t),0)}function Yr(n,t,r){return n>t&&nr}const{sign:te}=Math;function re(n){return 1===te(n)}function ee(n){return 0===n}const oe=Object.entries;function ue(n){if(c(n))return oe(n)}function ce(n){const t=[];return Pt(n,((n,r)=>{c(n)&&t.push(r)})),t}async function ie(n,t=i,r={}){return await Tt(n,(async(n,e,o,u,i)=>{const s=await t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function se(n,t=i,r={}){return Pt(n,((n,e,o,u,i)=>{const s=t(n,e,r,o,u,i);c(s)&&(r[e]=s)})),r}function fe(n,t,r={}){return Pt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function ae(n,t,r={}){return await Tt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function le(n,t={}){if(n)return Pt(n,((n,r)=>{t[n]=r})),t}const he=(n,t)=>{if(n===t)return!0;const r=_(n),e=_(t);return r.length===e.length&&C(r,(r=>n[r]===t[r]))},ge=X("RegExp"),pe=Y(ge),de=/[()[\]{}*+?^$|#.,/\\\s-]/g;function me(n){return n.replace(de,"\\$&")}function we(n,t){return t?we(sn(n,me)):RegExp(n.join("|"))}function ye(n,t){if(n){if(y(t)){const r=we(t);return fe(n,((n,t)=>!r.test(t)))}if(pe(t))return fe(n,((n,r)=>!t.test(r)));if(mt(t))return fe(n,((n,r)=>r!==t));if(pt(t)){const r=t.toString();return fe(n,((n,t)=>t!==r))}return qt(t)?fe(n,((n,r)=>!t(n,r))):void 0}}const be=(n,t,r={})=>{if(n)return s(t,(t=>{r[t]=n[t]})),r};function ve(n){if(n)return _(n).length}const Ae=(n,t)=>{const r={};return s(n,((n,e)=>{r[n]=t[e]})),r},Ee=n=>{const t=[],r=[];return Pt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Ie=/[ _-]+/g;function xe(n){let t="";return n.replace(Ie," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const Oe=/[ _-]+/g,$e=/[ ]+/g;function je(n){return n.replace(/([A-Z]+)/g," $1").replace(Oe," ").trim().toLowerCase().replace($e,"-")}const Be=/[ _-]+/g,Ce=/[ ]+/g;function Se(n){return n.replace(/([A-Z]+)/g," $1").replace(Be," ").trim().toLowerCase().replace(Ce,"_")}const Me=/[ _-]+/g;function Fe(n){return n.replace(/([A-Z]+)/g," $1").replace(Me," ").trim().toUpperCase()}const Re=/[ _-]+/g;function Te(n){return n.replace(/([A-Z]+)/g," $1").replace(Re," ").trim().toLowerCase()}function Pe(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function Ue(n,t=1){return n[n.length-t]}function Ne(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function Le(n,t=1){return n.slice(0,-1*t)}function _e(n,t=1){return n.substring(t)}function De(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function Ze(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function ke(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const qe=/%(?![\da-f]{2})/gi,Ve=/&/g,Ge=//g,We=/"/g;function ze(n){return decodeURIComponent(n.replace(qe,(()=>"%25")))}function He(n){return n.replace(Ve,"&").replace(Ge,"<").replace(Je,">").replace(We,""")}function Ke(n){return He(ze(n))}const Qe=/\S+/g,Xe=/\w+/g;function Ye(n){return n.match(Qe)||[]}function no(n){return n.match(Xe)||[]}const to=/\w+/g;function ro(n){return n[0].toUpperCase()}function eo(n){return ro(n)+_e(n)}function oo(n){return ro(n)+_e(n).toLowerCase()}function uo(n){return n.replace(to,(n=>eo(n)))}function co(n){return n.replace(to,(n=>oo(n)))}function io(n){return vr(n)?.name}function so(n){return!!c(n)&&"[object Arguments]"===n.toString()}function fo(n){return!c(n)}const ao=X("Map"),lo=Y(ao),ho=/Array/,go="Array";function po(n){if(n){const t=io(n);if(ho.test(t)&&t!==go)return!0}return!1}function mo(n,t){if(fo(n)||qt(n))return!1;if(y(n)||po(n))return!0;const r=n.length;if(!fo(r)||!pt(r)||r<0)return!1;if(t){const t=_(n);return!!t&&Sr(t,((n,t)=>t>=0&&pt(t)))}return!0}const wo=X("BigInt"),yo=Y(wo),bo=X("Boolean"),vo=Y(bo),Ao=X("ArrayBuffer"),Eo=Y(Ao);function Io(n,t){return!(!n||!t)&&n instanceof t}const xo=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function Oo(n){if(c(n)){const t=n?.constructor?.name;return xo.test(t)}return!1}const $o=X("Date"),jo=Y($o);function Bo(n){return mt(n)||y(n)?!o(n):z(n)?!ve(n):!c(n)}function Co(n){return!1===n}const So=X("Float32Array"),Mo=Y(So),Fo=X("Float64Array"),Ro=Y(Fo),{isInteger:To}=Number,Po=To,Uo=X("Int16Array"),No=Y(Uo),Lo=X("Int32Array"),_o=Y(Lo),Do=X("Int8Array"),Zo=Y(Do);function ko(n){return c(n)&&"function"==typeof n[Symbol.iterator]}function qo(n){return!!n&&n instanceof Promise}function Vo(n){return!!n&&(qo(n)||Gt(n)||Zt(n))}function Go(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Jo(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Wo(n,t){return!fo(n)&&!fo(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:zo}=Number,Ho=zo;function Ko(n,t){const r=vr(n),e=vr(t);return r===e&&r.name===e.name}function Qo(n){return!0===n}const Xo=X("Uint16Array"),Yo=Y(Xo),nu=X("Uint32Array"),tu=Y(nu),ru=X("Uint8Array"),eu=Y(ru),ou=X("Uint8ClampedArray"),uu=Y(ou),cu=X("WeakMap"),iu=Y(cu),su=void 0!==globalThis.Deno,fu=void 0!==globalThis.process&&process.versions&&process.versions.node;function au(n,t=!0){return Boolean(n)&&t}function lu(n,t=!0){return!1===Boolean(n)&&t}function hu(n,t,r,e){if(c(n)){if(qt(t))return r?ar(t,r,e):t(...e);if(z(t))return t[r]=n,t}}function gu(n,t){return Co(rn(n,t))}const pu=JSON;function du(n,t){if(n)return pu.parse(n,t)}const mu=pu.stringify;function wu(n,t,r){const e=globalThis.options||r;let o;return qt(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${mu(n)}\n\t\tExpected: ${mu(t)}`,e)}async function yu(n,t,r){const e=await n;return!(qt(t)&&!1===await t(e,r))&&!gu(e,t)||wu(e,t,r)}function bu(n,t,r){if(Vo(n)||Vo(t))return yu(n,t,r);return!(qt(t)&&!1===t(n,r))&&!gu(n,t)||wu(n,t,r)}function vu(n,t,r){const e=xr(n,(n=>qt(n)?n.bind(t):n));return r?Rt(r,e):e}function Au(n){if(n){if(tn(n))return zn(n);if(y(n))return t(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const Eu=globalThis.structuredClone;function Iu(n){return Eu(n)}function xu(n){if(z(n)){const t=_(n),r=t.length,e={};for(let o=0;oau(n)))}async function Ou(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);c(e)&&r.push(e)}return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);c(u)&&e(u)}return o}const u=qt(o.set);for await(const[r,e]of n){const i=await t(e,r,o,n);c(i)&&(u?o.set(r,i):o[r]=i)}return o}function $u(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);c(u)&&o(u)}return e}const o=qt(e.set);for(const[r,u]of n){const i=t(u,r,e,n);c(i)&&(o?e.set(r,i):e[r]=i)}return e}const ju=Jt(f,l,se,ie,$u,Ou);function Bu(...n){return Gt(n[0])?async function(...t){return Sr(n,(async n=>Sr(t,(async t=>n(t)))))}:function(...t){return Sr(n,(n=>Sr(t,(t=>n(t)))))}}function Cu(n,t=i,r){const e=r||Ar(n);if(y(n)||Lt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=qt(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Su(n,t=i,r,e){if(Zt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||Ar(n);if(y(n)||Lt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=qt(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Mu=Jt(M,F,fe,ae,Cu,Su);function Fu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Ru=Fu(s),Tu=Fu(j);function Pu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const Uu=Pu(a),Nu=Pu(B);function Lu(n,t){const r=Ar(n),e=r.push||r.add;if(e&&qt(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else qt(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function _u(n,t){const r={};return s(n,((n,e)=>{r[t[e]]=n})),r}function Du(n,t,r){if(fo(n)||fo(t))return!1;if(mt(n))return mt(t)?n.includes(t,r):pe(t)?t.test(n):qt(t)?Boolean(t(n)):Sr(t,(t=>Boolean(Du(n,t))));if(y(n)){if(mt(t))return n.includes(t,r);if(pe(t))return Sr(n,(n=>n.test(t)));if(y(t))return Sr(t,(t=>Boolean(Du(n,t))))}return!1}const Zu=xt(/\./),ku=(n,t,r)=>(t&&!c(n[t])&&(n[t]=r),n);class qu{list=I(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,Xt),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const Vu=I(qu);function Gu(n,t){return Vu.set(n,t)}function Ju(){er(setTimeout(rr,0),(n=>{Vu.remove(n)}))}function Wu(n,...t){return Wt(t,(t=>{Wt(t,((t,r)=>{if(n[r]&&(z(t)||y(t)||t.forEach))return Wu(n[r],t);n[r]=t}))})),n}class zu{static models={};constructor(n,t){c(t)?(Rt(this,t),this.modelName=n,zu.models.set(n,t)):Rt(this,n)}}function Hu(n,t){return c(t)?I(zu,[n,t]):V(n,zu.models)}function Ku(n,t){return[n,t]}function Qu(n,t,r){const e=n.length,o=[];for(let u=0;uC(r,(r=>rn(n[r],t[r])));function tc(n,t,r){return t&&z(n)||pt(t)&&y(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function rc(n,t,r){return pt(r)&&y(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class ec{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Pt(n,(t=>{n[t]=new ec(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new ec(r),!0)})}}const oc=()=>[],uc=()=>({}),cc=()=>"";async function ic(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const lc=I(ac);class hc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function gc(n){return new hc(n)}export{zt as Chain,qu as Intervals,zu as Model,ec as Store,ur as Timers,ac as UniqID,hc as VirtualStorage,kr as add,Ct as after,ar as apply,we as arrayToRegex,_u as arraysToObject,St as ary,bu as assert,yu as assertAsync,Rt as assign,Mt as before,vu as bindAll,Ur as cacheNativeMethod,Wr as calcProgress,xe as camelCase,Ht as chain,n as chunk,Ne as chunkString,Au as clear,t as clearArray,zn as clearBuffer,Ju as clearIntervals,sr as clearTimers,Iu as clone,r as cloneArray,Ar as cloneType,xu as compact,ce as compactKeys,ju as compactMap,f as compactMapArray,l as compactMapAsyncArray,ie as compactMapAsyncObject,se as compactMapObject,Qu as concurrent,Xu as concurrentStatus,I as construct,Q as constructorName,Hn as countBy,Kn as countKey,Qn as countWithoutKey,Kt as curry,Qt as curryRight,lr as debounce,qr as deduct,_r as defProp,x as difference,Vr as divide,O as drop,$ as dropRight,Wt as each,s as eachArray,a as eachAsyncArray,Tt as eachAsyncObject,Pt as eachObject,j as eachRight,B as eachRightAsync,v as ensureArray,Wn as ensureBuffer,me as escapeRegex,de as escapeRegexRegex,Sr as every,Bu as everyArg,C as everyArray,S as everyAsyncArray,$r as everyAsyncObject,jr as everyObject,nr as falsy,Mu as filter,M as filterArray,F as filterAsyncArray,ae as filterAsyncObject,fe as filterObject,Yn as findIndex,Xn as findIndexCache,nt as findItem,R as first,T as flatten,A as flattenDeep,Ru as flow,Uu as flowAsync,Nu as flowAsyncRight,Tu as flowRight,w as forEach,Ut as forEachAsync,Lu as forMap,_t as forOf,kt as forOfAsync,$u as forOfCompactMap,Ou as forOfCompactMapAsync,Br as forOfEvery,Cr as forOfEveryAsync,Cu as forOfFilter,Su as forOfFilterAsync,Er as forOfMap,Ir as forOfMapAsync,Jt as generateLoop,V as get,ue as getEntries,Et as getFileExtension,It as getFilename,it as getHighest,st as getLowest,Mn as getNumberInsertIndex,Lr as getPropDesc,Nr as getPropNames,vr as getType,io as getTypeName,ft as groupBy,Du as has,W as hasAnyKeys,Zu as hasDot,J as hasKeys,o as hasLength,Dr as hasProp,c as hasValue,He as htmlEntities,hr as ifInvoke,ku as ifNotAssign,hu as ifValue,gr as inAsync,pr as inSync,Gr as increment,at as indexBy,P as initial,Le as initialString,Pe as insertInRange,U as intersection,Gu as interval,Vu as intervals,le as invert,N as invokeArray,lt as invokeCollection,ht as invokeCollectionAsync,so as isArguments,y as isArray,Eo as isArrayBuffer,Ao as isArrayBufferCall,mo as isArrayLike,Gt as isAsync,Vt as isAsyncCall,yo as isBigInt,wo as isBigIntCall,vo as isBoolean,bo as isBooleanCall,tn as isBuffer,nn as isBufferCall,Io as isChild,Oo as isCloneable,H as isConstructor,K as isConstructorFactory,X as isConstructorNameFactory,jo as isDate,$o as isDateCall,su as isDeno,Bo as isEmpty,rn as isEqual,Mo as isF32,So as isF32Call,Ro as isF64,Fo as isF64Call,Co as isFalse,lu as isFalsy,Ot as isFileCSS,$t as isFileHTML,jt as isFileJS,Bt as isFileJSON,Po as isFloat,qt as isFunction,Zt as isGenerator,Dt as isGeneratorCall,No as isI16,Uo as isI16Call,_o as isI32,Lo as isI32Call,Zo as isI8,Do as isI8Call,ko as isIterable,Vo as isKindAsync,lo as isMap,ao as isMapCall,en as isMatchArray,he as isMatchObject,g as isNegative,fu as isNodejs,b as isNotArray,dt as isNotNumber,wt as isNotString,u as isNull,pt as isNumber,gt as isNumberCall,$n as isNumberEqual,Yr as isNumberInRange,ne as isNumberNotInRange,Go as isParent,z as isPlainObject,re as isPositive,Jo as isPrimitive,qo as isPromise,pe as isRegex,ge as isRegexCall,Wo as isRelated,Ho as isSafeInt,Zr as isSame,Ko as isSameType,Lt as isSet,Nt as isSetCall,mt as isString,Qo as isTrue,au as isTruthy,Y as isTypeFactory,po as isTypedArray,Yo as isU16,Xo as isU16Call,tu as isU32,nu as isU32Call,eu as isU8,uu as isU8C,ou as isU8CCall,ru as isU8Call,e as isUndefined,iu as isWeakMap,cu as isWeakMapCall,ee as isZero,du as jsonParse,je as kebabCase,_ as keys,un as largest,cn as last,Te as lowerCase,xr as map,sn as mapArray,fn as mapAsyncArray,yr as mapAsyncObject,br as mapObject,an as mapRightArray,ln as mapWhile,Wu as merge,Hu as model,Jr as multiply,dr as negate,fo as noValue,rr as noop,gu as notEqual,mr as nthArg,Ft as objectAssign,oe as objectEntries,ve as objectSize,ye as omit,wr as once,Tn as onlyUnique,Or as over,Mr as overEvery,Ku as pair,pn as partition,be as pick,bt as pluck,yt as pluckObject,Yu as promise,nc as propertyMatch,Hr as randomFloat,In as randomInt,m as range,d as rangeDown,p as rangeUp,ze as rawURLDecode,Fr as reArg,xt as regexTestFactory,Kr as remainder,wn as remove,yn as removeBy,De as replaceList,bn as rest,_e as restString,i as returnValue,vn as right,Ue as rightString,Bn as sample,Ke as sanitize,tc as setKey,rc as setValue,jn as shuffle,Sn as smallest,Se as snakeCase,ot as sortCollectionAlphabetically,At as sortCollectionAlphabeticallyReverse,ct as sortCollectionAscending,ut as sortCollectionAscendingFilter,rt as sortCollectionDescending,tt as sortCollectionDescendingFilter,gn as sortNumberAscending,mn as sortNumberDescening,et as sortObjectsAlphabetically,vt as sortObjectsAlphabeticallyReverse,Pn as sortUnique,mu as stringify,oc as stubArray,tr as stubFalse,uc as stubObject,cc as stubString,Yt as stubTrue,hn as subtract,Qr as subtractAll,dn as subtractReverse,Xr as sumAll,Fn as take,Rn as takeRight,Rr as throttle,ir as timer,cr as timers,er as times,ic as timesAsync,or as timesMap,sc as timesMapAsync,On as toArray,q as toPath,fc as toggle,Ye as tokenize,Ze as truncate,ke as truncateRight,Xt as truth,Jn as unZip,Ee as unZipObject,Nn as union,lc as uniqID,Un as unique,Ln as untilFalseArray,_n as untilTrueArray,Fe as upperCase,eo as upperFirst,uo as upperFirstAll,ro as upperFirstLetter,oo as upperFirstOnly,co as upperFirstOnlyAll,gc as virtualStorage,Dn as whileCompactMap,Zn as whileEachArray,kn as whileMapArray,qn as without,no as words,Tr as wrap,Vn as xor,Gn as zip,Ae as zipObject}; //# sourceMappingURL=basic.js.map diff --git a/package/module/browser/index.js b/package/module/browser/index.js index eca9e620..f043b423 100644 --- a/package/module/browser/index.js +++ b/package/module/browser/index.js @@ -1,2 +1,2 @@ -function t(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r}function n(t){return t.length=0,t}function r(t){return t.slice()}function e(t){return void 0===t}function o(t){return Boolean(t.length)}function c(t){return null===t}function u(t){return!e(t)&&!c(t)}function i(t){return t}function s(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const f=n.call(e,t,c,r,i,s,o);u(f)&&r.push(f)})):s(t,((t,c,i,s)=>{const f=n(t,c,r,i,s,e,o);u(f)&&r.push(f)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const c=await n(t,e,r,o);u(c)&&r.push(c)})),r}const{sign:h}=Math;function d(t){return-1===h(t)}function g(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function m(t,n,r=1,e=[]){return d(r)?e:t{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function $(t,n=1,r=t.length){return t.splice(n,r)}const S=(t,n=1,r=t.length)=>$(t,0,r-n);function C(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function j(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function B(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,c,u,e)&&r.push(t)})),r}async function L(t,n,r=[],e){return await a(t,(async(t,o,c,u)=>{!0===await n(t,o,r,c,u,e)&&r.push(t)})),r}function T(t,n){return n?t.slice(0,n):t[0]}function M(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(v(n))),[]);return r}function R(t){return t.slice(0,t.length-1)}function N(t,...n){return f(t,(t=>{if(B(n,(n=>n.includes(t))))return t}))}const P=Object.keys;function U(t){if(t)return P(t)}const _=/\.|\[/,k=/]/g,D="";function H(t){return t.replace(k,D).split(_)}function W(t,n){if(!n)return!1;let r=n;return B(y(t)?t:H(t),(t=>(r=r[t],u(r)))),r}const Z=Object.hasOwn;function q(t,...n){if(t)return B(n,(n=>{const r=H(n);if(1===r.length)return Z(t,n);{const n=r.pop(),e=W(r,t);return!!e&&Z(e,n)}}))}function z(t,...n){if(t)return Boolean(n.find((n=>{const r=H(n);if(1===r.length)return Z(t,n);{const n=r.pop(),e=W(r,t);return!!e&&Z(e,n)}})))}const G=t=>!!u(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function V(t,n){return t?.constructor===n||!1}function J(t){return n=>V(n,t)}function K(t){return t?.constructor?.name}function Q(t){return n=>K(n)===t||!1}function X(t){return function(n,...r){return r?t(n)&&B(r,t):t(n)}}const Y=Q("Buffer"),tt=X(Y),nt=(t,n)=>{if(t===n)return!0;if(tt(t))return t.equals(n);if(t.toString()===n.toString())if(G(t)){const r=U(t);if(q(n,r))return B(r,(r=>nt(t[r],n[r])))}else if(y(t)&&t.length===n.length)return B(t,((t,r)=>nt(t,n[r])));return!1};function rt(t,n){return t.length===n.length&&B(t,((t,r)=>nt(n[r],t)))}const et=Math.max;function ot(t){return et(...t)}function ct(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]}function ut(t,n,r=[],e,o){return u(e)?s(t,((t,c,u,i)=>{r[c]=n.call(e,t,c,r,u,i,o)})):s(t,((t,e,c,u)=>{r[e]=n(t,e,r,c,u,o)})),r}async function it(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function st(t,n,r=[],e){let o=0;const c=t.length;for(let u=c-1;u>=0;u--)r[o]=n(t[u],u,t,c,e),o++;return r}function ft(t,n,r=[],e){const o=t.length;for(let c=0;c{if(n(t,e))return t;r.push(t)})),r]}function dt(t,n){return n-t}function gt(t){return t.sort(dt)}function pt(t,n){let r=t.length;for(let e=0;er)return $t(t);if(1===n)return[t[At(r-1,0)]];const e=[],o={};let c,u=0;for(;u(r=e,n>=t&&(r=e+1,!0)))),r}function Ot(t,n=1){return t.slice(0,n)}function Ft(t,n=1){const r=t.length;return t.slice(r-n,r)}function Lt(t,n,r){return r.indexOf(t)===n}function Tt(t,n,r){return t!==r[n-1]}function Mt(t,n){return n?t.filter(Tt):t.filter(Lt)}function Rt(...t){return Mt(A(t))}function Nt(t,n){const r=t.length;for(let e=0;e!r.has(t)))}function Ht(...t){const n=I(Map),r=[];return 2===t.length?x(t[0],t[1]):(s(t,((t,r)=>{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&r.push(t.child)})),r)}function Wt(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function Zt(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function qt(t){return tt(t)&&t||u(t)&&Buffer.from(t)||Buffer.alloc(0)}function zt(t){return t.fill(0),t}function Gt(t,n){const r={};let e;return s(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r}function Vt(t,n){let r=0;return s(t,(t=>{t[n]&&r++})),r}function Jt(t,n){let r=0;return s(t,(t=>{t[n]||r++})),r}function Kt(t,n,r,e,o){if(t[o]===e)return!0}function Qt(t,n,r="id"){const e=t.findIndex(((t,e)=>Kt(t,0,0,n,r)));return-1!==e&&e}function Xt(t,n,r="id"){const e=t.find(((t,e)=>Kt(t,0,0,n,r)));return-1!==e&&e}function Yt(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?-1:0:1:-1}function tn(t,n="id",r){return t.sort(((t,e)=>Yt(t,e,n,r)))}function nn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):o.localeCompare(c)}function rn(t,n="id",r){return t.sort(((t,e)=>nn(t,e,n,r)))}function en(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?1:0:-1:1}function on(t,n="id",r){return t.sort(((t,e)=>en(t,e,n,r)))}function cn(t,n="id"){return on(t,n)[0]}function un(t,n){return tn(t,n,!1)[0]}function sn(t,n){const r={};return s(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r}function fn(t,n="id"){const r={};return s(t,(t=>{r[t[n]]=t})),r}function an(t,n,r){return ut(t,((t,e)=>t[n](r,e)))}function ln(t,n,r){return it(t,(async(t,e)=>t[n](r,e)))}const hn=Q("Number"),dn=X(hn);function gn(t){return!dn(t)}const pn=J(String);function mn(t){return!pn(t)}function wn(t,n){if(t)return pn(n)?t[n]:ut(n,(n=>t[n]))}function yn(t,n){return ut(t,(t=>wn(t,n)))}function bn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c.localeCompare(o)}function vn(t,n="id",r){return t.sort(((t,e)=>bn(t,e,n,r)))}function An(t){if(t)return t.substring(t.lastIndexOf(".")+1)}function En(t){if(t)return t.substring(t.lastIndexOf("/")+1)}function In(t){return n=>!!u(n)&&t.test(n)}const xn=In(/\.css$/),$n=In(/\.html$/),Sn=In(/\.js$/),Cn=In(/\.json$/);function jn(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)}function Bn(t,n){return(...r)=>t(...r.splice(0,n))}function On(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)}const Fn=Object.assign;function Ln(t,...n){if(u(t))return Fn(t,...n)}const Tn=async(t,n,r,e)=>{if(!t)return;const o=U(t);return u(r)?await a(o,((c,u,i,s)=>n.call(r,t[c],c,t,s,o,e))):await a(o,((r,c,u,i)=>n(t[r],r,t,i,o,e))),t};function Mn(t,n,r,e){if(!t)return;const o=U(t);return u(r)?s(o,((o,c,u,i)=>{n.call(r,t[o],o,t,i,u,e)})):s(o,((r,o,c,u)=>{n(t[r],r,t,u,c,e)})),t}async function Rn(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t!!u(t)&&t instanceof Function,Wn=Q("AsyncFunction"),Zn=X(Wn);function qn(t,n,r,e,o,c){return(i,s,f,a,l)=>{let h;const d=Zn(s);if(u(i)&&s)return h=y(i)?d?n:t:G(i)||Hn(i)?d?e:r:o?d?c:o:kn(i)?c:d?e:r,h(i,s,f,a,l)}}const zn=qn(s,a,Mn,Tn,Un,Dn);class Gn{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;zn(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}function Vn(t){return I(Gn,[t])}function Jn(t,r=t.length){const e=[],o=(...c)=>{if(e.push(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}function Kn(t,r=t.length){const e=[],o=(...c)=>{if(e.unshift(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}const Qn=!0,Xn=()=>Qn,Yn=!1,tr=()=>Yn,nr=()=>{};function rr(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Qn),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const cr=I(or);function ur(t,n){return cr.set(t,n)}function ir(){rr(setTimeout(nr,0),(t=>{cr.remove(t)}))}const sr=Reflect.apply;function fr(t,n,r){if(Hn(t))return sr(t,n,r)}function ar(t,n){function r(...t){r.id!==Yn&&cr.remove(r.id),r.id=ur((()=>{r.callable(...t),r.id=Yn}),n)}return r.id=Yn,r.callable=t.bind(r),r.clear=()=>{r.id!==Yn&&(cr.remove(r.id),r.id=Yn)},r}function lr(t,...n){if(Hn(t))return t(...n)}async function hr(t,n){const r=t.length;for(let e=0;ezn(t,(t=>{t(n)}));function gr(t){return(...n)=>!t(...n)}function pr(t=0){return(...n)=>n[t]}const mr=t=>{let n;return(...r)=>(u(n)||(n=t(...r)),n)};async function wr(t,n,r={}){if(t)return await Tn(t,(async(t,e,o,c,u)=>{r[e]=await n(t,e,r,o,c,u)})),r}function yr(t,n,r={},e,o){if(t)return u(e)?Mn(t,((t,c,u,i,s)=>{r[c]=n.call(e,t,c,r,u,i,s,o)})):Mn(t,((t,e,c,u,i)=>{r[e]=n(t,e,r,c,u,i,o)})),r}function br(t){return t?.constructor}function vr(t,n=[]){const r=br(t);return r===Function&&"function"===r.name?function(){}:I(r,n)}function Ar(t,n=i,r){const e=r||vr(t);if(y(t)||Pn(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Hn(e.set);for(const[r,c]of t){const u=n(c,r,e,t);o?e.set(r,u):e[r]=u}return e}async function Er(t,n=i,r,e){if(kn(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||vr(t);if(y(t)||Pn(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const c=Hn(o.set);for await(const[r,e]of t){const u=await n(e,r,o,t);c?o.set(r,u):o[r]=u}return o}const Ir=qn(ut,it,yr,wr,Ar,Er);function xr(t){return(...n)=>Ir(t,(t=>t(...n)))}async function $r(t,n){if(!t)return;return O(U(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function Sr(t,n){if(!t)return;return B(U(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function Cr(t,n=i){if(y(t)||Pn(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function jr(t,n=i,r){if(kn(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(y(t)||Pn(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const Br=qn(B,O,Sr,$r,Cr,jr);function Or(t){return n=>Br(t,(t=>t(n)))}function Fr(t,n){return(...r)=>t(...n.map((t=>r[t])))}function Lr(t,n){function r(...t){r.id?r.shouldThrottle=Qn:(r.callable(...t),r.id=ur((()=>{r.shouldThrottle&&r.callable(...t),r.id=Yn}),n))}return r.id=Yn,r.callable=t.bind(r),r.clear=()=>{cr.remove(r.id),r.id=Yn},r}function Tr(t,n){return(...r)=>n(t,...r)}const Mr=Function.prototype;function Rr(t){return Mr.call.bind(t)}const Nr=Object.getOwnPropertyNames,Pr=Object.getOwnPropertyDescriptor,Ur=Object.defineProperty,_r=Rr(Object.hasOwnProperty),kr=Object.is;function Dr(t,n){return t+n}function Hr(t){return t-1}function Wr(t,n){return t/n}function Zr(t){return t+1}function qr(t,n){return t*n}function zr(t,n){return 0!==t&&(0===n?0:n/t*100)}const{random:Gr}=Math;function Vr(t,n=0){return Gr()*(t-n)+n}function Jr(t,n){return t%n}function Kr(t){return t.reduce(((t,n)=>t-n),0)}function Qr(t){return t.reduce(((t,n)=>t+n),0)}function Xr(t,n,r){return t>n&&tr}const{sign:te}=Math;function ne(t){return 1===te(t)}function re(t){return 0===t}const ee=Object.entries;function oe(t){if(u(t))return ee(t)}function ce(t){const n=[];return Mn(t,((t,r)=>{u(t)&&n.push(r)})),n}async function ue(t,n=i,r={}){return await Tn(t,(async(t,e,o,c,i)=>{const s=await n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function ie(t,n=i,r={}){return Mn(t,((t,e,o,c,i)=>{const s=n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function se(t,n,r={}){return Mn(t,((t,e,o,c,u)=>{!0===n(t,e,r,o,c,u)&&(r[e]=t)})),r}async function fe(t,n,r={}){return await Tn(t,(async(t,e,o,c,u)=>{!0===await n(t,e,r,o,c,u)&&(r[e]=t)})),r}function ae(t,n={}){if(t)return Mn(t,((t,r)=>{n[t]=r})),n}const le=(t,n)=>{if(t===n)return!0;const r=U(t),e=U(n);return r.length===e.length&&B(r,(r=>t[r]===n[r]))},he=Q("RegExp"),de=X(he),ge=/[()[\]{}*+?^$|#.,/\\\s-]/g;function pe(t){return t.replace(ge,"\\$&")}function me(t,n){return n?me(ut(t,pe)):RegExp(t.join("|"))}function we(t,n){if(t){if(y(n)){const r=me(n);return se(t,((t,n)=>!r.test(n)))}if(de(n))return se(t,((t,r)=>!n.test(r)));if(pn(n))return se(t,((t,r)=>r!==n));if(dn(n)){const r=n.toString();return se(t,((t,n)=>n!==r))}return Hn(n)?se(t,((t,r)=>!n(t,r))):void 0}}const ye=(t,n,r={})=>{if(t)return s(n,(n=>{r[n]=t[n]})),r};function be(t){if(t)return U(t).length}const ve=(t,n)=>{const r={};return s(t,((t,e)=>{r[t]=n[e]})),r},Ae=t=>{const n=[],r=[];return Mn(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},Ee=/[ _-]+/g;function Ie(t){let n="";return t.replace(Ee," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n}const xe=/[ _-]+/g,$e=/[ ]+/g;function Se(t){return t.replace(/([A-Z]+)/g," $1").replace(xe," ").trim().toLowerCase().replace($e,"-")}const Ce=/[ _-]+/g,je=/[ ]+/g;function Be(t){return t.replace(/([A-Z]+)/g," $1").replace(Ce," ").trim().toLowerCase().replace(je,"_")}const Oe=/[ _-]+/g;function Fe(t){return t.replace(/([A-Z]+)/g," $1").replace(Oe," ").trim().toUpperCase()}const Le=/[ _-]+/g;function Te(t){return t.replace(/([A-Z]+)/g," $1").replace(Le," ").trim().toLowerCase()}function Me(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)}function Re(t,n=1){return t[t.length-n]}function Ne(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))}function Pe(t,n=1){return t.slice(0,-1*n)}function Ue(t,n=1){return t.substring(n)}function _e(t,n,r){return t.replace(new RegExp(`\\b${n.join("|")}\\b`,"gi"),r)}function ke(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=r-n;for(;u=0&&(c=e[u]," "!==c);u--);return t.slice(0,u).trim()})(t,n,r):t}function De(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=n;for(;u0&&(c=e[u]," "!==c);u++);return t.substring(u,r).trim()})(t,n,r):t}const He=/%(?![\da-f]{2})/gi,We=/&/g,Ze=//g,ze=/"/g;function Ge(t){return decodeURIComponent(t.replace(He,(()=>"%25")))}function Ve(t){return t.replace(We,"&").replace(Ze,"<").replace(qe,">").replace(ze,""")}function Je(t){return Ve(Ge(t))}const Ke=/\S+/g,Qe=/\w+/g;function Xe(t){return t.match(Ke)||[]}function Ye(t){return t.match(Qe)||[]}const to=/\w+/g;function no(t){return t[0].toUpperCase()}function ro(t){return no(t)+Ue(t)}function eo(t){return no(t)+Ue(t).toLowerCase()}function oo(t){return t.replace(to,(t=>ro(t)))}function co(t){return t.replace(to,(t=>eo(t)))}function uo(t){return br(t)?.name}function io(t){return!!u(t)&&"[object Arguments]"===t.toString()}function so(t){return!u(t)}const fo=Q("Map"),ao=X(fo),lo=/Array/,ho="Array";function go(t){if(t){const n=uo(t);if(lo.test(n)&&n!==ho)return!0}return!1}function po(t,n){if(so(t)||Hn(t))return!1;if(y(t)||go(t))return!0;const r=t.length;if(!so(r)||!dn(r)||r<0)return!1;if(n){const n=U(t);return!!n&&Br(n,((t,n)=>n>=0&&dn(n)))}return!0}const mo=Q("BigInt"),wo=X(mo),yo=Q("Boolean"),bo=X(yo),vo=Q("ArrayBuffer"),Ao=X(vo);function Eo(t,n){return!(!t||!n)&&t instanceof n}const Io=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function xo(t){if(u(t)){const n=t?.constructor?.name;return Io.test(n)}return!1}const $o=Q("Date"),So=X($o);function Co(t){return pn(t)||y(t)?!o(t):G(t)?!be(t):!u(t)}function jo(t){return!1===t}const Bo=Q("Float32Array"),Oo=X(Bo),Fo=Q("Float64Array"),Lo=X(Fo),{isInteger:To}=Number,Mo=To,Ro=Q("Int16Array"),No=X(Ro),Po=Q("Int32Array"),Uo=X(Po),_o=Q("Int8Array"),ko=X(_o);function Do(t){return u(t)&&"function"==typeof t[Symbol.iterator]}function Ho(t){return!!t&&t instanceof Promise}function Wo(t){return!!t&&(Ho(t)||Zn(t)||kn(t))}function Zo(t,n){return!!(t&&n&&n.call)&&t instanceof n}function qo(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n}function zo(t,n){return!so(t)&&!so(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)}const{isSafeInteger:Go}=Number,Vo=Go;function Jo(t,n){const r=br(t),e=br(n);return r===e&&r.name===e.name}function Ko(t){return!0===t}const Qo=Q("Uint16Array"),Xo=X(Qo),Yo=Q("Uint32Array"),tc=X(Yo),nc=Q("Uint8Array"),rc=X(nc),ec=Q("Uint8ClampedArray"),oc=X(ec),cc=Q("WeakMap"),uc=X(cc),ic=void 0!==globalThis.Deno,sc=void 0!==globalThis.process&&process.versions&&process.versions.node;function fc(t,n=!0){return Boolean(t)&&n}function ac(t,n=!0){return!1===Boolean(t)&&n}function lc(t,n,r,e){if(u(t)){if(Hn(n))return r?fr(n,r,e):n(...e);if(G(n))return n[r]=t,n}}function hc(t,n){return jo(nt(t,n))}const dc=JSON;function gc(t,n){if(t)return dc.parse(t,n)}const pc=dc.stringify;function mc(t,n,r){const e=globalThis.options||r;let o;return Hn(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${pc(t)}\n\t\tExpected: ${pc(n)}`,e)}async function wc(t,n,r){const e=await t;return!(Hn(n)&&!1===await n(e,r))&&!hc(e,n)||mc(e,n,r)}function yc(t,n,r){if(Wo(t)||Wo(n))return wc(t,n,r);return!(Hn(n)&&!1===n(t,r))&&!hc(t,n)||mc(t,n,r)}function bc(t,n,r){const e=Ir(t,(t=>Hn(t)?t.bind(n):t));return r?Ln(r,e):e}function vc(t){if(t){if(tt(t))return zt(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t}const Ac=globalThis.structuredClone;function Ec(t){return Ac(t)}function Ic(t){if(G(t)){const n=U(t),r=n.length,e={};for(let o=0;ofc(t)))}async function xc(t,n=i,r,e){if(kn(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);u(e)&&r.push(e)}return r}const o=r||vr(t);if(y(t)||Pn(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);u(c)&&e(c)}return o}const c=Hn(o.set);for await(const[r,e]of t){const i=await n(e,r,o,t);u(i)&&(c?o.set(r,i):o[r]=i)}return o}function $c(t,n=i,r){const e=r||vr(t);if(y(t)||Pn(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);u(c)&&o(c)}return e}const o=Hn(e.set);for(const[r,c]of t){const i=n(c,r,e,t);u(i)&&(o?e.set(r,i):e[r]=i)}return e}const Sc=qn(f,l,ie,ue,$c,xc);function Cc(...t){return Zn(t[0])?async function(...n){return Br(t,(async t=>Br(n,(async n=>t(n)))))}:function(...n){return Br(t,(t=>Br(n,(n=>t(n)))))}}function jc(t,n=i,r){const e=r||vr(t);if(y(t)||Pn(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Hn(e.set);for(const[o,c]of t){!0===n(c,o,e,t)&&(r?e.set(o,c):e[o]=c)}}return e}async function Bc(t,n=i,r,e){if(kn(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||vr(t);if(y(t)||Pn(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Hn(o.set);for await(const[e,c]of t){!0===await n(c,e,o,t)&&(r?o.set(e,c):o[e]=c)}}return o}const Oc=qn(F,L,se,fe,jc,Bc);function Fc(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const Lc=Fc(s),Tc=Fc(C);function Mc(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const Rc=Mc(a),Nc=Mc(j);function Pc(t,n){const r=vr(t),e=r.push||r.add;if(e&&Hn(e)){const o=e.bind(r);t.forEach((t=>{const e=n(t,r);o(e)}))}else Hn(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r}function Uc(t,n){const r={};return s(t,((t,e)=>{r[n[e]]=t})),r}function _c(t,n,r){if(so(t)||so(n))return!1;if(pn(t))return pn(n)?t.includes(n,r):de(n)?n.test(t):Hn(n)?Boolean(n(t)):Br(n,(n=>Boolean(_c(t,n))));if(y(t)){if(pn(n))return t.includes(n,r);if(de(n))return Br(t,(t=>t.test(n)));if(y(n))return Br(n,(n=>Boolean(_c(t,n))))}return!1}const kc=In(/\./),Dc=(t,n,r)=>(n&&!u(t[n])&&(t[n]=r),t);class Hc{list=I(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Qn),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Wc=I(Hc);function Zc(t,n){return Wc.set(t,n)}function qc(){rr(setTimeout(nr,0),(t=>{Wc.remove(t)}))}function zc(t,...n){return zn(n,(n=>{zn(n,((n,r)=>{if(t[r]&&(G(n)||y(n)||n.forEach))return zc(t[r],n);t[r]=n}))})),t}class Gc{static models={};constructor(t,n){u(n)?(Ln(this,n),this.modelName=t,Gc.models.set(t,n)):Ln(this,t)}}function Vc(t,n){return u(n)?I(Gc,[t,n]):W(t,Gc.models)}function Jc(t,n){return[t,n]}function Kc(t,n,r){const e=t.length,o=[];for(let c=0;cB(r,(r=>nt(t[r],n[r])));function tu(t,n,r){return n&&G(t)||dn(n)&&y(t)?t[n]=r:t.set?t.set(n,r):t.push?t.push(r):t.add?t.add(r):t[n]=r,t}function nu(t,n,r){return dn(r)&&y(t)?t[r]=n:t.push?t.push(n):t.add?t.add(n):t[r]=n,t}class ru{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Mn(t,(n=>{t[n]=new ru(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new ru(r),!0)})}}const eu=()=>[],ou=()=>({}),cu=()=>"";async function uu(t,n){for(let r=0;r0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const au=I(fu);class lu{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function hu(t){return new lu(t)}function du(t){return t?du[t]:U(du)}const gu=globalThis.navigator?.userAgentData;if(gu)Mn(gu,((t,n)=>{bo(t)&&t&&(du[n]=t)})),s(gu.brands,(t=>{du[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{du[t]=!0}))}function pu(t,n,r,e){return t.addEventListener(n,r,e),t}function mu(t,n,r,e){return t.removeEventListener(n,r,e),t}function wu(t){return 13===t.keyCode}const yu=document.createDocumentFragment.bind(document);function bu(t,n){return t.appendChild(n),n}function vu(t,n){return y(n)?ve(n,ut(n,(n=>t.getAttribute(n)))):(Mn(n,((n,r)=>{t.setAttribute(r,n)})),t)}const Au=/^.[\w_-]+$/,Eu=/^[A-Za-z]+$/,Iu=/\s/,xu=document.getElementsByClassName.bind(document),$u=document.getElementsByTagName.bind(document),Su=document.getElementById.bind(document),Cu=document.querySelector.bind(document),ju=document.querySelectorAll.bind(document);function Bu(t){switch(t[0]){case"#":if(!Iu.test(t))return Su(Ue(t));break;case".":if(Au.test(t))return xu(Ue(t));break;default:if(Eu.test(t))return $u(t)}return ju(t)}const Ou=document.createElement.bind(document);function Fu(t){const n=kc(t)&&t||`${t}.js`;return(t=>Xc((n=>{pu(t,"load",n,!0),pu(t,"error",n,!0),bu(Cu("head"),t)})))(vu(Ou("script"),{async:"",src:n}))}function Lu(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&pu(document,"DOMContentLoaded",t),!1)}Lu((()=>{const t=Su("AcidLib");Fu(t&&t.getAttribute("data-index")||"/index")}));const Tu=location.protocol,Mu="http:"===Tu?"ws":"wss",Ru=location.hostname,Nu={hardware:{cores:navigator.hardwareConcurrency},host:{name:Ru,protocol:Tu,protocolSocket:Mu}};function Pu(){Ln(Nu,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function Uu(){Pu()}let _u;Lu(Uu),pu(window,"load",Uu,!0),pu(window,"resize",Uu,!0),function(t){try{t().removeItem("TESTING"),_u=!0}catch(t){_u=!1}}((()=>localStorage));class ku{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=hu(t)}hasLocal=_u;setItem(t,n){return this.hasLocal&&this.local.setItem(t,pn(n)?n:pc(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return u(n)?n:!u(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}function Du(t){return new ku(t)}const Hu=(t,n)=>`color:${t};background:${n};`,Wu={alert:Hu("#fff","#f44336"),important:Hu("#fff","#E91E63"),notify:Hu("#fff","#651FFF"),warning:Hu("#000","#FFEA00")},Zu=(t,n)=>{const r=pn(t)?t:pc(t);if("alert"===n||"warning"===n)return console.trace(`%c${r}`,`${Wu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${r}`,`${Wu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},qu=(t,n,r)=>{Wu[t]=Hu(n,r)};function zu(t){return t&&9!==t.nodeType}function Gu(t){return!!u(t)&&"[object HTMLCollection]"===t.toString()}function Vu(t){return!!u(t)&&"[object NodeList]"===t.toString()}export{Gn as Chain,ku as Crate,Hc as Intervals,Gc as Model,ru as Store,or as Timers,fu as UniqID,lu as VirtualStorage,Dr as add,jn as after,bu as append,fr as apply,me as arrayToRegex,Uc as arraysToObject,Bn as ary,yc as assert,wc as assertAsync,Ln as assign,On as before,bc as bindAll,Rr as cacheNativeMethod,zr as calcProgress,Ie as camelCase,Vn as chain,t as chunk,Ne as chunkString,vc as clear,n as clearArray,zt as clearBuffer,qc as clearIntervals,ir as clearTimers,Ec as clone,r as cloneArray,vr as cloneType,Zu as cnsl,qu as cnslTheme,Ic as compact,ce as compactKeys,Sc as compactMap,f as compactMapArray,l as compactMapAsyncArray,ue as compactMapAsyncObject,ie as compactMapObject,Kc as concurrent,Qc as concurrentStatus,I as construct,K as constructorName,Gt as countBy,Vt as countKey,Jt as countWithoutKey,Du as crate,yu as createFragment,Jn as curry,Kn as curryRight,ar as debounce,Hr as deduct,Ur as defProp,x as difference,Wr as divide,$ as drop,S as dropRight,zn as each,s as eachArray,a as eachAsyncArray,Tn as eachAsyncObject,Mn as eachObject,C as eachRight,j as eachRightAsync,v as ensureArray,qt as ensureBuffer,pe as escapeRegex,ge as escapeRegexRegex,pu as eventAdd,mu as eventRemove,Br as every,Cc as everyArg,B as everyArray,O as everyAsyncArray,$r as everyAsyncObject,Sr as everyObject,Yn as falsy,Oc as filter,F as filterArray,L as filterAsyncArray,fe as filterAsyncObject,se as filterObject,Qt as findIndex,Kt as findIndexCache,Xt as findItem,T as first,M as flatten,A as flattenDeep,Lc as flow,Rc as flowAsync,Nc as flowAsyncRight,Tc as flowRight,w as forEach,Rn as forEachAsync,Pc as forMap,Un as forOf,Dn as forOfAsync,$c as forOfCompactMap,xc as forOfCompactMapAsync,Cr as forOfEvery,jr as forOfEveryAsync,jc as forOfFilter,Bc as forOfFilterAsync,Ar as forOfMap,Er as forOfMapAsync,qn as generateLoop,W as get,xu as getByClass,Su as getById,$u as getByTag,oe as getEntries,An as getFileExtension,En as getFilename,cn as getHighest,un as getLowest,Bt as getNumberInsertIndex,Pr as getPropDesc,Nr as getPropNames,br as getType,uo as getTypeName,sn as groupBy,_c as has,z as hasAnyKeys,kc as hasDot,q as hasKeys,o as hasLength,_u as hasLocal,_r as hasProp,u as hasValue,Ve as htmlEntities,lr as ifInvoke,Dc as ifNotAssign,lc as ifValue,Fu as importjs,hr as inAsync,dr as inSync,Zr as increment,fn as indexBy,Nu as info,R as initial,Pe as initialString,Me as insertInRange,N as intersection,Zc as interval,Wc as intervals,ae as invert,an as invoke,ln as invokeAsync,du as isAgent,io as isArguments,y as isArray,Ao as isArrayBuffer,vo as isArrayBufferCall,po as isArrayLike,Zn as isAsync,Wn as isAsyncCall,wo as isBigInt,mo as isBigIntCall,bo as isBoolean,yo as isBooleanCall,tt as isBuffer,Y as isBufferCall,Eo as isChild,xo as isCloneable,V as isConstructor,J as isConstructorFactory,Q as isConstructorNameFactory,So as isDate,$o as isDateCall,ic as isDeno,Lu as isDocumentReady,zu as isDom,Co as isEmpty,wu as isEnter,nt as isEqual,Oo as isF32,Bo as isF32Call,Lo as isF64,Fo as isF64Call,jo as isFalse,ac as isFalsy,xn as isFileCSS,$n as isFileHTML,Sn as isFileJS,Cn as isFileJSON,Mo as isFloat,Hn as isFunction,kn as isGenerator,_n as isGeneratorCall,Gu as isHTMLCollection,No as isI16,Ro as isI16Call,Uo as isI32,Po as isI32Call,ko as isI8,_o as isI8Call,Do as isIterable,Wo as isKindAsync,ao as isMap,fo as isMapCall,rt as isMatchArray,le as isMatchObject,d as isNegative,Vu as isNodeList,sc as isNodejs,b as isNotArray,gn as isNotNumber,mn as isNotString,c as isNull,dn as isNumber,hn as isNumberCall,xt as isNumberEqual,Xr as isNumberInRange,Yr as isNumberNotInRange,Zo as isParent,G as isPlainObject,ne as isPositive,qo as isPrimitive,Ho as isPromise,de as isRegex,he as isRegexCall,zo as isRelated,Vo as isSafeInt,kr as isSame,Jo as isSameType,Pn as isSet,Nn as isSetCall,pn as isString,Ko as isTrue,fc as isTruthy,X as isTypeFactory,go as isTypedArray,Xo as isU16,Qo as isU16Call,tc as isU32,Yo as isU32Call,rc as isU8,oc as isU8C,ec as isU8CCall,nc as isU8Call,e as isUndefined,uc as isWeakMap,cc as isWeakMapCall,re as isZero,gc as jsonParse,Se as kebabCase,U as keys,ot as largest,ct as last,Te as lowerCase,Ir as map,ut as mapArray,it as mapAsyncArray,wr as mapAsyncObject,yr as mapObject,st as mapRightArray,ft as mapWhile,zc as merge,Vc as model,qr as multiply,gr as negate,so as noValue,vu as nodeAttribute,nr as noop,hc as notEqual,pr as nthArg,Fn as objectAssign,ee as objectEntries,be as objectSize,we as omit,mr as once,Lt as onlyUnique,xr as over,Or as overEvery,Jc as pair,ht as partition,ye as pick,yn as pluck,wn as pluckObject,Xc as promise,Yc as propertyMatch,Cu as querySelector,ju as querySelectorAll,Vr as randomFloat,At as randomInt,m as range,p as rangeDown,g as rangeUp,Ge as rawURLDecode,Fr as reArg,In as regexTestFactory,Jr as remainder,pt as remove,mt as removeBy,_e as replaceList,wt as rest,Ue as restString,i as returnValue,yt as right,Re as rightString,St as sample,Je as sanitize,Pu as saveDimensions,Bu as selector,tu as setKey,nu as setValue,$t as shuffle,jt as smallest,Be as snakeCase,rn as sortCollectionAlphabetically,vn as sortCollectionAlphabeticallyReverse,on as sortCollectionAscending,en as sortCollectionAscendingFilter,tn as sortCollectionDescending,Yt as sortCollectionDescendingFilter,lt as sortNumberAscending,gt as sortNumberDescening,nn as sortObjectsAlphabetically,bn as sortObjectsAlphabeticallyReverse,Tt as sortUnique,pc as stringify,eu as stubArray,tr as stubFalse,ou as stubObject,cu as stubString,Xn as stubTrue,at as subtract,Kr as subtractAll,dt as subtractReverse,Qr as sumAll,Ot as take,Ft as takeRight,Wu as themes,Lr as throttle,ur as timer,cr as timers,rr as times,uu as timesAsync,er as timesMap,iu as timesMapAsync,It as toArray,H as toPath,su as toggle,Xe as tokenize,ke as truncate,De as truncateRight,Qn as truth,Zt as unZip,Ae as unZipObject,Rt as union,au as uniqID,Mt as unique,Nt as untilFalseArray,Pt as untilTrueArray,Uu as updateDimensions,Fe as upperCase,ro as upperFirst,oo as upperFirstAll,no as upperFirstLetter,eo as upperFirstOnly,co as upperFirstOnlyAll,hu as virtualStorage,Ut as whileCompactMap,_t as whileEachArray,kt as whileMapArray,Dt as without,Ye as words,Tr as wrap,Ht as xor,Wt as zip,ve as zipObject}; +function t(t,n=1){const r=[];let e=0;return t.forEach(((t,o)=>{o%n||(r.push([]),o&&e++),r[e].push(t)})),r}function n(t){return t.length=0,t}function r(t){return t.slice()}function e(t){return void 0===t}function o(t){return Boolean(t.length)}function c(t){return null===t}function u(t){return!e(t)&&!c(t)}function i(t){return t}function s(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const f=n.call(e,t,c,r,i,s,o);u(f)&&r.push(f)})):s(t,((t,c,i,s)=>{const f=n(t,c,r,i,s,e,o);u(f)&&r.push(f)})),r}async function a(t,n,r,e){if(!t)return;const o=t.length;if(u(r))for(let c=0;c{const c=await n(t,e,r,o);u(c)&&r.push(c)})),r}const{sign:h}=Math;function d(t){return-1===h(t)}function g(t,n,r,e){let o=t;for(;on;)e.push(o),o-=r;return e}function m(t,n,r=1,e=[]){return d(r)?e:t{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&0===t.parentIndex&&r.push(t.child)})),r}function $(t,n=1,r=t.length){return t.splice(n,r)}const S=(t,n=1,r=t.length)=>$(t,0,r-n);function C(t,n,r){if(!t)return;const e=t.length;for(let o=e-1;o>=0;o--)n(t[o],o,t,e,r);return t}async function j(t,n){if(!t)return;const r=t.length;for(let e=r-1;e>=0;e--)await n(t[e],e,t,r);return t}function B(t,n,r){if(!t)return;const e=t.length;for(let o=0;o{!0===n(t,o,r,c,u,e)&&r.push(t)})),r}async function L(t,n,r=[],e){return await a(t,(async(t,o,c,u)=>{!0===await n(t,o,r,c,u,e)&&r.push(t)})),r}function T(t,n){return n?t.slice(0,n):t[0]}function M(t,n=1){if(!t)return;let r=t;for(let t=0;tt.concat(v(n))),[]);return r}function R(t){return t.slice(0,t.length-1)}function N(t,...n){return f(t,(t=>{if(B(n,(n=>n.includes(t))))return t}))}function P(t,n,r){if(!t)return;const e=t.length;if(u(r))for(let o=0;o(r=r[t],u(r)))),r}const q=Object.hasOwn;function z(t,...n){if(t)return B(n,(n=>{const r=W(n);if(1===r.length)return q(t,n);{const n=r.pop(),e=Z(r,t);return!!e&&q(e,n)}}))}function G(t,...n){if(t)return Boolean(n.find((n=>{const r=W(n);if(1===r.length)return q(t,n);{const n=r.pop(),e=Z(r,t);return!!e&&q(e,n)}})))}const V=t=>!!u(t)&&"Object("===t.constructor.toString().trim().slice(9,16);function J(t,n){return t?.constructor===n||!1}function K(t){return n=>J(n,t)}function Q(t){return t?.constructor?.name}function X(t){return n=>Q(n)===t||!1}function Y(t){return function(n,...r){return r?t(n)&&B(r,t):t(n)}}const tt=X("Buffer"),nt=Y(tt),rt=(t,n)=>{if(t===n)return!0;if(nt(t))return t.equals(n);if(t.toString()===n.toString())if(V(t)){const r=_(t);if(z(n,r))return B(r,(r=>rt(t[r],n[r])))}else if(y(t)&&t.length===n.length)return B(t,((t,r)=>rt(t,n[r])));return!1};function et(t,n){return t.length===n.length&&B(t,((t,r)=>rt(n[r],t)))}const ot=Math.max;function ct(t){return ot(...t)}function ut(t,n){const r=t.length;return n?t.slice(r-n,r):t[r-1]}function it(t,n,r=[],e,o){return u(e)?s(t,((t,c,u,i)=>{r[c]=n.call(e,t,c,r,u,i,o)})):s(t,((t,e,c,u)=>{r[e]=n(t,e,r,c,u,o)})),r}async function st(t,n){const r=[];return await a(t,(async(t,e,o)=>{r[e]=await n(t,e,o)})),r}function ft(t,n,r=[],e){let o=0;const c=t.length;for(let u=c-1;u>=0;u--)r[o]=n(t[u],u,t,c,e),o++;return r}function at(t,n,r=[],e){const o=t.length;for(let c=0;c{if(n(t,e))return t;r.push(t)})),r]}function gt(t,n){return n-t}function pt(t){return t.sort(gt)}function mt(t,n){let r=t.length;for(let e=0;er)return St(t);if(1===n)return[t[Et(r-1,0)]];const e=[],o={};let c,u=0;for(;u(r=e,n>=t&&(r=e+1,!0)))),r}function Ft(t,n=1){return t.slice(0,n)}function Lt(t,n=1){const r=t.length;return t.slice(r-n,r)}function Tt(t,n,r){return r.indexOf(t)===n}function Mt(t,n,r){return t!==r[n-1]}function Rt(t,n){return n?t.filter(Mt):t.filter(Tt)}function Nt(...t){return Rt(A(t))}function Pt(t,n){const r=t.length;for(let e=0;e!r.has(t)))}function Wt(...t){const n=I(Map),r=[];return 2===t.length?x(t[0],t[1]):(s(t,((t,r)=>{s(t,((t,e)=>{let o=n.get(t);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:t},n.set(t,o)}))})),w(n,(t=>{1===t.count&&r.push(t.child)})),r)}function Zt(...t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function qt(t){return t[0].map(((n,r)=>t.map((t=>t[r]))))}function zt(t){return nt(t)&&t||u(t)&&Buffer.from(t)||Buffer.alloc(0)}function Gt(t){return t.fill(0),t}function Vt(t,n){const r={};let e;return s(t,(t=>{e=n(t),r[e]||(r[e]=0),r[e]++})),r}function Jt(t,n){let r=0;return s(t,(t=>{t[n]&&r++})),r}function Kt(t,n){let r=0;return s(t,(t=>{t[n]||r++})),r}function Qt(t,n,r,e,o){if(t[o]===e)return!0}function Xt(t,n,r="id"){const e=t.findIndex(((t,e)=>Qt(t,0,0,n,r)));return-1!==e&&e}function Yt(t,n,r="id"){const e=t.find(((t,e)=>Qt(t,0,0,n,r)));return-1!==e&&e}function tn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?-1:0:1:-1}function nn(t,n="id",r){return t.sort(((t,e)=>tn(t,e,n,r)))}function rn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):o.localeCompare(c)}function en(t,n="id",r){return t.sort(((t,e)=>rn(t,e,n,r)))}function on(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c?o?oc?1:0:-1:1}function cn(t,n="id",r){return t.sort(((t,e)=>on(t,e,n,r)))}function un(t,n="id"){return cn(t,n)[0]}function sn(t,n){return nn(t,n,!1)[0]}function fn(t,n){const r={};return s(t,(t=>{const e=n(t);r[e]||(r[e]=[]),r[e].push(t)})),r}function an(t,n="id"){const r={};return s(t,(t=>{r[t[n]]=t})),r}function ln(t,n,r,e){return it(t,e?(t,o)=>t[n].call(e,r):(t,e)=>t[n](r))}function hn(t,n,r,e){return st(t,e?t=>t[n].call(e,r):async t=>t[n](r))}const dn=X("Number"),gn=Y(dn);function pn(t){return!gn(t)}const mn=K(String);function wn(t){return!mn(t)}function yn(t,n){if(t)return mn(n)?t[n]:it(n,(n=>t[n]))}function bn(t,n){return it(t,(t=>yn(t,n)))}function vn(t,n,r,e){const o=t[r],c=n[r];return o===c&&e?e(t,n,r):c.localeCompare(o)}function An(t,n="id",r){return t.sort(((t,e)=>vn(t,e,n,r)))}function En(t){if(t)return t.substring(t.lastIndexOf(".")+1)}function In(t){if(t)return t.substring(t.lastIndexOf("/")+1)}function xn(t){return n=>!!u(n)&&t.test(n)}const $n=xn(/\.css$/),Sn=xn(/\.html$/),Cn=xn(/\.js$/),jn=xn(/\.json$/);function Bn(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e<=0&&(r=n(...t),e=null),r)}function On(t,n){return(...r)=>t(...r.splice(0,n))}function Fn(t,n){let r,e=t;return(...t)=>(null!==e&&e--,e>=1?r=n(...t):e=null,r)}const Ln=Object.assign;function Tn(t,...n){if(u(t))return Ln(t,...n)}const Mn=async(t,n,r,e)=>{if(!t)return;const o=_(t);return u(r)?await a(o,((c,u,i,s)=>n.call(r,t[c],c,t,s,o,e))):await a(o,((r,c,u,i)=>n(t[r],r,t,i,o,e))),t};function Rn(t,n,r,e){if(!t)return;const o=_(t);return u(r)?s(o,((o,c,u,i)=>{n.call(r,t[o],o,t,i,u,e)})):s(o,((r,o,c,u)=>{n(t[r],r,t,u,c,e)})),t}async function Nn(t,n){const r=[],e=[];let o=0;t.forEach(((t,n)=>{r[o]=t,e[o]=t,o++}));for(let t=0;t!!u(t)&&t instanceof Function,Zn=X("AsyncFunction"),qn=Y(Zn);function zn(t,n,r,e,o,c){return(i,s,f,a,l)=>{let h;const d=qn(s);if(u(i)&&s)return h=y(i)?d?n:t:V(i)||Wn(i)?d?e:r:o?d?c:o:Dn(i)?c:d?e:r,h(i,s,f,a,l)}}const Gn=zn(s,a,Rn,Mn,_n,Hn);class Vn{constructor(t){this.addChainMethod(t)}addChainMethod(t){const n=this;Gn(t,((t,r)=>{n[r]=function(...r){return this.value=t.call(n,n.value,...r),n}}))}setValue(t){return this.value=t,this}done(){const t=this.value;return this.value=null,t}value=null}function Jn(t){return I(Vn,[t])}function Kn(t,r=t.length){const e=[],o=(...c)=>{if(e.push(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}function Qn(t,r=t.length){const e=[],o=(...c)=>{if(e.unshift(...c),e.length===r){const r=t(...e);return n(e),r}return o};return o}const Xn=!0,Yn=()=>Xn,tr=!1,nr=()=>tr,rr=()=>{};function er(t,n){for(let r=0;r{t(),r.remove(e)}),n);return this.list.set(e,Xn),e}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const ur=I(cr);function ir(t,n){return ur.set(t,n)}function sr(){er(setTimeout(rr,0),(t=>{ur.remove(t)}))}const fr=Reflect.apply;function ar(t,n,r){if(Wn(t))return fr(t,n,r)}function lr(t,n){function r(...t){r.id!==tr&&ur.remove(r.id),r.id=ir((()=>{r.callable(...t),r.id=tr}),n)}return r.id=tr,r.callable=t.bind(r),r.clear=()=>{r.id!==tr&&(ur.remove(r.id),r.id=tr)},r}function hr(t,...n){if(Wn(t))return t(...n)}async function dr(t,n){const r=t.length;for(let e=0;eGn(t,(t=>{t(n)}));function pr(t){return(...n)=>!t(...n)}function mr(t=0){return(...n)=>n[t]}const wr=t=>{let n;return(...r)=>(u(n)||(n=t(...r)),n)};async function yr(t,n,r={}){if(t)return await Mn(t,(async(t,e,o,c,u)=>{r[e]=await n(t,e,r,o,c,u)})),r}function br(t,n,r={},e,o){if(t)return u(e)?Rn(t,((t,c,u,i,s)=>{r[c]=n.call(e,t,c,r,u,i,s,o)})):Rn(t,((t,e,c,u,i)=>{r[e]=n(t,e,r,c,u,i,o)})),r}function vr(t){return t?.constructor}function Ar(t,n=[]){const r=vr(t);return r===Function&&"function"===r.name?function(){}:I(r,n)}function Er(t,n=i,r){const e=r||Ar(t);if(y(t)||Un(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){o(n(r,e,t))}return e}const o=Wn(e.set);for(const[r,c]of t){const u=n(c,r,e,t);o?e.set(r,u):e[r]=u}return e}async function Ir(t,n=i,r,e){if(Dn(t)){const r=[];for await(const o of t(...e))r.push(await n(o,r,t));return r}const o=r||Ar(t);if(y(t)||Un(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){e(await n(r,o,t))}return o}const c=Wn(o.set);for await(const[r,e]of t){const u=await n(e,r,o,t);c?o.set(r,u):o[r]=u}return o}const xr=zn(it,st,br,yr,Er,Ir);function $r(t){return(...n)=>xr(t,(t=>t(...n)))}async function Sr(t,n){if(!t)return;return O(_(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function Cr(t,n){if(!t)return;return B(_(t),((r,e,o,c)=>n(t[r],r,t,c,o)))}function jr(t,n=i){if(y(t)||Un(t))for(const r of t){if(!1===n(r,t))return!1}else for(const[r,e]of t){if(!1===n(e,r,t))return!1}return!0}async function Br(t,n=i,r){if(Dn(t))for await(const e of t(...r)){if(!1===await n(e,t))return!1}else if(y(t)||Un(t))for(const r of t){if(!1===await n(r,t))return!1}else for(const[r,e]of t){if(!1===await n(e,r,t))return!1}return!0}const Or=zn(B,O,Cr,Sr,jr,Br);function Fr(t){return n=>Or(t,(t=>t(n)))}function Lr(t,n){return(...r)=>t(...n.map((t=>r[t])))}function Tr(t,n){function r(...t){r.id?r.shouldThrottle=Xn:(r.callable(...t),r.id=ir((()=>{r.shouldThrottle&&r.callable(...t),r.id=tr}),n))}return r.id=tr,r.callable=t.bind(r),r.clear=()=>{ur.remove(r.id),r.id=tr},r}function Mr(t,n){return(...r)=>n(t,...r)}const Rr=Function.prototype;function Nr(t){return Rr.call.bind(t)}const Pr=Object.getOwnPropertyNames,Ur=Object.getOwnPropertyDescriptor,_r=Object.defineProperty,kr=Nr(Object.hasOwnProperty),Dr=Object.is;function Hr(t,n){return t+n}function Wr(t){return t-1}function Zr(t,n){return t/n}function qr(t){return t+1}function zr(t,n){return t*n}function Gr(t,n){return 0!==t&&(0===n?0:n/t*100)}const{random:Vr}=Math;function Jr(t,n=0){return Vr()*(t-n)+n}function Kr(t,n){return t%n}function Qr(t){return t.reduce(((t,n)=>t-n),0)}function Xr(t){return t.reduce(((t,n)=>t+n),0)}function Yr(t,n,r){return t>n&&tr}const{sign:ne}=Math;function re(t){return 1===ne(t)}function ee(t){return 0===t}const oe=Object.entries;function ce(t){if(u(t))return oe(t)}function ue(t){const n=[];return Rn(t,((t,r)=>{u(t)&&n.push(r)})),n}async function ie(t,n=i,r={}){return await Mn(t,(async(t,e,o,c,i)=>{const s=await n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function se(t,n=i,r={}){return Rn(t,((t,e,o,c,i)=>{const s=n(t,e,r,o,c,i);u(s)&&(r[e]=s)})),r}function fe(t,n,r={}){return Rn(t,((t,e,o,c,u)=>{!0===n(t,e,r,o,c,u)&&(r[e]=t)})),r}async function ae(t,n,r={}){return await Mn(t,(async(t,e,o,c,u)=>{!0===await n(t,e,r,o,c,u)&&(r[e]=t)})),r}function le(t,n={}){if(t)return Rn(t,((t,r)=>{n[t]=r})),n}const he=(t,n)=>{if(t===n)return!0;const r=_(t),e=_(n);return r.length===e.length&&B(r,(r=>t[r]===n[r]))},de=X("RegExp"),ge=Y(de),pe=/[()[\]{}*+?^$|#.,/\\\s-]/g;function me(t){return t.replace(pe,"\\$&")}function we(t,n){return n?we(it(t,me)):RegExp(t.join("|"))}function ye(t,n){if(t){if(y(n)){const r=we(n);return fe(t,((t,n)=>!r.test(n)))}if(ge(n))return fe(t,((t,r)=>!n.test(r)));if(mn(n))return fe(t,((t,r)=>r!==n));if(gn(n)){const r=n.toString();return fe(t,((t,n)=>n!==r))}return Wn(n)?fe(t,((t,r)=>!n(t,r))):void 0}}const be=(t,n,r={})=>{if(t)return s(n,(n=>{r[n]=t[n]})),r};function ve(t){if(t)return _(t).length}const Ae=(t,n)=>{const r={};return s(t,((t,e)=>{r[t]=n[e]})),r},Ee=t=>{const n=[],r=[];return Rn(t,((t,e)=>{n.push(e),r.push(t)})),[n,r]},Ie=/[ _-]+/g;function xe(t){let n="";return t.replace(Ie," ").trim().split(" ").forEach(((t,r)=>{n+=0===r?t.toLowerCase():t[0].toUpperCase()+t.slice(1).toLowerCase()})),n}const $e=/[ _-]+/g,Se=/[ ]+/g;function Ce(t){return t.replace(/([A-Z]+)/g," $1").replace($e," ").trim().toLowerCase().replace(Se,"-")}const je=/[ _-]+/g,Be=/[ ]+/g;function Oe(t){return t.replace(/([A-Z]+)/g," $1").replace(je," ").trim().toLowerCase().replace(Be,"_")}const Fe=/[ _-]+/g;function Le(t){return t.replace(/([A-Z]+)/g," $1").replace(Fe," ").trim().toUpperCase()}const Te=/[ _-]+/g;function Me(t){return t.replace(/([A-Z]+)/g," $1").replace(Te," ").trim().toLowerCase()}function Re(t,n,r){return t.slice(0,n)+r+t.slice(n,t.length)}function Ne(t,n=1){return t[t.length-n]}function Pe(t,n){return t.match(new RegExp(`(.|[\r\n]){1,${n}}`,"g"))}function Ue(t,n=1){return t.slice(0,-1*n)}function _e(t,n=1){return t.substring(n)}function ke(t,n,r){return t.replace(new RegExp(`\\b${n.join("|")}\\b`,"gi"),r)}function De(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=r-n;for(;u=0&&(c=e[u]," "!==c);u--);return t.slice(0,u).trim()})(t,n,r):t}function He(t,n){const r=t.length;return r>n?((t,n,r)=>{const e=t.split(""),o=e.length;let c,u=n;for(;u0&&(c=e[u]," "!==c);u++);return t.substring(u,r).trim()})(t,n,r):t}const We=/%(?![\da-f]{2})/gi,Ze=/&/g,qe=//g,Ge=/"/g;function Ve(t){return decodeURIComponent(t.replace(We,(()=>"%25")))}function Je(t){return t.replace(Ze,"&").replace(qe,"<").replace(ze,">").replace(Ge,""")}function Ke(t){return Je(Ve(t))}const Qe=/\S+/g,Xe=/\w+/g;function Ye(t){return t.match(Qe)||[]}function to(t){return t.match(Xe)||[]}const no=/\w+/g;function ro(t){return t[0].toUpperCase()}function eo(t){return ro(t)+_e(t)}function oo(t){return ro(t)+_e(t).toLowerCase()}function co(t){return t.replace(no,(t=>eo(t)))}function uo(t){return t.replace(no,(t=>oo(t)))}function io(t){return vr(t)?.name}function so(t){return!!u(t)&&"[object Arguments]"===t.toString()}function fo(t){return!u(t)}const ao=X("Map"),lo=Y(ao),ho=/Array/,go="Array";function po(t){if(t){const n=io(t);if(ho.test(n)&&n!==go)return!0}return!1}function mo(t,n){if(fo(t)||Wn(t))return!1;if(y(t)||po(t))return!0;const r=t.length;if(!fo(r)||!gn(r)||r<0)return!1;if(n){const n=_(t);return!!n&&Or(n,((t,n)=>n>=0&&gn(n)))}return!0}const wo=X("BigInt"),yo=Y(wo),bo=X("Boolean"),vo=Y(bo),Ao=X("ArrayBuffer"),Eo=Y(Ao);function Io(t,n){return!(!t||!n)&&t instanceof n}const xo=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function $o(t){if(u(t)){const n=t?.constructor?.name;return xo.test(n)}return!1}const So=X("Date"),Co=Y(So);function jo(t){return mn(t)||y(t)?!o(t):V(t)?!ve(t):!u(t)}function Bo(t){return!1===t}const Oo=X("Float32Array"),Fo=Y(Oo),Lo=X("Float64Array"),To=Y(Lo),{isInteger:Mo}=Number,Ro=Mo,No=X("Int16Array"),Po=Y(No),Uo=X("Int32Array"),_o=Y(Uo),ko=X("Int8Array"),Do=Y(ko);function Ho(t){return u(t)&&"function"==typeof t[Symbol.iterator]}function Wo(t){return!!t&&t instanceof Promise}function Zo(t){return!!t&&(Wo(t)||qn(t)||Dn(t))}function qo(t,n){return!!(t&&n&&n.call)&&t instanceof n}function zo(t){const n=typeof value;return null==t||"object"!==n&&"function"!==n}function Go(t,n){return!fo(t)&&!fo(n)&&(t.call?n instanceof t:n.call?t instanceof n:n.constructor===t.constructor)}const{isSafeInteger:Vo}=Number,Jo=Vo;function Ko(t,n){const r=vr(t),e=vr(n);return r===e&&r.name===e.name}function Qo(t){return!0===t}const Xo=X("Uint16Array"),Yo=Y(Xo),tc=X("Uint32Array"),nc=Y(tc),rc=X("Uint8Array"),ec=Y(rc),oc=X("Uint8ClampedArray"),cc=Y(oc),uc=X("WeakMap"),ic=Y(uc),sc=void 0!==globalThis.Deno,fc=void 0!==globalThis.process&&process.versions&&process.versions.node;function ac(t,n=!0){return Boolean(t)&&n}function lc(t,n=!0){return!1===Boolean(t)&&n}function hc(t,n,r,e){if(u(t)){if(Wn(n))return r?ar(n,r,e):n(...e);if(V(n))return n[r]=t,n}}function dc(t,n){return Bo(rt(t,n))}const gc=JSON;function pc(t,n){if(t)return gc.parse(t,n)}const mc=gc.stringify;function wc(t,n,r){const e=globalThis.options||r;let o;return Wn(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${mc(t)}\n\t\tExpected: ${mc(n)}`,e)}async function yc(t,n,r){const e=await t;return!(Wn(n)&&!1===await n(e,r))&&!dc(e,n)||wc(e,n,r)}function bc(t,n,r){if(Zo(t)||Zo(n))return yc(t,n,r);return!(Wn(n)&&!1===n(t,r))&&!dc(t,n)||wc(t,n,r)}function vc(t,n,r){const e=xr(t,(t=>Wn(t)?t.bind(n):t));return r?Tn(r,e):e}function Ac(t){if(t){if(nt(t))return Gt(t);if(y(t))return n(t);t.clear?t.clear():t.length&&(t.length=0)}return t}const Ec=globalThis.structuredClone;function Ic(t){return Ec(t)}function xc(t){if(V(t)){const n=_(t),r=n.length,e={};for(let o=0;oac(t)))}async function $c(t,n=i,r,e){if(Dn(t)){const r=[];for await(const o of t(...e)){const e=await n(o,r,t);u(e)&&r.push(e)}return r}const o=r||Ar(t);if(y(t)||Un(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){const c=await n(r,o,t);u(c)&&e(c)}return o}const c=Wn(o.set);for await(const[r,e]of t){const i=await n(e,r,o,t);u(i)&&(c?o.set(r,i):o[r]=i)}return o}function Sc(t,n=i,r){const e=r||Ar(t);if(y(t)||Un(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){const c=n(r,e,t);u(c)&&o(c)}return e}const o=Wn(e.set);for(const[r,c]of t){const i=n(c,r,e,t);u(i)&&(o?e.set(r,i):e[r]=i)}return e}const Cc=zn(f,l,se,ie,Sc,$c);function jc(...t){return qn(t[0])?async function(...n){return Or(t,(async t=>Or(n,(async n=>t(n)))))}:function(...n){return Or(t,(t=>Or(n,(n=>t(n)))))}}function Bc(t,n=i,r){const e=r||Ar(t);if(y(t)||Un(t)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of t){!0===n(r,e,t)&&o(r)}}else{const r=Wn(e.set);for(const[o,c]of t){!0===n(c,o,e,t)&&(r?e.set(o,c):e[o]=c)}}return e}async function Oc(t,n=i,r,e){if(Dn(t)){const r=[];for await(const o of t(...e))!0===await n(o,r,t)&&r.push(o);return r}const o=r||Ar(t);if(y(t)||Un(t)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of t){!0===await n(r,o,t)&&e(r)}}else{const r=Wn(o.set);for await(const[e,c]of t){!0===await n(c,e,o,t)&&(r?o.set(e,c):o[e]=c)}}return o}const Fc=zn(F,L,fe,ae,Bc,Oc);function Lc(t){return(...n)=>r=>{let e=r;return t(n,(t=>{e=t(e)})),e}}const Tc=Lc(s),Mc=Lc(C);function Rc(t){return(...n)=>async r=>{let e=r;return await t(n,(async t=>{e=await t(e)})),e}}const Nc=Rc(a),Pc=Rc(j);function Uc(t,n){const r=Ar(t),e=r.push||r.add;if(e&&Wn(e)){const o=e.bind(r);t.forEach((t=>{const e=n(t,r);o(e)}))}else Wn(r.set)?t.forEach(((t,e)=>{const o=n(t,e,r);r.set(e,o)})):t.forEach(((t,e)=>{const o=n(t,e,r);r[e]=o}));return r}function _c(t,n){const r={};return s(t,((t,e)=>{r[n[e]]=t})),r}function kc(t,n,r){if(fo(t)||fo(n))return!1;if(mn(t))return mn(n)?t.includes(n,r):ge(n)?n.test(t):Wn(n)?Boolean(n(t)):Or(n,(n=>Boolean(kc(t,n))));if(y(t)){if(mn(n))return t.includes(n,r);if(ge(n))return Or(t,(t=>t.test(n)));if(y(n))return Or(n,(n=>Boolean(kc(t,n))))}return!1}const Dc=xn(/\./),Hc=(t,n,r)=>(n&&!u(t[n])&&(t[n]=r),t);class Wc{list=I(Map);construct(){}remove(t){clearInterval(t),this.list.delete(t)}has(t){return this.list.has(t)}get(t){return this.list.get(t)}set(t,n){const r=setInterval((()=>{t()}),n);return this.list.set(r,Xn),r}clear(){const t=this;t.list.forEach((n=>{t.remove(n)}))}}const Zc=I(Wc);function qc(t,n){return Zc.set(t,n)}function zc(){er(setTimeout(rr,0),(t=>{Zc.remove(t)}))}function Gc(t,...n){return Gn(n,(n=>{Gn(n,((n,r)=>{if(t[r]&&(V(n)||y(n)||n.forEach))return Gc(t[r],n);t[r]=n}))})),t}class Vc{static models={};constructor(t,n){u(n)?(Tn(this,n),this.modelName=t,Vc.models.set(t,n)):Tn(this,t)}}function Jc(t,n){return u(n)?I(Vc,[t,n]):Z(t,Vc.models)}function Kc(t,n){return[t,n]}function Qc(t,n,r){const e=t.length,o=[];for(let c=0;cB(r,(r=>rt(t[r],n[r])));function nu(t,n,r){return n&&V(t)||gn(n)&&y(t)?t[n]=r:t.set?t.set(n,r):t.push?t.push(r):t.add?t.add(r):t[n]=r,t}function ru(t,n,r){return gn(r)&&y(t)?t[r]=n:t.push?t.push(n):t.add?t.add(n):t[r]=n,t}class eu{source;constructor(t={}){if(this.source=t,null===t||"object"!=typeof t)return t;Rn(t,(n=>{t[n]=new eu(t[n])})),this.data=new Proxy(t,{get:(t,n)=>(console.log(t,n,t[n]),t[n]),set:(t,n,r)=>(console.log(t,n,t[n]),t[n]=new eu(r),!0)})}}const ou=()=>[],cu=()=>({}),uu=()=>"";async function iu(t,n){for(let r=0;r0,r=this.totalActive===this.totalFree;n&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const lu=I(au);class hu{constructor(t={}){this.items=t}getItem(t){return this.items[t]}setItem(t,n){this.items[t]=n}clear(){this.items={}}removeItem(t){this.items[t]=null}}function du(t){return new hu(t)}function gu(t){return t?gu[t]:_(gu)}const pu=globalThis.navigator?.userAgentData;if(pu)Rn(pu,((t,n)=>{vo(t)&&t&&(gu[n]=t)})),s(pu.brands,(t=>{gu[t.brand]=t.version}));else if(navigator.userAgent){let t=navigator.userAgent.toLowerCase();t=t.replace(/_/g,"."),t=t.replace(/[#_,;()]/g,"");s(t.split(/ |\//),(t=>{gu[t]=!0}))}function mu(t,n,r,e){return t.addEventListener(n,r,e),t}function wu(t,n,r,e){return t.removeEventListener(n,r,e),t}function yu(t){return 13===t.keyCode}const bu=document.createDocumentFragment.bind(document);function vu(t,n){return t.appendChild(n),n}function Au(t,n){return y(n)?Ae(n,it(n,(n=>t.getAttribute(n)))):(Rn(n,((n,r)=>{t.setAttribute(r,n)})),t)}const Eu=/^.[\w_-]+$/,Iu=/^[A-Za-z]+$/,xu=/\s/,$u=document.getElementsByClassName.bind(document),Su=document.getElementsByTagName.bind(document),Cu=document.getElementById.bind(document),ju=document.querySelector.bind(document),Bu=document.querySelectorAll.bind(document);function Ou(t){switch(t[0]){case"#":if(!xu.test(t))return Cu(_e(t));break;case".":if(Eu.test(t))return $u(_e(t));break;default:if(Iu.test(t))return Su(t)}return Bu(t)}const Fu=document.createElement.bind(document);function Lu(t){const n=Dc(t)&&t||`${t}.js`;return(t=>Yc((n=>{mu(t,"load",n,!0),mu(t,"error",n,!0),vu(ju("head"),t)})))(Au(Fu("script"),{async:"",src:n}))}function Tu(t){const n=document.readyState;return"interactive"===n||"completed"===n||"complete"===n?!t||t():(t&&mu(document,"DOMContentLoaded",t),!1)}Tu((()=>{const t=Cu("AcidLib");Lu(t&&t.getAttribute("data-index")||"/index")}));const Mu=location.protocol,Ru="http:"===Mu?"ws":"wss",Nu=location.hostname,Pu={hardware:{cores:navigator.hardwareConcurrency},host:{name:Nu,protocol:Mu,protocolSocket:Ru}};function Uu(){Tn(Pu,{bodyHeight:document.body.offsetHeight,bodyWidth:document.body.offsetWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}function _u(){Uu()}let ku;Tu(_u),mu(window,"load",_u,!0),mu(window,"resize",_u,!0),function(t){try{t().removeItem("TESTING"),ku=!0}catch(t){ku=!1}}((()=>localStorage));class Du{constructor(t){this.hasLocal&&(this.local=localStorage),this.storage=du(t)}hasLocal=ku;setItem(t,n){return this.hasLocal&&this.local.setItem(t,mn(n)?n:mc(n)),this.storage.setItem(t,n)}getItem(t){const n=this.storage.getItem(t);return u(n)?n:!u(n)&&this.hasLocal?this.local.getItem(t):void 0}clear(){this.hasLocal&&this.local.clear(),this.storage.clear()}removeItem(t){this.hasLocal&&this.local.removeItem(t),this.storage.removeItem(t)}}function Hu(t){return new Du(t)}const Wu=(t,n)=>`color:${t};background:${n};`,Zu={alert:Wu("#fff","#f44336"),important:Wu("#fff","#E91E63"),notify:Wu("#fff","#651FFF"),warning:Wu("#000","#FFEA00")},qu=(t,n)=>{const r=mn(t)?t:mc(t);if("alert"===n||"warning"===n)return console.trace(`%c${r}`,`${Zu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`);console.log(`%c${r}`,`${Zu[n]}font-size:13px;padding:2px 5px;border-radius:2px;`)},zu=(t,n,r)=>{Zu[t]=Wu(n,r)};function Gu(t){return t&&9!==t.nodeType}function Vu(t){return!!u(t)&&"[object HTMLCollection]"===t.toString()}function Ju(t){return!!u(t)&&"[object NodeList]"===t.toString()}export{Vn as Chain,Du as Crate,Wc as Intervals,Vc as Model,eu as Store,cr as Timers,au as UniqID,hu as VirtualStorage,Hr as add,Bn as after,vu as append,ar as apply,we as arrayToRegex,_c as arraysToObject,On as ary,bc as assert,yc as assertAsync,Tn as assign,Fn as before,vc as bindAll,Nr as cacheNativeMethod,Gr as calcProgress,xe as camelCase,Jn as chain,t as chunk,Pe as chunkString,Ac as clear,n as clearArray,Gt as clearBuffer,zc as clearIntervals,sr as clearTimers,Ic as clone,r as cloneArray,Ar as cloneType,qu as cnsl,zu as cnslTheme,xc as compact,ue as compactKeys,Cc as compactMap,f as compactMapArray,l as compactMapAsyncArray,ie as compactMapAsyncObject,se as compactMapObject,Qc as concurrent,Xc as concurrentStatus,I as construct,Q as constructorName,Vt as countBy,Jt as countKey,Kt as countWithoutKey,Hu as crate,bu as createFragment,Kn as curry,Qn as curryRight,lr as debounce,Wr as deduct,_r as defProp,x as difference,Zr as divide,$ as drop,S as dropRight,Gn as each,s as eachArray,a as eachAsyncArray,Mn as eachAsyncObject,Rn as eachObject,C as eachRight,j as eachRightAsync,v as ensureArray,zt as ensureBuffer,me as escapeRegex,pe as escapeRegexRegex,mu as eventAdd,wu as eventRemove,Or as every,jc as everyArg,B as everyArray,O as everyAsyncArray,Sr as everyAsyncObject,Cr as everyObject,tr as falsy,Fc as filter,F as filterArray,L as filterAsyncArray,ae as filterAsyncObject,fe as filterObject,Xt as findIndex,Qt as findIndexCache,Yt as findItem,T as first,M as flatten,A as flattenDeep,Tc as flow,Nc as flowAsync,Pc as flowAsyncRight,Mc as flowRight,w as forEach,Nn as forEachAsync,Uc as forMap,_n as forOf,Hn as forOfAsync,Sc as forOfCompactMap,$c as forOfCompactMapAsync,jr as forOfEvery,Br as forOfEveryAsync,Bc as forOfFilter,Oc as forOfFilterAsync,Er as forOfMap,Ir as forOfMapAsync,zn as generateLoop,Z as get,$u as getByClass,Cu as getById,Su as getByTag,ce as getEntries,En as getFileExtension,In as getFilename,un as getHighest,sn as getLowest,Ot as getNumberInsertIndex,Ur as getPropDesc,Pr as getPropNames,vr as getType,io as getTypeName,fn as groupBy,kc as has,G as hasAnyKeys,Dc as hasDot,z as hasKeys,o as hasLength,ku as hasLocal,kr as hasProp,u as hasValue,Je as htmlEntities,hr as ifInvoke,Hc as ifNotAssign,hc as ifValue,Lu as importjs,dr as inAsync,gr as inSync,qr as increment,an as indexBy,Pu as info,R as initial,Ue as initialString,Re as insertInRange,N as intersection,qc as interval,Zc as intervals,le as invert,P as invokeArray,ln as invokeCollection,hn as invokeCollectionAsync,gu as isAgent,so as isArguments,y as isArray,Eo as isArrayBuffer,Ao as isArrayBufferCall,mo as isArrayLike,qn as isAsync,Zn as isAsyncCall,yo as isBigInt,wo as isBigIntCall,vo as isBoolean,bo as isBooleanCall,nt as isBuffer,tt as isBufferCall,Io as isChild,$o as isCloneable,J as isConstructor,K as isConstructorFactory,X as isConstructorNameFactory,Co as isDate,So as isDateCall,sc as isDeno,Tu as isDocumentReady,Gu as isDom,jo as isEmpty,yu as isEnter,rt as isEqual,Fo as isF32,Oo as isF32Call,To as isF64,Lo as isF64Call,Bo as isFalse,lc as isFalsy,$n as isFileCSS,Sn as isFileHTML,Cn as isFileJS,jn as isFileJSON,Ro as isFloat,Wn as isFunction,Dn as isGenerator,kn as isGeneratorCall,Vu as isHTMLCollection,Po as isI16,No as isI16Call,_o as isI32,Uo as isI32Call,Do as isI8,ko as isI8Call,Ho as isIterable,Zo as isKindAsync,lo as isMap,ao as isMapCall,et as isMatchArray,he as isMatchObject,d as isNegative,Ju as isNodeList,fc as isNodejs,b as isNotArray,pn as isNotNumber,wn as isNotString,c as isNull,gn as isNumber,dn as isNumberCall,$t as isNumberEqual,Yr as isNumberInRange,te as isNumberNotInRange,qo as isParent,V as isPlainObject,re as isPositive,zo as isPrimitive,Wo as isPromise,ge as isRegex,de as isRegexCall,Go as isRelated,Jo as isSafeInt,Dr as isSame,Ko as isSameType,Un as isSet,Pn as isSetCall,mn as isString,Qo as isTrue,ac as isTruthy,Y as isTypeFactory,po as isTypedArray,Yo as isU16,Xo as isU16Call,nc as isU32,tc as isU32Call,ec as isU8,cc as isU8C,oc as isU8CCall,rc as isU8Call,e as isUndefined,ic as isWeakMap,uc as isWeakMapCall,ee as isZero,pc as jsonParse,Ce as kebabCase,_ as keys,ct as largest,ut as last,Me as lowerCase,xr as map,it as mapArray,st as mapAsyncArray,yr as mapAsyncObject,br as mapObject,ft as mapRightArray,at as mapWhile,Gc as merge,Jc as model,zr as multiply,pr as negate,fo as noValue,Au as nodeAttribute,rr as noop,dc as notEqual,mr as nthArg,Ln as objectAssign,oe as objectEntries,ve as objectSize,ye as omit,wr as once,Tt as onlyUnique,$r as over,Fr as overEvery,Kc as pair,dt as partition,be as pick,bn as pluck,yn as pluckObject,Yc as promise,tu as propertyMatch,ju as querySelector,Bu as querySelectorAll,Jr as randomFloat,Et as randomInt,m as range,p as rangeDown,g as rangeUp,Ve as rawURLDecode,Lr as reArg,xn as regexTestFactory,Kr as remainder,mt as remove,wt as removeBy,ke as replaceList,yt as rest,_e as restString,i as returnValue,bt as right,Ne as rightString,Ct as sample,Ke as sanitize,Uu as saveDimensions,Ou as selector,nu as setKey,ru as setValue,St as shuffle,Bt as smallest,Oe as snakeCase,en as sortCollectionAlphabetically,An as sortCollectionAlphabeticallyReverse,cn as sortCollectionAscending,on as sortCollectionAscendingFilter,nn as sortCollectionDescending,tn as sortCollectionDescendingFilter,ht as sortNumberAscending,pt as sortNumberDescening,rn as sortObjectsAlphabetically,vn as sortObjectsAlphabeticallyReverse,Mt as sortUnique,mc as stringify,ou as stubArray,nr as stubFalse,cu as stubObject,uu as stubString,Yn as stubTrue,lt as subtract,Qr as subtractAll,gt as subtractReverse,Xr as sumAll,Ft as take,Lt as takeRight,Zu as themes,Tr as throttle,ir as timer,ur as timers,er as times,iu as timesAsync,or as timesMap,su as timesMapAsync,xt as toArray,W as toPath,fu as toggle,Ye as tokenize,De as truncate,He as truncateRight,Xn as truth,qt as unZip,Ee as unZipObject,Nt as union,lu as uniqID,Rt as unique,Pt as untilFalseArray,Ut as untilTrueArray,_u as updateDimensions,Le as upperCase,eo as upperFirst,co as upperFirstAll,ro as upperFirstLetter,oo as upperFirstOnly,uo as upperFirstOnlyAll,du as virtualStorage,_t as whileCompactMap,kt as whileEachArray,Dt as whileMapArray,Ht as without,to as words,Mr as wrap,Wt as xor,Zt as zip,Ae as zipObject}; //# sourceMappingURL=index.js.map diff --git a/package/module/index.js b/package/module/index.js index 9ae01263..671a3a50 100644 --- a/package/module/index.js +++ b/package/module/index.js @@ -1,2 +1,2 @@ -import{readdir as n,stat as t,mkdir as r,copyFile as e}from"fs/promises";import o from"path";import{fileURLToPath as u}from"url";function c(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function i(n){return n.length=0,n}function s(n){return n.slice()}function f(n){return void 0===n}function a(n){return Boolean(n.length)}function l(n){return null===n}function h(n){return!f(n)&&!l(n)}function g(n){return n}function p(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const s=t.call(e,n,u,r,c,i,o);h(s)&&r.push(s)})):p(n,((n,u,c,i)=>{const s=t(n,u,r,c,i,e,o);h(s)&&r.push(s)})),r}async function m(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const u=await t(n,e,r,o);h(u)&&r.push(u)})),r}const{sign:y}=Math;function b(n){return-1===y(n)}function v(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function E(n,t,r=1,e=[]){return b(r)?e:n{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function M(n,t=1,r=n.length){return n.splice(t,r)}const T=(n,t=1,r=n.length)=>M(n,0,r-t);function _(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function F(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function R(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function N(n,t,r=[],e){return await m(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function D(n,t){return t?n.slice(0,t):n[0]}function L(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(O(t))),[]);return r}function Z(n){return n.slice(0,n.length-1)}function k(n,...t){return d(n,(n=>{if(R(t,(t=>t.includes(n))))return n}))}const q=Object.keys;function V(n){if(n)return q(n)}const G=/\.|\[/,J=/]/g,W="";function z(n){return n.replace(J,W).split(G)}function H(n,t){if(!t)return!1;let r=t;return R(I(n)?n:z(n),(n=>(r=r[n],h(r)))),r}const K=Object.hasOwn;function Q(n,...t){if(n)return R(t,(t=>{const r=z(t);if(1===r.length)return K(n,t);{const t=r.pop(),e=H(r,n);return!!e&&K(e,t)}}))}function X(n,...t){if(n)return Boolean(t.find((t=>{const r=z(t);if(1===r.length)return K(n,t);{const t=r.pop(),e=H(r,n);return!!e&&K(e,t)}})))}const Y=n=>!!h(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function nn(n,t){return n?.constructor===t||!1}function tn(n){return t=>nn(t,n)}function rn(n){return n?.constructor?.name}function en(n){return t=>rn(t)===n||!1}function on(n){return function(t,...r){return r?n(t)&&R(r,n):n(t)}}const un=en("Buffer"),cn=on(un),sn=(n,t)=>{if(n===t)return!0;if(cn(n))return n.equals(t);if(n.toString()===t.toString())if(Y(n)){const r=V(n);if(Q(t,r))return R(r,(r=>sn(n[r],t[r])))}else if(I(n)&&n.length===t.length)return R(n,((n,r)=>sn(n,t[r])));return!1};function fn(n,t){return n.length===t.length&&R(n,((n,r)=>sn(t[r],n)))}const an=Math.max;function ln(n){return an(...n)}function hn(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function gn(n,t,r=[],e,o){return h(e)?p(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):p(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function pn(n,t){const r=[];return await m(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function dn(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function mn(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function vn(n,t){return t-n}function An(n){return n.sort(vn)}function En(n,t){let r=n.length;for(let e=0;er)return Tn(n);if(1===t)return[n[Bn(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Un(n,t=1){return n.slice(0,t)}function Nn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Dn(n,t,r){return r.indexOf(n)===t}function Ln(n,t,r){return n!==r[t-1]}function Zn(n,t){return t?n.filter(Ln):n.filter(Dn)}function kn(...n){return Zn($(n))}function qn(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function Hn(...n){const t=C(Map),r=[];return 2===n.length?S(n[0],n[1]):(p(n,((n,r)=>{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Kn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Qn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Xn(n){return cn(n)&&n||h(n)&&Buffer.from(n)||Buffer.alloc(0)}function Yn(n){return n.fill(0),n}function nt(n,t){const r={};let e;return p(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function tt(n,t){let r=0;return p(n,(n=>{n[t]&&r++})),r}function rt(n,t){let r=0;return p(n,(n=>{n[t]||r++})),r}function et(n,t,r,e,o){if(n[o]===e)return!0}function ot(n,t,r="id"){const e=n.findIndex(((n,e)=>et(n,0,0,t,r)));return-1!==e&&e}function ut(n,t,r="id"){const e=n.find(((n,e)=>et(n,0,0,t,r)));return-1!==e&&e}function ct(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function it(n,t="id",r){return n.sort(((n,e)=>ct(n,e,t,r)))}function st(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function ft(n,t="id",r){return n.sort(((n,e)=>st(n,e,t,r)))}function at(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function lt(n,t="id",r){return n.sort(((n,e)=>at(n,e,t,r)))}function ht(n,t="id"){return lt(n,t)[0]}function gt(n,t){return it(n,t,!1)[0]}function pt(n,t){const r={};return p(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function dt(n,t="id"){const r={};return p(n,(n=>{r[n[t]]=n})),r}function mt(n,t,r){return gn(n,((n,e)=>n[t](r,e)))}function wt(n,t,r){return pn(n,(async(n,e)=>n[t](r,e)))}const yt=en("Number"),bt=on(yt);function vt(n){return!bt(n)}const At=tn(String);function Et(n){return!At(n)}function jt(n,t){if(n)return At(t)?n[t]:gn(t,(t=>n[t]))}function It(n,t){return gn(n,(n=>jt(n,t)))}function xt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function Ot(n,t="id",r){return n.sort(((n,e)=>xt(n,e,t,r)))}function $t(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function Bt(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function Ct(n){return t=>!!h(t)&&n.test(t)}const St=Ct(/\.css$/),Mt=Ct(/\.html$/),Tt=Ct(/\.js$/),_t=Ct(/\.json$/);function Ft(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function Rt(n,t){return(...r)=>n(...r.splice(0,t))}function Pt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Ut=Object.assign;function Nt(n,...t){if(h(n))return Ut(n,...t)}const Dt=async(n,t,r,e)=>{if(!n)return;const o=V(n);return h(r)?await m(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await m(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Lt(n,t,r,e){if(!n)return;const o=V(n);return h(r)?p(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):p(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function Zt(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!h(n)&&n instanceof Function,Ht=en("AsyncFunction"),Kt=on(Ht);function Qt(n,t,r,e,o,u){return(c,i,s,f,a)=>{let l;const g=Kt(i);if(h(c)&&i)return l=I(c)?g?t:n:Y(c)||zt(c)?g?e:r:o?g?u:o:Jt(c)?u:g?e:r,l(c,i,s,f,a)}}const Xt=Qt(p,m,Lt,Dt,Vt,Wt);class Yt{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Xt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function nr(n){return C(Yt,[n])}function tr(n,t=n.length){const r=[],e=(...o)=>{if(r.push(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}function rr(n,t=n.length){const r=[],e=(...o)=>{if(r.unshift(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}const er=!0,or=()=>er,ur=!1,cr=()=>ur,ir=()=>{};function sr(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,er),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const lr=C(ar);function hr(n,t){return lr.set(n,t)}function gr(){sr(setTimeout(ir,0),(n=>{lr.remove(n)}))}const pr=Reflect.apply;function dr(n,t,r){if(zt(n))return pr(n,t,r)}function mr(n,t){function r(...n){r.id!==ur&&lr.remove(r.id),r.id=hr((()=>{r.callable(...n),r.id=ur}),t)}return r.id=ur,r.callable=n.bind(r),r.clear=()=>{r.id!==ur&&(lr.remove(r.id),r.id=ur)},r}function wr(n,...t){if(zt(n))return n(...t)}async function yr(n,t){const r=n.length;for(let e=0;eXt(n,(n=>{n(t)}));function vr(n){return(...t)=>!n(...t)}function Ar(n=0){return(...t)=>t[n]}const Er=n=>{let t;return(...r)=>(h(t)||(t=n(...r)),t)};async function jr(n,t,r={}){if(n)return await Dt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function Ir(n,t,r={},e,o){if(n)return h(e)?Lt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Lt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function xr(n){return n?.constructor}function Or(n,t=[]){const r=xr(n);return r===Function&&"function"===r.name?function(){}:C(r,t)}function $r(n,t=g,r){const e=r||Or(n);if(I(n)||qt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=zt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Br(n,t=g,r,e){if(Jt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||Or(n);if(I(n)||qt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=zt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const Cr=Qt(gn,pn,Ir,jr,$r,Br);function Sr(n){return(...t)=>Cr(n,(n=>n(...t)))}async function Mr(n,t){if(!n)return;return P(V(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function Tr(n,t){if(!n)return;return R(V(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function _r(n,t=g){if(I(n)||qt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Fr(n,t=g,r){if(Jt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(I(n)||qt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Rr=Qt(R,P,Tr,Mr,_r,Fr);function Pr(n){return t=>Rr(n,(n=>n(t)))}function Ur(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Nr(n,t){function r(...n){r.id?r.shouldThrottle=er:(r.callable(...n),r.id=hr((()=>{r.shouldThrottle&&r.callable(...n),r.id=ur}),t))}return r.id=ur,r.callable=n.bind(r),r.clear=()=>{lr.remove(r.id),r.id=ur},r}function Dr(n,t){return(...r)=>t(n,...r)}const Lr=Function.prototype;function Zr(n){return Lr.call.bind(n)}const kr=Object.getOwnPropertyNames,qr=Object.getOwnPropertyDescriptor,Vr=Object.defineProperty,Gr=Zr(Object.hasOwnProperty),Jr=Object.is;function Wr(n,t){return n+t}function zr(n){return n-1}function Hr(n,t){return n/t}function Kr(n){return n+1}function Qr(n,t){return n*t}function Xr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:Yr}=Math;function ne(n,t=0){return Yr()*(n-t)+t}function te(n,t){return n%t}function re(n){return n.reduce(((n,t)=>n-t),0)}function ee(n){return n.reduce(((n,t)=>n+t),0)}function oe(n,t,r){return n>t&&nr}const{sign:ce}=Math;function ie(n){return 1===ce(n)}function se(n){return 0===n}const fe=Object.entries;function ae(n){if(h(n))return fe(n)}function le(n){const t=[];return Lt(n,((n,r)=>{h(n)&&t.push(r)})),t}async function he(n,t=g,r={}){return await Dt(n,(async(n,e,o,u,c)=>{const i=await t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function ge(n,t=g,r={}){return Lt(n,((n,e,o,u,c)=>{const i=t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function pe(n,t,r={}){return Lt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function de(n,t,r={}){return await Dt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function me(n,t={}){if(n)return Lt(n,((n,r)=>{t[n]=r})),t}const we=(n,t)=>{if(n===t)return!0;const r=V(n),e=V(t);return r.length===e.length&&R(r,(r=>n[r]===t[r]))},ye=en("RegExp"),be=on(ye),ve=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Ae(n){return n.replace(ve,"\\$&")}function Ee(n,t){return t?Ee(gn(n,Ae)):RegExp(n.join("|"))}function je(n,t){if(n){if(I(t)){const r=Ee(t);return pe(n,((n,t)=>!r.test(t)))}if(be(t))return pe(n,((n,r)=>!t.test(r)));if(At(t))return pe(n,((n,r)=>r!==t));if(bt(t)){const r=t.toString();return pe(n,((n,t)=>t!==r))}return zt(t)?pe(n,((n,r)=>!t(n,r))):void 0}}const Ie=(n,t,r={})=>{if(n)return p(t,(t=>{r[t]=n[t]})),r};function xe(n){if(n)return V(n).length}const Oe=(n,t)=>{const r={};return p(n,((n,e)=>{r[n]=t[e]})),r},$e=n=>{const t=[],r=[];return Lt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Be=/[ _-]+/g;function Ce(n){let t="";return n.replace(Be," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const Se=/[ _-]+/g,Me=/[ ]+/g;function Te(n){return n.replace(/([A-Z]+)/g," $1").replace(Se," ").trim().toLowerCase().replace(Me,"-")}const _e=/[ _-]+/g,Fe=/[ ]+/g;function Re(n){return n.replace(/([A-Z]+)/g," $1").replace(_e," ").trim().toLowerCase().replace(Fe,"_")}const Pe=/[ _-]+/g;function Ue(n){return n.replace(/([A-Z]+)/g," $1").replace(Pe," ").trim().toUpperCase()}const Ne=/[ _-]+/g;function De(n){return n.replace(/([A-Z]+)/g," $1").replace(Ne," ").trim().toLowerCase()}function Le(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function Ze(n,t=1){return n[n.length-t]}function ke(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function qe(n,t=1){return n.slice(0,-1*t)}function Ve(n,t=1){return n.substring(t)}function Ge(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function Je(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function We(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const ze=/%(?![\da-f]{2})/gi,He=/&/g,Ke=//g,Xe=/"/g;function Ye(n){return decodeURIComponent(n.replace(ze,(()=>"%25")))}function no(n){return n.replace(He,"&").replace(Ke,"<").replace(Qe,">").replace(Xe,""")}function to(n){return no(Ye(n))}const ro=/\S+/g,eo=/\w+/g;function oo(n){return n.match(ro)||[]}function uo(n){return n.match(eo)||[]}const co=/\w+/g;function io(n){return n[0].toUpperCase()}function so(n){return io(n)+Ve(n)}function fo(n){return io(n)+Ve(n).toLowerCase()}function ao(n){return n.replace(co,(n=>so(n)))}function lo(n){return n.replace(co,(n=>fo(n)))}function ho(n){return xr(n)?.name}function go(n){return!!h(n)&&"[object Arguments]"===n.toString()}function po(n){return!h(n)}const mo=en("Map"),wo=on(mo),yo=/Array/,bo="Array";function vo(n){if(n){const t=ho(n);if(yo.test(t)&&t!==bo)return!0}return!1}function Ao(n,t){if(po(n)||zt(n))return!1;if(I(n)||vo(n))return!0;const r=n.length;if(!po(r)||!bt(r)||r<0)return!1;if(t){const t=V(n);return!!t&&Rr(t,((n,t)=>t>=0&&bt(t)))}return!0}const Eo=en("BigInt"),jo=on(Eo),Io=en("Boolean"),xo=on(Io),Oo=en("ArrayBuffer"),$o=on(Oo);function Bo(n,t){return!(!n||!t)&&n instanceof t}const Co=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function So(n){if(h(n)){const t=n?.constructor?.name;return Co.test(t)}return!1}const Mo=en("Date"),To=on(Mo);function _o(n){return At(n)||I(n)?!a(n):Y(n)?!xe(n):!h(n)}function Fo(n){return!1===n}const Ro=en("Float32Array"),Po=on(Ro),Uo=en("Float64Array"),No=on(Uo),{isInteger:Do}=Number,Lo=Do,Zo=en("Int16Array"),ko=on(Zo),qo=en("Int32Array"),Vo=on(qo),Go=en("Int8Array"),Jo=on(Go);function Wo(n){return h(n)&&"function"==typeof n[Symbol.iterator]}function zo(n){return!!n&&n instanceof Promise}function Ho(n){return!!n&&(zo(n)||Kt(n)||Jt(n))}function Ko(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Qo(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Xo(n,t){return!po(n)&&!po(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:Yo}=Number,nu=Yo;function tu(n,t){const r=xr(n),e=xr(t);return r===e&&r.name===e.name}function ru(n){return!0===n}const eu=en("Uint16Array"),ou=on(eu),uu=en("Uint32Array"),cu=on(uu),iu=en("Uint8Array"),su=on(iu),fu=en("Uint8ClampedArray"),au=on(fu),lu=en("WeakMap"),hu=on(lu),gu=void 0!==globalThis.Deno,pu=void 0!==globalThis.process&&process.versions&&process.versions.node;function du(n,t=!0){return Boolean(n)&&t}function mu(n,t=!0){return!1===Boolean(n)&&t}function wu(n,t,r,e){if(h(n)){if(zt(t))return r?dr(t,r,e):t(...e);if(Y(t))return t[r]=n,t}}function yu(n,t){return Fo(sn(n,t))}const bu=JSON;function vu(n,t){if(n)return bu.parse(n,t)}const Au=bu.stringify;function Eu(n,t,r){const e=globalThis.options||r;let o;return zt(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Au(n)}\n\t\tExpected: ${Au(t)}`,e)}async function ju(n,t,r){const e=await n;return!(zt(t)&&!1===await t(e,r))&&!yu(e,t)||Eu(e,t,r)}function Iu(n,t,r){if(Ho(n)||Ho(t))return ju(n,t,r);return!(zt(t)&&!1===t(n,r))&&!yu(n,t)||Eu(n,t,r)}function xu(n,t,r){const e=Cr(n,(n=>zt(n)?n.bind(t):n));return r?Nt(r,e):e}function Ou(n){if(n){if(cn(n))return Yn(n);if(I(n))return i(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const $u=globalThis.structuredClone;function Bu(n){return $u(n)}function Cu(n){if(Y(n)){const t=V(n),r=t.length,e={};for(let o=0;odu(n)))}async function Su(n,t=g,r,e){if(Jt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);h(e)&&r.push(e)}return r}const o=r||Or(n);if(I(n)||qt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);h(u)&&e(u)}return o}const u=zt(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);h(c)&&(u?o.set(r,c):o[r]=c)}return o}function Mu(n,t=g,r){const e=r||Or(n);if(I(n)||qt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);h(u)&&o(u)}return e}const o=zt(e.set);for(const[r,u]of n){const c=t(u,r,e,n);h(c)&&(o?e.set(r,c):e[r]=c)}return e}const Tu=Qt(d,w,ge,he,Mu,Su);function _u(...n){return Kt(n[0])?async function(...t){return Rr(n,(async n=>Rr(t,(async t=>n(t)))))}:function(...t){return Rr(n,(n=>Rr(t,(t=>n(t)))))}}function Fu(n,t=g,r){const e=r||Or(n);if(I(n)||qt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=zt(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Ru(n,t=g,r,e){if(Jt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||Or(n);if(I(n)||qt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=zt(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Pu=Qt(U,N,pe,de,Fu,Ru);function Uu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Nu=Uu(p),Du=Uu(_);function Lu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const Zu=Lu(m),ku=Lu(F);function qu(n,t){const r=Or(n),e=r.push||r.add;if(e&&zt(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else zt(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function Vu(n,t){const r={};return p(n,((n,e)=>{r[t[e]]=n})),r}function Gu(n,t,r){if(po(n)||po(t))return!1;if(At(n))return At(t)?n.includes(t,r):be(t)?t.test(n):zt(t)?Boolean(t(n)):Rr(t,(t=>Boolean(Gu(n,t))));if(I(n)){if(At(t))return n.includes(t,r);if(be(t))return Rr(n,(n=>n.test(t)));if(I(t))return Rr(t,(t=>Boolean(Gu(n,t))))}return!1}const Ju=Ct(/\./),Wu=(n,t,r)=>(t&&!h(n[t])&&(n[t]=r),n);class zu{list=C(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,er),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const Hu=C(zu);function Ku(n,t){return Hu.set(n,t)}function Qu(){sr(setTimeout(ir,0),(n=>{Hu.remove(n)}))}function Xu(n,...t){return Xt(t,(t=>{Xt(t,((t,r)=>{if(n[r]&&(Y(t)||I(t)||t.forEach))return Xu(n[r],t);n[r]=t}))})),n}class Yu{static models={};constructor(n,t){h(t)?(Nt(this,t),this.modelName=n,Yu.models.set(n,t)):Nt(this,n)}}function nc(n,t){return h(t)?C(Yu,[n,t]):H(n,Yu.models)}function tc(n,t){return[n,t]}function rc(n,t,r){const e=n.length,o=[];for(let u=0;uR(r,(r=>sn(n[r],t[r])));function cc(n,t,r){return t&&Y(n)||bt(t)&&I(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function ic(n,t,r){return bt(r)&&I(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class sc{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Lt(n,(t=>{n[t]=new sc(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new sc(r),!0)})}}const fc=()=>[],ac=()=>({}),lc=()=>"";async function hc(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const mc=C(dc);class wc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function yc(n){return new wc(n)}async function bc(u,c){const i=await n(u);return await m(i,(async n=>{const i=o.join(u,n);if((await t(i)).isDirectory()){const t=o.join(c,n.replace(u,""));await r(t,{recursive:!0}),await bc(i,t)}else await async function(n,t,r){const u=o.join(n,r),c=o.join(t,r);await e(u,c)}(u,c,n)})),!0}function vc(n){return globalThis.__filename?__filename:u(n.url)}function Ac(n){return globalThis.__dirname?__dirname:o.dirname(u(n.url))}export{Yt as Chain,zu as Intervals,Yu as Model,sc as Store,ar as Timers,dc as UniqID,wc as VirtualStorage,Wr as add,Ft as after,dr as apply,Ee as arrayToRegex,Vu as arraysToObject,Rt as ary,Iu as assert,ju as assertAsync,Nt as assign,Pt as before,xu as bindAll,Zr as cacheNativeMethod,Xr as calcProgress,Ce as camelCase,nr as chain,c as chunk,ke as chunkString,Ou as clear,i as clearArray,Yn as clearBuffer,Qu as clearIntervals,gr as clearTimers,Bu as clone,s as cloneArray,Or as cloneType,Cu as compact,le as compactKeys,Tu as compactMap,d as compactMapArray,w as compactMapAsyncArray,he as compactMapAsyncObject,ge as compactMapObject,rc as concurrent,ec as concurrentStatus,C as construct,rn as constructorName,bc as copyFolder,nt as countBy,tt as countKey,rt as countWithoutKey,vc as currentFile,Ac as currentPath,tr as curry,rr as curryRight,mr as debounce,zr as deduct,Vr as defProp,S as difference,Hr as divide,M as drop,T as dropRight,Xt as each,p as eachArray,m as eachAsyncArray,Dt as eachAsyncObject,Lt as eachObject,_ as eachRight,F as eachRightAsync,O as ensureArray,Xn as ensureBuffer,Ae as escapeRegex,ve as escapeRegexRegex,Rr as every,_u as everyArg,R as everyArray,P as everyAsyncArray,Mr as everyAsyncObject,Tr as everyObject,ur as falsy,Pu as filter,U as filterArray,N as filterAsyncArray,de as filterAsyncObject,pe as filterObject,ot as findIndex,et as findIndexCache,ut as findItem,D as first,L as flatten,$ as flattenDeep,Nu as flow,Zu as flowAsync,ku as flowAsyncRight,Du as flowRight,j as forEach,Zt as forEachAsync,qu as forMap,Vt as forOf,Wt as forOfAsync,Mu as forOfCompactMap,Su as forOfCompactMapAsync,_r as forOfEvery,Fr as forOfEveryAsync,Fu as forOfFilter,Ru as forOfFilterAsync,$r as forOfMap,Br as forOfMapAsync,Qt as generateLoop,H as get,ae as getEntries,$t as getFileExtension,Bt as getFilename,ht as getHighest,gt as getLowest,Pn as getNumberInsertIndex,qr as getPropDesc,kr as getPropNames,xr as getType,ho as getTypeName,pt as groupBy,Gu as has,X as hasAnyKeys,Ju as hasDot,Q as hasKeys,a as hasLength,Gr as hasProp,h as hasValue,no as htmlEntities,wr as ifInvoke,Wu as ifNotAssign,wu as ifValue,yr as inAsync,br as inSync,Kr as increment,dt as indexBy,Z as initial,qe as initialString,Le as insertInRange,k as intersection,Ku as interval,Hu as intervals,me as invert,mt as invoke,wt as invokeAsync,go as isArguments,I as isArray,$o as isArrayBuffer,Oo as isArrayBufferCall,Ao as isArrayLike,Kt as isAsync,Ht as isAsyncCall,jo as isBigInt,Eo as isBigIntCall,xo as isBoolean,Io as isBooleanCall,cn as isBuffer,un as isBufferCall,Bo as isChild,So as isCloneable,nn as isConstructor,tn as isConstructorFactory,en as isConstructorNameFactory,To as isDate,Mo as isDateCall,gu as isDeno,_o as isEmpty,sn as isEqual,Po as isF32,Ro as isF32Call,No as isF64,Uo as isF64Call,Fo as isFalse,mu as isFalsy,St as isFileCSS,Mt as isFileHTML,Tt as isFileJS,_t as isFileJSON,Lo as isFloat,zt as isFunction,Jt as isGenerator,Gt as isGeneratorCall,ko as isI16,Zo as isI16Call,Vo as isI32,qo as isI32Call,Jo as isI8,Go as isI8Call,Wo as isIterable,Ho as isKindAsync,wo as isMap,mo as isMapCall,fn as isMatchArray,we as isMatchObject,b as isNegative,pu as isNodejs,x as isNotArray,vt as isNotNumber,Et as isNotString,l as isNull,bt as isNumber,yt as isNumberCall,Mn as isNumberEqual,oe as isNumberInRange,ue as isNumberNotInRange,Ko as isParent,Y as isPlainObject,ie as isPositive,Qo as isPrimitive,zo as isPromise,be as isRegex,ye as isRegexCall,Xo as isRelated,nu as isSafeInt,Jr as isSame,tu as isSameType,qt as isSet,kt as isSetCall,At as isString,ru as isTrue,du as isTruthy,on as isTypeFactory,vo as isTypedArray,ou as isU16,eu as isU16Call,cu as isU32,uu as isU32Call,su as isU8,au as isU8C,fu as isU8CCall,iu as isU8Call,f as isUndefined,hu as isWeakMap,lu as isWeakMapCall,se as isZero,vu as jsonParse,Te as kebabCase,V as keys,ln as largest,hn as last,De as lowerCase,Cr as map,gn as mapArray,pn as mapAsyncArray,jr as mapAsyncObject,Ir as mapObject,dn as mapRightArray,mn as mapWhile,Xu as merge,nc as model,Qr as multiply,vr as negate,po as noValue,ir as noop,yu as notEqual,Ar as nthArg,Ut as objectAssign,fe as objectEntries,xe as objectSize,je as omit,Er as once,Dn as onlyUnique,Sr as over,Pr as overEvery,tc as pair,bn as partition,Ie as pick,It as pluck,jt as pluckObject,oc as promise,uc as propertyMatch,ne as randomFloat,Bn as randomInt,E as range,A as rangeDown,v as rangeUp,Ye as rawURLDecode,Ur as reArg,Ct as regexTestFactory,te as remainder,En as remove,jn as removeBy,Ge as replaceList,In as rest,Ve as restString,g as returnValue,xn as right,Ze as rightString,_n as sample,to as sanitize,cc as setKey,ic as setValue,Tn as shuffle,Rn as smallest,Re as snakeCase,ft as sortCollectionAlphabetically,Ot as sortCollectionAlphabeticallyReverse,lt as sortCollectionAscending,at as sortCollectionAscendingFilter,it as sortCollectionDescending,ct as sortCollectionDescendingFilter,yn as sortNumberAscending,An as sortNumberDescening,st as sortObjectsAlphabetically,xt as sortObjectsAlphabeticallyReverse,Ln as sortUnique,Au as stringify,fc as stubArray,cr as stubFalse,ac as stubObject,lc as stubString,or as stubTrue,wn as subtract,re as subtractAll,vn as subtractReverse,ee as sumAll,Un as take,Nn as takeRight,Nr as throttle,hr as timer,lr as timers,sr as times,hc as timesAsync,fr as timesMap,gc as timesMapAsync,Sn as toArray,z as toPath,pc as toggle,oo as tokenize,Je as truncate,We as truncateRight,er as truth,Qn as unZip,$e as unZipObject,kn as union,mc as uniqID,Zn as unique,qn as untilFalseArray,Vn as untilTrueArray,Ue as upperCase,so as upperFirst,ao as upperFirstAll,io as upperFirstLetter,fo as upperFirstOnly,lo as upperFirstOnlyAll,yc as virtualStorage,Gn as whileCompactMap,Jn as whileEachArray,Wn as whileMapArray,zn as without,uo as words,Dr as wrap,Hn as xor,Kn as zip,Oe as zipObject}; +import{readdir as n,stat as t,mkdir as r,copyFile as e}from"fs/promises";import o from"path";import{fileURLToPath as u}from"url";function c(n,t=1){const r=[];let e=0;return n.forEach(((n,o)=>{o%t||(r.push([]),o&&e++),r[e].push(n)})),r}function i(n){return n.length=0,n}function s(n){return n.slice()}function f(n){return void 0===n}function a(n){return Boolean(n.length)}function l(n){return null===n}function h(n){return!f(n)&&!l(n)}function g(n){return n}function p(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const s=t.call(e,n,u,r,c,i,o);h(s)&&r.push(s)})):p(n,((n,u,c,i)=>{const s=t(n,u,r,c,i,e,o);h(s)&&r.push(s)})),r}async function m(n,t,r,e){if(!n)return;const o=n.length;if(h(r))for(let u=0;u{const u=await t(n,e,r,o);h(u)&&r.push(u)})),r}const{sign:y}=Math;function b(n){return-1===y(n)}function v(n,t,r,e){let o=n;for(;ot;)e.push(o),o-=r;return e}function E(n,t,r=1,e=[]){return b(r)?e:n{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&0===n.parentIndex&&r.push(n.child)})),r}function M(n,t=1,r=n.length){return n.splice(t,r)}const T=(n,t=1,r=n.length)=>M(n,0,r-t);function _(n,t,r){if(!n)return;const e=n.length;for(let o=e-1;o>=0;o--)t(n[o],o,n,e,r);return n}async function F(n,t){if(!n)return;const r=n.length;for(let e=r-1;e>=0;e--)await t(n[e],e,n,r);return n}function R(n,t,r){if(!n)return;const e=n.length;for(let o=0;o{!0===t(n,o,r,u,c,e)&&r.push(n)})),r}async function N(n,t,r=[],e){return await m(n,(async(n,o,u,c)=>{!0===await t(n,o,r,u,c,e)&&r.push(n)})),r}function D(n,t){return t?n.slice(0,t):n[0]}function L(n,t=1){if(!n)return;let r=n;for(let n=0;nn.concat(O(t))),[]);return r}function Z(n){return n.slice(0,n.length-1)}function k(n,...t){return d(n,(n=>{if(R(t,(t=>t.includes(n))))return n}))}function q(n,t,r){if(!n)return;const e=n.length;if(h(r))for(let o=0;o(r=r[n],h(r)))),r}const Q=Object.hasOwn;function X(n,...t){if(n)return R(t,(t=>{const r=H(t);if(1===r.length)return Q(n,t);{const t=r.pop(),e=K(r,n);return!!e&&Q(e,t)}}))}function Y(n,...t){if(n)return Boolean(t.find((t=>{const r=H(t);if(1===r.length)return Q(n,t);{const t=r.pop(),e=K(r,n);return!!e&&Q(e,t)}})))}const nn=n=>!!h(n)&&"Object("===n.constructor.toString().trim().slice(9,16);function tn(n,t){return n?.constructor===t||!1}function rn(n){return t=>tn(t,n)}function en(n){return n?.constructor?.name}function on(n){return t=>en(t)===n||!1}function un(n){return function(t,...r){return r?n(t)&&R(r,n):n(t)}}const cn=on("Buffer"),sn=un(cn),fn=(n,t)=>{if(n===t)return!0;if(sn(n))return n.equals(t);if(n.toString()===t.toString())if(nn(n)){const r=G(n);if(X(t,r))return R(r,(r=>fn(n[r],t[r])))}else if(I(n)&&n.length===t.length)return R(n,((n,r)=>fn(n,t[r])));return!1};function an(n,t){return n.length===t.length&&R(n,((n,r)=>fn(t[r],n)))}const ln=Math.max;function hn(n){return ln(...n)}function gn(n,t){const r=n.length;return t?n.slice(r-t,r):n[r-1]}function pn(n,t,r=[],e,o){return h(e)?p(n,((n,u,c,i)=>{r[u]=t.call(e,n,u,r,c,i,o)})):p(n,((n,e,u,c)=>{r[e]=t(n,e,r,u,c,o)})),r}async function dn(n,t){const r=[];return await m(n,(async(n,e,o)=>{r[e]=await t(n,e,o)})),r}function mn(n,t,r=[],e){let o=0;const u=n.length;for(let c=u-1;c>=0;c--)r[o]=t(n[c],c,n,u,e),o++;return r}function wn(n,t,r=[],e){const o=n.length;for(let u=0;u{if(t(n,e))return n;r.push(n)})),r]}function An(n,t){return t-n}function En(n){return n.sort(An)}function jn(n,t){let r=n.length;for(let e=0;er)return _n(n);if(1===t)return[n[Cn(r-1,0)]];const e=[],o={};let u,c=0;for(;c(r=e,t>=n&&(r=e+1,!0)))),r}function Nn(n,t=1){return n.slice(0,t)}function Dn(n,t=1){const r=n.length;return n.slice(r-t,r)}function Ln(n,t,r){return r.indexOf(n)===t}function Zn(n,t,r){return n!==r[t-1]}function kn(n,t){return t?n.filter(Zn):n.filter(Ln)}function qn(...n){return kn($(n))}function Vn(n,t){const r=n.length;for(let e=0;e!r.has(n)))}function Kn(...n){const t=C(Map),r=[];return 2===n.length?S(n[0],n[1]):(p(n,((n,r)=>{p(n,((n,e)=>{let o=t.get(n);if(o){if(o.parentIndex===r)return;o.count++}else o={count:1,parentIndex:r,child:n},t.set(n,o)}))})),j(t,(n=>{1===n.count&&r.push(n.child)})),r)}function Qn(...n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Xn(n){return n[0].map(((t,r)=>n.map((n=>n[r]))))}function Yn(n){return sn(n)&&n||h(n)&&Buffer.from(n)||Buffer.alloc(0)}function nt(n){return n.fill(0),n}function tt(n,t){const r={};let e;return p(n,(n=>{e=t(n),r[e]||(r[e]=0),r[e]++})),r}function rt(n,t){let r=0;return p(n,(n=>{n[t]&&r++})),r}function et(n,t){let r=0;return p(n,(n=>{n[t]||r++})),r}function ot(n,t,r,e,o){if(n[o]===e)return!0}function ut(n,t,r="id"){const e=n.findIndex(((n,e)=>ot(n,0,0,t,r)));return-1!==e&&e}function ct(n,t,r="id"){const e=n.find(((n,e)=>ot(n,0,0,t,r)));return-1!==e&&e}function it(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?-1:0:1:-1}function st(n,t="id",r){return n.sort(((n,e)=>it(n,e,t,r)))}function ft(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):o.localeCompare(u)}function at(n,t="id",r){return n.sort(((n,e)=>ft(n,e,t,r)))}function lt(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u?o?ou?1:0:-1:1}function ht(n,t="id",r){return n.sort(((n,e)=>lt(n,e,t,r)))}function gt(n,t="id"){return ht(n,t)[0]}function pt(n,t){return st(n,t,!1)[0]}function dt(n,t){const r={};return p(n,(n=>{const e=t(n);r[e]||(r[e]=[]),r[e].push(n)})),r}function mt(n,t="id"){const r={};return p(n,(n=>{r[n[t]]=n})),r}function wt(n,t,r,e){return pn(n,e?(n,o)=>n[t].call(e,r):(n,e)=>n[t](r))}function yt(n,t,r,e){return dn(n,e?n=>n[t].call(e,r):async n=>n[t](r))}const bt=on("Number"),vt=un(bt);function At(n){return!vt(n)}const Et=rn(String);function jt(n){return!Et(n)}function It(n,t){if(n)return Et(t)?n[t]:pn(t,(t=>n[t]))}function xt(n,t){return pn(n,(n=>It(n,t)))}function Ot(n,t,r,e){const o=n[r],u=t[r];return o===u&&e?e(n,t,r):u.localeCompare(o)}function $t(n,t="id",r){return n.sort(((n,e)=>Ot(n,e,t,r)))}function Bt(n){if(n)return n.substring(n.lastIndexOf(".")+1)}function Ct(n){if(n)return n.substring(n.lastIndexOf("/")+1)}function St(n){return t=>!!h(t)&&n.test(t)}const Mt=St(/\.css$/),Tt=St(/\.html$/),_t=St(/\.js$/),Ft=St(/\.json$/);function Rt(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e<=0&&(r=t(...n),e=null),r)}function Pt(n,t){return(...r)=>n(...r.splice(0,t))}function Ut(n,t){let r,e=n;return(...n)=>(null!==e&&e--,e>=1?r=t(...n):e=null,r)}const Nt=Object.assign;function Dt(n,...t){if(h(n))return Nt(n,...t)}const Lt=async(n,t,r,e)=>{if(!n)return;const o=G(n);return h(r)?await m(o,((u,c,i,s)=>t.call(r,n[u],u,n,s,o,e))):await m(o,((r,u,c,i)=>t(n[r],r,n,i,o,e))),n};function Zt(n,t,r,e){if(!n)return;const o=G(n);return h(r)?p(o,((o,u,c,i)=>{t.call(r,n[o],o,n,i,c,e)})):p(o,((r,o,u,c)=>{t(n[r],r,n,c,u,e)})),n}async function kt(n,t){const r=[],e=[];let o=0;n.forEach(((n,t)=>{r[o]=n,e[o]=n,o++}));for(let n=0;n!!h(n)&&n instanceof Function,Kt=on("AsyncFunction"),Qt=un(Kt);function Xt(n,t,r,e,o,u){return(c,i,s,f,a)=>{let l;const g=Qt(i);if(h(c)&&i)return l=I(c)?g?t:n:nn(c)||Ht(c)?g?e:r:o?g?u:o:Wt(c)?u:g?e:r,l(c,i,s,f,a)}}const Yt=Xt(p,m,Zt,Lt,Gt,zt);class nr{constructor(n){this.addChainMethod(n)}addChainMethod(n){const t=this;Yt(n,((n,r)=>{t[r]=function(...r){return this.value=n.call(t,t.value,...r),t}}))}setValue(n){return this.value=n,this}done(){const n=this.value;return this.value=null,n}value=null}function tr(n){return C(nr,[n])}function rr(n,t=n.length){const r=[],e=(...o)=>{if(r.push(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}function er(n,t=n.length){const r=[],e=(...o)=>{if(r.unshift(...o),r.length===t){const t=n(...r);return i(r),t}return e};return e}const or=!0,ur=()=>or,cr=!1,ir=()=>cr,sr=()=>{};function fr(n,t){for(let r=0;r{n(),r.remove(e)}),t);return this.list.set(e,or),e}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const hr=C(lr);function gr(n,t){return hr.set(n,t)}function pr(){fr(setTimeout(sr,0),(n=>{hr.remove(n)}))}const dr=Reflect.apply;function mr(n,t,r){if(Ht(n))return dr(n,t,r)}function wr(n,t){function r(...n){r.id!==cr&&hr.remove(r.id),r.id=gr((()=>{r.callable(...n),r.id=cr}),t)}return r.id=cr,r.callable=n.bind(r),r.clear=()=>{r.id!==cr&&(hr.remove(r.id),r.id=cr)},r}function yr(n,...t){if(Ht(n))return n(...t)}async function br(n,t){const r=n.length;for(let e=0;eYt(n,(n=>{n(t)}));function Ar(n){return(...t)=>!n(...t)}function Er(n=0){return(...t)=>t[n]}const jr=n=>{let t;return(...r)=>(h(t)||(t=n(...r)),t)};async function Ir(n,t,r={}){if(n)return await Lt(n,(async(n,e,o,u,c)=>{r[e]=await t(n,e,r,o,u,c)})),r}function xr(n,t,r={},e,o){if(n)return h(e)?Zt(n,((n,u,c,i,s)=>{r[u]=t.call(e,n,u,r,c,i,s,o)})):Zt(n,((n,e,u,c,i)=>{r[e]=t(n,e,r,u,c,i,o)})),r}function Or(n){return n?.constructor}function $r(n,t=[]){const r=Or(n);return r===Function&&"function"===r.name?function(){}:C(r,t)}function Br(n,t=g,r){const e=r||$r(n);if(I(n)||Vt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){o(t(r,e,n))}return e}const o=Ht(e.set);for(const[r,u]of n){const c=t(u,r,e,n);o?e.set(r,c):e[r]=c}return e}async function Cr(n,t=g,r,e){if(Wt(n)){const r=[];for await(const o of n(...e))r.push(await t(o,r,n));return r}const o=r||$r(n);if(I(n)||Vt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){e(await t(r,o,n))}return o}const u=Ht(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);u?o.set(r,c):o[r]=c}return o}const Sr=Xt(pn,dn,xr,Ir,Br,Cr);function Mr(n){return(...t)=>Sr(n,(n=>n(...t)))}async function Tr(n,t){if(!n)return;return P(G(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function _r(n,t){if(!n)return;return R(G(n),((r,e,o,u)=>t(n[r],r,n,u,o)))}function Fr(n,t=g){if(I(n)||Vt(n))for(const r of n){if(!1===t(r,n))return!1}else for(const[r,e]of n){if(!1===t(e,r,n))return!1}return!0}async function Rr(n,t=g,r){if(Wt(n))for await(const e of n(...r)){if(!1===await t(e,n))return!1}else if(I(n)||Vt(n))for(const r of n){if(!1===await t(r,n))return!1}else for(const[r,e]of n){if(!1===await t(e,r,n))return!1}return!0}const Pr=Xt(R,P,_r,Tr,Fr,Rr);function Ur(n){return t=>Pr(n,(n=>n(t)))}function Nr(n,t){return(...r)=>n(...t.map((n=>r[n])))}function Dr(n,t){function r(...n){r.id?r.shouldThrottle=or:(r.callable(...n),r.id=gr((()=>{r.shouldThrottle&&r.callable(...n),r.id=cr}),t))}return r.id=cr,r.callable=n.bind(r),r.clear=()=>{hr.remove(r.id),r.id=cr},r}function Lr(n,t){return(...r)=>t(n,...r)}const Zr=Function.prototype;function kr(n){return Zr.call.bind(n)}const qr=Object.getOwnPropertyNames,Vr=Object.getOwnPropertyDescriptor,Gr=Object.defineProperty,Jr=kr(Object.hasOwnProperty),Wr=Object.is;function zr(n,t){return n+t}function Hr(n){return n-1}function Kr(n,t){return n/t}function Qr(n){return n+1}function Xr(n,t){return n*t}function Yr(n,t){return 0!==n&&(0===t?0:t/n*100)}const{random:ne}=Math;function te(n,t=0){return ne()*(n-t)+t}function re(n,t){return n%t}function ee(n){return n.reduce(((n,t)=>n-t),0)}function oe(n){return n.reduce(((n,t)=>n+t),0)}function ue(n,t,r){return n>t&&nr}const{sign:ie}=Math;function se(n){return 1===ie(n)}function fe(n){return 0===n}const ae=Object.entries;function le(n){if(h(n))return ae(n)}function he(n){const t=[];return Zt(n,((n,r)=>{h(n)&&t.push(r)})),t}async function ge(n,t=g,r={}){return await Lt(n,(async(n,e,o,u,c)=>{const i=await t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function pe(n,t=g,r={}){return Zt(n,((n,e,o,u,c)=>{const i=t(n,e,r,o,u,c);h(i)&&(r[e]=i)})),r}function de(n,t,r={}){return Zt(n,((n,e,o,u,c)=>{!0===t(n,e,r,o,u,c)&&(r[e]=n)})),r}async function me(n,t,r={}){return await Lt(n,(async(n,e,o,u,c)=>{!0===await t(n,e,r,o,u,c)&&(r[e]=n)})),r}function we(n,t={}){if(n)return Zt(n,((n,r)=>{t[n]=r})),t}const ye=(n,t)=>{if(n===t)return!0;const r=G(n),e=G(t);return r.length===e.length&&R(r,(r=>n[r]===t[r]))},be=on("RegExp"),ve=un(be),Ae=/[()[\]{}*+?^$|#.,/\\\s-]/g;function Ee(n){return n.replace(Ae,"\\$&")}function je(n,t){return t?je(pn(n,Ee)):RegExp(n.join("|"))}function Ie(n,t){if(n){if(I(t)){const r=je(t);return de(n,((n,t)=>!r.test(t)))}if(ve(t))return de(n,((n,r)=>!t.test(r)));if(Et(t))return de(n,((n,r)=>r!==t));if(vt(t)){const r=t.toString();return de(n,((n,t)=>t!==r))}return Ht(t)?de(n,((n,r)=>!t(n,r))):void 0}}const xe=(n,t,r={})=>{if(n)return p(t,(t=>{r[t]=n[t]})),r};function Oe(n){if(n)return G(n).length}const $e=(n,t)=>{const r={};return p(n,((n,e)=>{r[n]=t[e]})),r},Be=n=>{const t=[],r=[];return Zt(n,((n,e)=>{t.push(e),r.push(n)})),[t,r]},Ce=/[ _-]+/g;function Se(n){let t="";return n.replace(Ce," ").trim().split(" ").forEach(((n,r)=>{t+=0===r?n.toLowerCase():n[0].toUpperCase()+n.slice(1).toLowerCase()})),t}const Me=/[ _-]+/g,Te=/[ ]+/g;function _e(n){return n.replace(/([A-Z]+)/g," $1").replace(Me," ").trim().toLowerCase().replace(Te,"-")}const Fe=/[ _-]+/g,Re=/[ ]+/g;function Pe(n){return n.replace(/([A-Z]+)/g," $1").replace(Fe," ").trim().toLowerCase().replace(Re,"_")}const Ue=/[ _-]+/g;function Ne(n){return n.replace(/([A-Z]+)/g," $1").replace(Ue," ").trim().toUpperCase()}const De=/[ _-]+/g;function Le(n){return n.replace(/([A-Z]+)/g," $1").replace(De," ").trim().toLowerCase()}function Ze(n,t,r){return n.slice(0,t)+r+n.slice(t,n.length)}function ke(n,t=1){return n[n.length-t]}function qe(n,t){return n.match(new RegExp(`(.|[\r\n]){1,${t}}`,"g"))}function Ve(n,t=1){return n.slice(0,-1*t)}function Ge(n,t=1){return n.substring(t)}function Je(n,t,r){return n.replace(new RegExp(`\\b${t.join("|")}\\b`,"gi"),r)}function We(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=r-t;for(;c=0&&(u=e[c]," "!==u);c--);return n.slice(0,c).trim()})(n,t,r):n}function ze(n,t){const r=n.length;return r>t?((n,t,r)=>{const e=n.split(""),o=e.length;let u,c=t;for(;c0&&(u=e[c]," "!==u);c++);return n.substring(c,r).trim()})(n,t,r):n}const He=/%(?![\da-f]{2})/gi,Ke=/&/g,Qe=//g,Ye=/"/g;function no(n){return decodeURIComponent(n.replace(He,(()=>"%25")))}function to(n){return n.replace(Ke,"&").replace(Qe,"<").replace(Xe,">").replace(Ye,""")}function ro(n){return to(no(n))}const eo=/\S+/g,oo=/\w+/g;function uo(n){return n.match(eo)||[]}function co(n){return n.match(oo)||[]}const io=/\w+/g;function so(n){return n[0].toUpperCase()}function fo(n){return so(n)+Ge(n)}function ao(n){return so(n)+Ge(n).toLowerCase()}function lo(n){return n.replace(io,(n=>fo(n)))}function ho(n){return n.replace(io,(n=>ao(n)))}function go(n){return Or(n)?.name}function po(n){return!!h(n)&&"[object Arguments]"===n.toString()}function mo(n){return!h(n)}const wo=on("Map"),yo=un(wo),bo=/Array/,vo="Array";function Ao(n){if(n){const t=go(n);if(bo.test(t)&&t!==vo)return!0}return!1}function Eo(n,t){if(mo(n)||Ht(n))return!1;if(I(n)||Ao(n))return!0;const r=n.length;if(!mo(r)||!vt(r)||r<0)return!1;if(t){const t=G(n);return!!t&&Pr(t,((n,t)=>t>=0&&vt(t)))}return!0}const jo=on("BigInt"),Io=un(jo),xo=on("Boolean"),Oo=un(xo),$o=on("ArrayBuffer"),Bo=un($o);function Co(n,t){return!(!n||!t)&&n instanceof t}const So=RegExp("Array|ArrayBuffer|Boolean|DataView|Date|Map|Object|Boolean|Number|BigInt|String|RegExp|Set|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError");function Mo(n){if(h(n)){const t=n?.constructor?.name;return So.test(t)}return!1}const To=on("Date"),_o=un(To);function Fo(n){return Et(n)||I(n)?!a(n):nn(n)?!Oe(n):!h(n)}function Ro(n){return!1===n}const Po=on("Float32Array"),Uo=un(Po),No=on("Float64Array"),Do=un(No),{isInteger:Lo}=Number,Zo=Lo,ko=on("Int16Array"),qo=un(ko),Vo=on("Int32Array"),Go=un(Vo),Jo=on("Int8Array"),Wo=un(Jo);function zo(n){return h(n)&&"function"==typeof n[Symbol.iterator]}function Ho(n){return!!n&&n instanceof Promise}function Ko(n){return!!n&&(Ho(n)||Qt(n)||Wt(n))}function Qo(n,t){return!!(n&&t&&t.call)&&n instanceof t}function Xo(n){const t=typeof value;return null==n||"object"!==t&&"function"!==t}function Yo(n,t){return!mo(n)&&!mo(t)&&(n.call?t instanceof n:t.call?n instanceof t:t.constructor===n.constructor)}const{isSafeInteger:nu}=Number,tu=nu;function ru(n,t){const r=Or(n),e=Or(t);return r===e&&r.name===e.name}function eu(n){return!0===n}const ou=on("Uint16Array"),uu=un(ou),cu=on("Uint32Array"),iu=un(cu),su=on("Uint8Array"),fu=un(su),au=on("Uint8ClampedArray"),lu=un(au),hu=on("WeakMap"),gu=un(hu),pu=void 0!==globalThis.Deno,du=void 0!==globalThis.process&&process.versions&&process.versions.node;function mu(n,t=!0){return Boolean(n)&&t}function wu(n,t=!0){return!1===Boolean(n)&&t}function yu(n,t,r,e){if(h(n)){if(Ht(t))return r?mr(t,r,e):t(...e);if(nn(t))return t[r]=n,t}}function bu(n,t){return Ro(fn(n,t))}const vu=JSON;function Au(n,t){if(n)return vu.parse(n,t)}const Eu=vu.stringify;function ju(n,t,r){const e=globalThis.options||r;let o;return Ht(e)?o=`${e.name} : ${e.constructor.name}`:e&&(o=`${e.title||e.method.name} -> ${e.file}`),new Error(`Test Failed: ${o}\n\t\tResult: ${Eu(n)}\n\t\tExpected: ${Eu(t)}`,e)}async function Iu(n,t,r){const e=await n;return!(Ht(t)&&!1===await t(e,r))&&!bu(e,t)||ju(e,t,r)}function xu(n,t,r){if(Ko(n)||Ko(t))return Iu(n,t,r);return!(Ht(t)&&!1===t(n,r))&&!bu(n,t)||ju(n,t,r)}function Ou(n,t,r){const e=Sr(n,(n=>Ht(n)?n.bind(t):n));return r?Dt(r,e):e}function $u(n){if(n){if(sn(n))return nt(n);if(I(n))return i(n);n.clear?n.clear():n.length&&(n.length=0)}return n}const Bu=globalThis.structuredClone;function Cu(n){return Bu(n)}function Su(n){if(nn(n)){const t=G(n),r=t.length,e={};for(let o=0;omu(n)))}async function Mu(n,t=g,r,e){if(Wt(n)){const r=[];for await(const o of n(...e)){const e=await t(o,r,n);h(e)&&r.push(e)}return r}const o=r||$r(n);if(I(n)||Vt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){const u=await t(r,o,n);h(u)&&e(u)}return o}const u=Ht(o.set);for await(const[r,e]of n){const c=await t(e,r,o,n);h(c)&&(u?o.set(r,c):o[r]=c)}return o}function Tu(n,t=g,r){const e=r||$r(n);if(I(n)||Vt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){const u=t(r,e,n);h(u)&&o(u)}return e}const o=Ht(e.set);for(const[r,u]of n){const c=t(u,r,e,n);h(c)&&(o?e.set(r,c):e[r]=c)}return e}const _u=Xt(d,w,pe,ge,Tu,Mu);function Fu(...n){return Qt(n[0])?async function(...t){return Pr(n,(async n=>Pr(t,(async t=>n(t)))))}:function(...t){return Pr(n,(n=>Pr(t,(t=>n(t)))))}}function Ru(n,t=g,r){const e=r||$r(n);if(I(n)||Vt(n)){const r=e.push||e.add,o=r&&r.bind(e);for(const r of n){!0===t(r,e,n)&&o(r)}}else{const r=Ht(e.set);for(const[o,u]of n){!0===t(u,o,e,n)&&(r?e.set(o,u):e[o]=u)}}return e}async function Pu(n,t=g,r,e){if(Wt(n)){const r=[];for await(const o of n(...e))!0===await t(o,r,n)&&r.push(o);return r}const o=r||$r(n);if(I(n)||Vt(n)){const r=o.push||o.add,e=r&&r.bind(o);for(const r of n){!0===await t(r,o,n)&&e(r)}}else{const r=Ht(o.set);for await(const[e,u]of n){!0===await t(u,e,o,n)&&(r?o.set(e,u):o[e]=u)}}return o}const Uu=Xt(U,N,de,me,Ru,Pu);function Nu(n){return(...t)=>r=>{let e=r;return n(t,(n=>{e=n(e)})),e}}const Du=Nu(p),Lu=Nu(_);function Zu(n){return(...t)=>async r=>{let e=r;return await n(t,(async n=>{e=await n(e)})),e}}const ku=Zu(m),qu=Zu(F);function Vu(n,t){const r=$r(n),e=r.push||r.add;if(e&&Ht(e)){const o=e.bind(r);n.forEach((n=>{const e=t(n,r);o(e)}))}else Ht(r.set)?n.forEach(((n,e)=>{const o=t(n,e,r);r.set(e,o)})):n.forEach(((n,e)=>{const o=t(n,e,r);r[e]=o}));return r}function Gu(n,t){const r={};return p(n,((n,e)=>{r[t[e]]=n})),r}function Ju(n,t,r){if(mo(n)||mo(t))return!1;if(Et(n))return Et(t)?n.includes(t,r):ve(t)?t.test(n):Ht(t)?Boolean(t(n)):Pr(t,(t=>Boolean(Ju(n,t))));if(I(n)){if(Et(t))return n.includes(t,r);if(ve(t))return Pr(n,(n=>n.test(t)));if(I(t))return Pr(t,(t=>Boolean(Ju(n,t))))}return!1}const Wu=St(/\./),zu=(n,t,r)=>(t&&!h(n[t])&&(n[t]=r),n);class Hu{list=C(Map);construct(){}remove(n){clearInterval(n),this.list.delete(n)}has(n){return this.list.has(n)}get(n){return this.list.get(n)}set(n,t){const r=setInterval((()=>{n()}),t);return this.list.set(r,or),r}clear(){const n=this;n.list.forEach((t=>{n.remove(t)}))}}const Ku=C(Hu);function Qu(n,t){return Ku.set(n,t)}function Xu(){fr(setTimeout(sr,0),(n=>{Ku.remove(n)}))}function Yu(n,...t){return Yt(t,(t=>{Yt(t,((t,r)=>{if(n[r]&&(nn(t)||I(t)||t.forEach))return Yu(n[r],t);n[r]=t}))})),n}class nc{static models={};constructor(n,t){h(t)?(Dt(this,t),this.modelName=n,nc.models.set(n,t)):Dt(this,n)}}function tc(n,t){return h(t)?C(nc,[n,t]):K(n,nc.models)}function rc(n,t){return[n,t]}function ec(n,t,r){const e=n.length,o=[];for(let u=0;uR(r,(r=>fn(n[r],t[r])));function ic(n,t,r){return t&&nn(n)||vt(t)&&I(n)?n[t]=r:n.set?n.set(t,r):n.push?n.push(r):n.add?n.add(r):n[t]=r,n}function sc(n,t,r){return vt(r)&&I(n)?n[r]=t:n.push?n.push(t):n.add?n.add(t):n[r]=t,n}class fc{source;constructor(n={}){if(this.source=n,null===n||"object"!=typeof n)return n;Zt(n,(t=>{n[t]=new fc(n[t])})),this.data=new Proxy(n,{get:(n,t)=>(console.log(n,t,n[t]),n[t]),set:(n,t,r)=>(console.log(n,t,n[t]),n[t]=new fc(r),!0)})}}const ac=()=>[],lc=()=>({}),hc=()=>"";async function gc(n,t){for(let r=0;r0,r=this.totalActive===this.totalFree;t&&r&&this.reset()}reset(){this.totalActive=0,this.freed.length=0,this.totalFree=0}}const wc=C(mc);class yc{constructor(n={}){this.items=n}getItem(n){return this.items[n]}setItem(n,t){this.items[n]=t}clear(){this.items={}}removeItem(n){this.items[n]=null}}function bc(n){return new yc(n)}async function vc(u,c){const i=await n(u);return await m(i,(async n=>{const i=o.join(u,n);if((await t(i)).isDirectory()){const t=o.join(c,n.replace(u,""));await r(t,{recursive:!0}),await vc(i,t)}else await async function(n,t,r){const u=o.join(n,r),c=o.join(t,r);await e(u,c)}(u,c,n)})),!0}function Ac(n){return globalThis.__filename?__filename:u(n.url)}function Ec(n){return globalThis.__dirname?__dirname:o.dirname(u(n.url))}export{nr as Chain,Hu as Intervals,nc as Model,fc as Store,lr as Timers,mc as UniqID,yc as VirtualStorage,zr as add,Rt as after,mr as apply,je as arrayToRegex,Gu as arraysToObject,Pt as ary,xu as assert,Iu as assertAsync,Dt as assign,Ut as before,Ou as bindAll,kr as cacheNativeMethod,Yr as calcProgress,Se as camelCase,tr as chain,c as chunk,qe as chunkString,$u as clear,i as clearArray,nt as clearBuffer,Xu as clearIntervals,pr as clearTimers,Cu as clone,s as cloneArray,$r as cloneType,Su as compact,he as compactKeys,_u as compactMap,d as compactMapArray,w as compactMapAsyncArray,ge as compactMapAsyncObject,pe as compactMapObject,ec as concurrent,oc as concurrentStatus,C as construct,en as constructorName,vc as copyFolder,tt as countBy,rt as countKey,et as countWithoutKey,Ac as currentFile,Ec as currentPath,rr as curry,er as curryRight,wr as debounce,Hr as deduct,Gr as defProp,S as difference,Kr as divide,M as drop,T as dropRight,Yt as each,p as eachArray,m as eachAsyncArray,Lt as eachAsyncObject,Zt as eachObject,_ as eachRight,F as eachRightAsync,O as ensureArray,Yn as ensureBuffer,Ee as escapeRegex,Ae as escapeRegexRegex,Pr as every,Fu as everyArg,R as everyArray,P as everyAsyncArray,Tr as everyAsyncObject,_r as everyObject,cr as falsy,Uu as filter,U as filterArray,N as filterAsyncArray,me as filterAsyncObject,de as filterObject,ut as findIndex,ot as findIndexCache,ct as findItem,D as first,L as flatten,$ as flattenDeep,Du as flow,ku as flowAsync,qu as flowAsyncRight,Lu as flowRight,j as forEach,kt as forEachAsync,Vu as forMap,Gt as forOf,zt as forOfAsync,Tu as forOfCompactMap,Mu as forOfCompactMapAsync,Fr as forOfEvery,Rr as forOfEveryAsync,Ru as forOfFilter,Pu as forOfFilterAsync,Br as forOfMap,Cr as forOfMapAsync,Xt as generateLoop,K as get,le as getEntries,Bt as getFileExtension,Ct as getFilename,gt as getHighest,pt as getLowest,Un as getNumberInsertIndex,Vr as getPropDesc,qr as getPropNames,Or as getType,go as getTypeName,dt as groupBy,Ju as has,Y as hasAnyKeys,Wu as hasDot,X as hasKeys,a as hasLength,Jr as hasProp,h as hasValue,to as htmlEntities,yr as ifInvoke,zu as ifNotAssign,yu as ifValue,br as inAsync,vr as inSync,Qr as increment,mt as indexBy,Z as initial,Ve as initialString,Ze as insertInRange,k as intersection,Qu as interval,Ku as intervals,we as invert,q as invokeArray,wt as invokeCollection,yt as invokeCollectionAsync,po as isArguments,I as isArray,Bo as isArrayBuffer,$o as isArrayBufferCall,Eo as isArrayLike,Qt as isAsync,Kt as isAsyncCall,Io as isBigInt,jo as isBigIntCall,Oo as isBoolean,xo as isBooleanCall,sn as isBuffer,cn as isBufferCall,Co as isChild,Mo as isCloneable,tn as isConstructor,rn as isConstructorFactory,on as isConstructorNameFactory,_o as isDate,To as isDateCall,pu as isDeno,Fo as isEmpty,fn as isEqual,Uo as isF32,Po as isF32Call,Do as isF64,No as isF64Call,Ro as isFalse,wu as isFalsy,Mt as isFileCSS,Tt as isFileHTML,_t as isFileJS,Ft as isFileJSON,Zo as isFloat,Ht as isFunction,Wt as isGenerator,Jt as isGeneratorCall,qo as isI16,ko as isI16Call,Go as isI32,Vo as isI32Call,Wo as isI8,Jo as isI8Call,zo as isIterable,Ko as isKindAsync,yo as isMap,wo as isMapCall,an as isMatchArray,ye as isMatchObject,b as isNegative,du as isNodejs,x as isNotArray,At as isNotNumber,jt as isNotString,l as isNull,vt as isNumber,bt as isNumberCall,Tn as isNumberEqual,ue as isNumberInRange,ce as isNumberNotInRange,Qo as isParent,nn as isPlainObject,se as isPositive,Xo as isPrimitive,Ho as isPromise,ve as isRegex,be as isRegexCall,Yo as isRelated,tu as isSafeInt,Wr as isSame,ru as isSameType,Vt as isSet,qt as isSetCall,Et as isString,eu as isTrue,mu as isTruthy,un as isTypeFactory,Ao as isTypedArray,uu as isU16,ou as isU16Call,iu as isU32,cu as isU32Call,fu as isU8,lu as isU8C,au as isU8CCall,su as isU8Call,f as isUndefined,gu as isWeakMap,hu as isWeakMapCall,fe as isZero,Au as jsonParse,_e as kebabCase,G as keys,hn as largest,gn as last,Le as lowerCase,Sr as map,pn as mapArray,dn as mapAsyncArray,Ir as mapAsyncObject,xr as mapObject,mn as mapRightArray,wn as mapWhile,Yu as merge,tc as model,Xr as multiply,Ar as negate,mo as noValue,sr as noop,bu as notEqual,Er as nthArg,Nt as objectAssign,ae as objectEntries,Oe as objectSize,Ie as omit,jr as once,Ln as onlyUnique,Mr as over,Ur as overEvery,rc as pair,vn as partition,xe as pick,xt as pluck,It as pluckObject,uc as promise,cc as propertyMatch,te as randomFloat,Cn as randomInt,E as range,A as rangeDown,v as rangeUp,no as rawURLDecode,Nr as reArg,St as regexTestFactory,re as remainder,jn as remove,In as removeBy,Je as replaceList,xn as rest,Ge as restString,g as returnValue,On as right,ke as rightString,Fn as sample,ro as sanitize,ic as setKey,sc as setValue,_n as shuffle,Pn as smallest,Pe as snakeCase,at as sortCollectionAlphabetically,$t as sortCollectionAlphabeticallyReverse,ht as sortCollectionAscending,lt as sortCollectionAscendingFilter,st as sortCollectionDescending,it as sortCollectionDescendingFilter,bn as sortNumberAscending,En as sortNumberDescening,ft as sortObjectsAlphabetically,Ot as sortObjectsAlphabeticallyReverse,Zn as sortUnique,Eu as stringify,ac as stubArray,ir as stubFalse,lc as stubObject,hc as stubString,ur as stubTrue,yn as subtract,ee as subtractAll,An as subtractReverse,oe as sumAll,Nn as take,Dn as takeRight,Dr as throttle,gr as timer,hr as timers,fr as times,gc as timesAsync,ar as timesMap,pc as timesMapAsync,Mn as toArray,H as toPath,dc as toggle,uo as tokenize,We as truncate,ze as truncateRight,or as truth,Xn as unZip,Be as unZipObject,qn as union,wc as uniqID,kn as unique,Vn as untilFalseArray,Gn as untilTrueArray,Ne as upperCase,fo as upperFirst,lo as upperFirstAll,so as upperFirstLetter,ao as upperFirstOnly,ho as upperFirstOnlyAll,bc as virtualStorage,Jn as whileCompactMap,Wn as whileEachArray,zn as whileMapArray,Hn as without,co as words,Lr as wrap,Kn as xor,Qn as zip,$e as zipObject}; //# sourceMappingURL=index.js.map diff --git a/package/package-lock.json b/package/package-lock.json index 65a37af8..d6ce4680 100644 --- a/package/package-lock.json +++ b/package/package-lock.json @@ -1,12 +1,12 @@ { "name": "Acid", - "version": "3.0.63", + "version": "3.0.65", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "Acid", - "version": "3.0.63", + "version": "3.0.65", "license": "ISC", "bin": { "Acid": "index.js" diff --git a/package/package.json b/package/package.json index ac6d5c29..9e7501d3 100644 --- a/package/package.json +++ b/package/package.json @@ -1,6 +1,6 @@ { "name": "@universalweb/acid", - "version": "3.0.63", + "version": "3.0.65", "description": "Acidjs is a robust, modern, modular, & async focused Javascript utility library.", "keywords": [ "Acid", @@ -39,7 +39,7 @@ "module": "./module/index.js", "browser": "./browser.js", "bin": { - "Acid": "./index.js" + "@universalweb/acid": "./index.js" }, "publishConfig": { "access": "public" @@ -49,4 +49,4 @@ }, "company": "Universal Web", "readme": "README.md" -} +} \ No newline at end of file diff --git a/source/arrays.js b/source/arrays.js index 96157274..474e633d 100644 --- a/source/arrays.js +++ b/source/arrays.js @@ -21,6 +21,7 @@ export * from './arrays/flatten.js'; export * from './arrays/flattenDeep.js'; export * from './arrays/initial.js'; export * from './arrays/intersect.js'; +export * from './arrays/invoke.js'; export * from './arrays/isMatch.js'; export * from './arrays/largest.js'; export * from './arrays/last.js'; diff --git a/source/arrays/invoke.js b/source/arrays/invoke.js new file mode 100644 index 00000000..5f2f7de0 --- /dev/null +++ b/source/arrays/invoke.js @@ -0,0 +1,38 @@ +import { hasValue } from '../types/hasValue.js'; +/** + * Invoke each function in the given array. + * + * @function invokeArray + * @category array + * @type {Function} + * @param {Array} source - Array that will be looped through. + * @param {Function} iteratee - Transformation function which is passed item, index, calling array, array length, and additionalArg. + * @param {*} thisCall - Iteratee called with thisCall as this. + * @param {*} additionalArg - An object to be given each time to the iteratee. + * @returns {Array} - The originally given array. + * + * @example + * import { invokeArray, assert } from '@universalweb/acid'; + * function test(arg){ + * return [this, arg]; + * } + * const results = invokeArray([test], 1, test); + * assert(results, [test, 1]); + */ +export function invokeArray(source, arg, thisCall) { + if (!source) { + return; + } + const arrayLength = source.length; + if (hasValue(thisCall)) { + for (let index = 0; index < arrayLength; index++) { + source[index].call(thisCall, arg); + } + } else { + for (let index = 0; index < arrayLength; index++) { + source[index](arg); + } + } + return source; +} + diff --git a/source/collection/invoke.js b/source/collection/invoke.js index 60100725..5ced243f 100644 --- a/source/collection/invoke.js +++ b/source/collection/invoke.js @@ -17,9 +17,14 @@ import { mapArray } from '../arrays/map.js'; * }], 'test', ['EXAMPLE']); * assert(results, [['EXAMPLE', 0]]); */ -export function invokeCollection(collection, property, value) { +export function invokeCollection(collection, property, value, thisBind) { + if (thisBind) { + return mapArray(collection, (item, index) => { + return item[property].call(thisBind, value); + }); + } return mapArray(collection, (item, index) => { - return item[property](value, index); + return item[property](value); }); } diff --git a/source/collection/invokeAsync.js b/source/collection/invokeAsync.js index ceb27407..df5829e4 100644 --- a/source/collection/invokeAsync.js +++ b/source/collection/invokeAsync.js @@ -2,7 +2,7 @@ import { mapAsyncArray } from '../arrays/mapAsync.js'; /** * Asynchronously awaits & invokes a function on the provided property name in each object in the collection. * - * @function invokeAsync + * @function invokeCollectionAsync * @category collection * @type {Function} * @async @@ -12,18 +12,20 @@ import { mapAsyncArray } from '../arrays/mapAsync.js'; * @returns {Array} - Returns the results of the invoked method. * * @test - * (async () => { - * const result = await invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * return assert(result, [['EXAMPLE', 0], ['EXAMPLE', 1]]); - * }); - * - * @example - * invokeAsync([{async lucy(item, index) { return [item, index];}}, {async lucy(item, index) { return [item, index];}}], 'lucy', 'EXAMPLE'); - * // => [['EXAMPLE', 0], ['EXAMPLE', 1]] + * import { invokeCollectionAsync, assert } from '@universalweb/acid'; + * const results = await invokeCollectionAsync([{ + * async test(item, index) { return [item, index];} + * }], 'test', ['EXAMPLE']); + * assert(results, [['EXAMPLE', 0]]); */ -export function invokeAsync(collection, property, value) { - return mapAsyncArray(collection, async (item, index) => { - return item[property](value, index); +export function invokeCollectionAsync(collection, property, value, thisBind) { + if (thisBind) { + return mapAsyncArray(collection, (item) => { + return item[property].call(thisBind, value); + }); + } + return mapAsyncArray(collection, async (item) => { + return item[property](value); }); }